Orqpay

Errors

Error response shape and common API codes.

All API errors use the same JSON shape:

{
  "error": {
    "code": "INVALID_AMOUNT",
    "message": "Human-readable message"
  }
}

Use error.code for programmatic handling. message is for logs and debugging.

HTTP status

StatusTypical meaning
400Validation / bad request
401Missing or invalid API key
403Not allowed (e.g. live not approved)
404Resource not found
409Conflict (e.g. idempotency mismatch)
429Rate limit exceeded
500Unexpected server error

Common codes

Auth

CodeStatusWhen
UNAUTHORIZED401Missing or invalid credentials
INVALID_API_KEY401Unknown or revoked API key
RATE_LIMITED429Over 100 requests/minute

Invoices

CodeStatusWhen
INVALID_AMOUNT400Amount not a positive decimal string (max 6 decimal places)
INVALID_METADATA400Metadata is not a JSON object
INVALID_NETWORK400networkId invalid or unknown
INVALID_TOKEN400token not USDC or USDT
NETWORK_NOT_ENABLED400Network not available for this merchant/environment
TOKEN_NOT_SUPPORTED_ON_NETWORK400Token not available on the requested network
NO_AVAILABLE_PAYMENT_METHOD400Constraints leave no valid network/token
ENVIRONMENT_NOT_ALLOWED400Request included environment (omit it — use the key)
IDEMPOTENCY_KEY_REQUIRED400Missing Idempotency-Key on create
IDEMPOTENCY_CONFLICT409Same key, different body
LIVE_NOT_APPROVED403Live invoice / live key before go-live approval
MERCHANT_SUSPENDED403Merchant account is suspended
INVOICE_NOT_FOUND404Unknown invoice

Webhooks (dashboard / partner config)

CodeStatusWhen
INVALID_WEBHOOK_URL400Bad URL or live URL not public HTTPS
INVALID_WEBHOOK_SECRET400Secret length out of range
WEBHOOK_SECRET_REQUIRED400First setup without secret
WEBHOOK_NOT_CONFIGURED404No endpoint for that environment
DELIVERY_NOT_FOUND404Unknown delivery id

Idempotency

POST /v1/invoices (and partner creates) require Idempotency-Key.

  • Same key + same body → original result
  • Same key + different bodyIDEMPOTENCY_CONFLICT (409)

Generate a fresh key per distinct create attempt (UUID is fine).

Rate limits

Default: 100 requests/minute per API key. On 429, retry with backoff.

On this page