Skip to main content

C2B (Customer-to-Business) Callbacks

Receive a signed notification when a customer payment reaches its final state. The callback is sent to the notifyUrl you supplied in the initiate-payment request.

Payload Format

Field Reference

Callbacks are only sent for final states. There is no pending callback — a transaction that never completes eventually produces an expired callback.

Verify, Then Process

Always verify the Ed25519 signature before trusting the payload — see Signature Verification for complete verification code in Node.js, Python, and Go. The examples below assume verifyCallback / verify_callback from that page.

Sample Payloads

Successful Payment

Failed Payment

Expired Session

Best Practices

Security
  • Always verify the Ed25519 signature against the raw body bytes before parsing JSON
  • Enforce a timestamp freshness window and dedupe on X-Request-ID
  • Never fulfill an order based on the browser redirect to successUrl alone — wait for the completed callback
Performance
  • Respond 2xx within 10 seconds; queue heavy work for asynchronous processing
  • Index your transactions table on txnId for fast lookups
  • Log the X-Request-ID of every delivery — it is the correlation handle for support