CounterpartyIncomingPayment
Fired when a payment arrives on a counterparty's bank account and has been recorded on the counterparty's balance. Use this to reconcile funding you receive from a counterparty over bank rails without polling the counterparty balance.
The included payload carries counterpartyId, amount (in cents), currency, direction (credit for funds received, debit for funds withdrawn), method (the bank rail, for example ach or wire), asOfDate (the bank settlement date), and externalIncomingPaymentId for reconciliation against your bank records.
It also carries originatorName and description exactly as the originating bank sent them — who paid, and what they called the payment. Both are null when the rail carried neither, and on ACH the description is the company entry description, so expect a reference code as often as prose.
This event is only sent after the payment has been recorded, so the counterparty balance already reflects it when you receive the webhook.
Payload
Example payload
{
"attributes": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174000",
"walletId": "123e4567-e89b-12d3-a456-426614174000"
},
"included": [
{
"attributes": {
"counterpartyId": "123e4567-e89b-12d3-a456-426614174000",
"merchantId": "123e4567-e89b-12d3-a456-426614174000",
"amount": 2500,
"currency": "USD",
"direction": "credit",
"method": "ach",
"originatorName": "Checkout LLC",
"description": "000000031R",
"asOfDate": "2026-08-27",
"externalIncomingPaymentId": "ipd_a1b2c3d4e5"
}
}
]
}Response
Return a 200 status to indicate that the data was received successfully
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.