Errors and Retries
Error response shape
All API errors follow this format:
{
"error": "Human-readable message",
"code": "MACHINE_READABLE_CODE",
"details": null
}
Recommended partner retry strategy
| Scenario | Retry? | Guidance |
|---|---|---|
| Network timeout / connection issue | Yes | Retry with same idempotency-key |
HTTP 5xx | Yes | Exponential backoff + same idempotency key |
HTTP 429 | Yes | Backoff and retry |
HTTP 4xx validation/auth errors | No | Fix request first |
HMAC_INVALID | No | Fix signing implementation |
Frequently seen codes
Security and auth
API_KEY_MISSINGAPI_KEY_INVALIDHMAC_MISSINGHMAC_INVALIDIDEMPOTENCY_KEY_MISSING
Domain validation
PARTNER_NOT_FOUNDPARTNER_NOT_ACTIVEKYC_NOT_APPROVEDCLIENT_NOT_FOUNDCLIENT_NOT_ACTIVETX_NOT_FOUND
Webhook
STRIPE_SIGNATURE_MISSINGSTRIPE_SIGNATURE_INVALIDINVALID_WEBHOOK_JSONPAYMENT_INTENT_NOT_FOUND
Settlements and payouts
BATCH_NOT_FOUNDBATCH_ALREADY_PAIDPAYOUT_FAILED
Idempotency replay example
{
"clive_tx_id": "CLVTX_1739378102312_420",
"status": "initialized",
"idempotentReplay": true
}
If you get this on retry, treat it as success for the original attempt.