POST /v1/checkout request and the connection drops before you receive a response, you don’t know whether PayBridgeNP created the session or not. Retrying blindly can create duplicate checkout sessions for the same order.
PayBridgeNP supports idempotency keys on POST /v1/checkout to make retries safe.
How it works
Pass a uniqueIdempotency-Key header with your request:
Key rules
- Use UUID v4 - random, unguessable, one per logical operation (not per HTTP request)
- Keys are scoped to your project and live or sandbox mode
- Responses are retained for at least 24 hours - never reuse a key for a different operation
- A key belongs to one request - sending a key you already used with a different endpoint or method returns
409with codeidempotency_key_already_used, and nothing runs. The invoice endpoints refuse a different body the same way. On the other endpoints, the same key sent again to the same endpoint with a different body still returns the first response; treat that as a bug in your integration, because it will be refused too in a future change - Limit refusals are not stored - a request refused because of a plan limit (
402), a feature your plan does not include, a rate limit (429), or a spend cap is evaluated again when you retry with the same key, so it can succeed once the limit clears. Other error responses, such as validation errors, are returned again as they were - Supported on these endpoints -
POST /v1/checkout,POST /v1/mobile/session,POST /v1/refunds,POST /v1/webhooks,POST /v1/payment-links,POST /v1/qr/fonepay,POST /v1/qr/{id}/refresh, and these billing endpoints:POST /v1/billing/plans,/customers,/customers/{id}/credit,/subscriptions,/subscriptions/{id}/invoice-items,/invoices/{id}/qr,/coupons,/promotion-codes, and/dunning/policies. Other write endpoints ignore the header. GET requests are idempotent by design and ignore the key
Generating a UUID v4
Using with the SDK
Concurrent request conflict
If two requests with the same key arrive at exactly the same time, one of them will receive a409 Conflict: