Manage negative balance
Platforms may experience scenarios that cause accounts to go into a negative balance (such as chargebacks, refunds or returns).
Account setup
- Funding account: Set up by J.P. Morgan 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 J.P. Morgan 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.
To learn more, see Notifications.
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:
{
"id": "V2V_PROC_OFFSET_001",
"transactionReferenceId": "v2v_proc_offset_ref001",
"type": "TRANSFER",
"status": "COMPLETED",
"requestedExecutionDate": "2026-05-21",
"valueDate": "2026-05-21",
"amount": "1000.00",
"currency": "USD",
"debtor": {
"clientId": "0001007621",
"partyDetails": {
"name": "EP Processing Account"
},
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"number": "...7001",
"ledgerBalance": "49000.00",
"postingVersion": 16
}
}
},
"creditor": {
"clientId": "0001007621",
"partyDetails": {
"name": "EP Client Offset Account"
},
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
"number": "...7002",
"ledgerBalance": "1000.00",
"postingVersion": 3
}
}
}
}Offset to funding movement:
{
"id": "V2V_OFFSET_PROC_001",
"transactionReferenceId": "v2v_offset_proc_ref001",
"type": "TRANSFER",
"status": "COMPLETED",
"requestedExecutionDate": "2026-05-21",
"valueDate": "2026-05-21",
"amount": "1000.00",
"currency": "USD",
"debtor": {
"clientId": "0001007621",
"partyDetails": {
"name": "EP Client Offset Account"
},
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5",
"number": "...7002",
"ledgerBalance": "0.00",
"postingVersion": 4
}
}
},
"creditor": {
"clientId": "0001007621",
"partyDetails": {
"name": "EP Processing Account"
},
"account": {
"type": "REGISTERED_ACCOUNT",
"registeredAccount": {
"id": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"number": "...7001",
"ledgerBalance": "50000.00",
"postingVersion": 17
}
}
}
}