Webhook Topics

CounterpartyTransactionCreated

Fired when a money movement first appears on a counterparty's account. status is usually Pending at this point, meaning the amount counts toward the counterparty's pending balance but not yet its available balance. Wait for CounterpartyTransactionUpdated with status Posted before treating the funds as spendable.

The included payload mirrors a row from GET /api/v1/counterparties/{counterpartyId}/transactions exactly, so you can act on the event without re-reading the list.

On a Deposit, originatorName and description are the originating bank's own — who paid, and what they called the payment. Both are null when the rail carried neither, and originatorName is null on every movement that is not a deposit.

These two topics describe ledger movements, while CounterpartyPayout*, CounterpartyTransfer* and CounterpartyIncomingPayment describe the operations that cause them. They overlap on purpose: subscribe to whichever view suits you, and expect both events for one movement if you subscribe to both. A transfer between two of your counterparties fires one event per side, each with the direction that side experienced.

postWebhookcounterpartyTransactionCreated

Payload

idstring uuid required

Unique identifier for the object.

type'WebhookEvent' required

Example payload

{
  "attributes": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "userId": "123e4567-e89b-12d3-a456-426614174000",
    "walletId": "123e4567-e89b-12d3-a456-426614174000"
  },
  "included": [
    {
      "attributes": {
        "transactionId": "lt_a1b2c3d4e5",
        "counterpartyId": "123e4567-e89b-12d3-a456-426614174000",
        "merchantId": "123e4567-e89b-12d3-a456-426614174000",
        "amount": 5000,
        "currency": "USD",
        "direction": "Credit",
        "type": "Deposit",
        "status": "Posted",
        "description": "Payout to Acme Vendor",
        "originatorName": "Checkout LLC",
        "effectiveAt": "2024-01-15T00:00:00.000Z",
        "postedAt": "2024-01-15T00:00:00.000Z",
        "createdAt": "2024-01-15T00:00:00.000Z",
        "updatedAt": "2024-01-15T00:00:00.000Z"
      }
    }
  ]
}

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.