Use webhooks for real-time updates and daily queries as a backstop to detect missed events or data drift.
Handling webhooks
Listen for transaction webhooks to track transaction status change until a terminal state is reached.Terminal statuses:
COMPLETED
, REJECTED
, FAILED
, REFUNDED
, EXPIRED
.
All other statuses will progress until reaching one of the above.- Outbound transactions: The originating account is debited at transaction creation. If the transaction ultimately fails, a refund is posted back to the originating account.
- Inbound transactions: The receiving account is credited only on success. Failures do not change balances.
Grid retries failed webhooks up to 160 times over 7 days with exponential backoff. Use the dashboard to review and remediate webhook delivery issues.
1
Subscribe and verify signatures
2
Process events idempotently
Use the
webhookId
, transaction.id
, and timestamp
to ensure idempotent handling, updating your internal ledger on each status transition.3
Recognize terminal states
When a transaction reaches a terminal state, finalize your reconciliation for that transaction.
Reconcile via queries
Additionally, you can list transactions for a time window and compare with your internal records.We recommend querying days from
00:00:00.000
to 23:59:59.999
in your preferred timezone.cURL
Troubleshooting
- Missing webhook: Check delivery logs in the dashboard and ensure your endpoint returns
2xx
. Retries continue for 7 days. - Mismatched balances: Re-query the date range and verify terminal statuses; remember outbound failures are refunded, inbound failures do not change balances.
- Pagination gaps: Always follow
nextCursor
untilhasMore
isfalse
.