# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # Manage negative balances Platforms may experience scenarios that cause accounts to go into a negative balance (such as chargebacks, refunds, or returns). For these scenarios, you need at minimum the following details: ## Account setup - Funding Account: Set up by JPM implementation team. Pre-funded by the platform to offset negative balances within the platform’s program. - Offset Accounts (Processing Offset / Client Offset): Set up by JPM implementation team. Aligned to platform’s processing account and all user LIMITED_DDA accounts to offset any negative balances within the platform’s account structure. ## Notifications - ACCOUNT_OVERDRAWN: Notification sent when an account exceeds its negative balance limit. - THRESHOLD_LIMIT: Notification sent when program-level or account-level thresholds are approached or breached. Learn more about [Notifications](/docs/embedded-finance-solutions/embedded-payments/capabilities/notification-subscriptions/index). ## Limits - Program-level limits: Define the maximum cumulative negative balance for the program across all platform processing and client accounts. - Platforms receive an initial webhook alert when approaching the maximum limit. - A secondary notification is sent when the maximum limit is breached. - Notifications are also sent when negative balances are restored to pre-determined levels. - Account-level limits: Define the maximum negative balance each individual processing or client account can reach before transactions are rejected. - Immediate response is provided when a debit transaction surpasses account-level limits. - Platforms are expected to remediate negative balances before further processing direct debits. - Ongoing operations: Automatic money movements occur at the end of each day, depending on daily changes in aggregate negative balances. - Platforms are notified of these movements via API integration. - On request, platforms can receive an outstanding balance report listing accounts in negative balance and duration, providing treasury teams with visibility. ## Automated Fund Movements At the end of New York branch close (5:00 p.m. ET), the aggregate negative balances in across LIMITED_DDA accounts and processing accounts are automatically managed by pulling funds from the pre-funded funding account into the offset accounts to cover any shortfalls. Money Movement Scenarios: - Funding account to Offset account: At branch close, funds move from the funding account to the offset account to cover any negative balances. - Offset account to Funding account: If you top up your processing or LIMITED_DDA accounts to resolve negative balances and no other changes occur before branch close, the system automatically moves funds from the offset account back into the funding account. ## Search Fund Movements by ID You can review these transactions by searching for the transaction ID by calling `GET /transactions`. Below are examples of movements between the funding and offset accounts. Funding to Offset Movement: ```json { "id": "OsULatnXqfjdoISq", "transactionReferenceId": "BREj9u9HC7BlfwI", "originatingId": null, "status": "COMPLETED", "type": "TRANSFER", "originatingTransactionType": null, "ledgerBalance": -1375.71, "debtorClientId": null, "debtorAccountId": "4cd6a1f480704b93af3bed5d2fcdc0f87", "debtorAccountNumber": null, "debtorName": "J.P. Morgan Chase Bank", "creditorClientId": "S007299123", "creditorAccountId": "d41f8ec079444a13abca00f52c5809ac", "creditorAccountNumber": "...5090", "creditorName": "Test EP - VUTUOQ", "recipientId": null, "amount": 216, "targetCurrency": null, "currency": "USD", "targetCurrencyUnit": null, "memo": null, "paymentDate": "2025-11-07", "acknowledgedAt": "2025-11-07T08:20:25.123Z", "postingVersion": 1, "effectiveDate": "2025-11-07", "localInstrumentCode": "", "fxInformation": null } ``` Offset to Funding Movement: ```json { "id": "14FkblzK1lEri3Lc4", "transactionReferenceId": "WERf4sOCweB3c2f", "originatingId": null, "status": "COMPLETED", "type": "TRANSFER", "originatingTransactionType": null, "ledgerBalance": 0, "debtorClientId": null, "debtorAccountId": "c41f8ec079444a13abca00f52c5809ac", "debtorAccountNumber": "...5090", "debtorName": "Test EP - VUTUOQ", "creditorClientId": "S007299123", "creditorAccountId": "4cd6a1f480704b93af3bed5d2fcdc0f87", "creditorAccountNumber": null, "creditorName": "J.P. Morgan Chase Bank", "recipientId": null, "amount": 216, "targetAmount": null, "currency": "USD", "targetCurrency": null, "memo": null, "paymentDate": "2025-11-07", "createdAt": "2025-11-07T08:02:25.123Z", "postingVersion": 1, "effectiveDate": "2025-11-07", "localInstrumentCode": "", "fxInformation": null } ```