Complete reference of PIK API error codes and how to handle them.
When a PIK API request fails, the response body includes an error object with a code, message, and optional detail field. Use the code field to handle errors programmatically — it is stable across API versions.
400 Bad Request — Malformed request or missing required fields. 401 Unauthorized — Authentication failed. API key is missing, invalid, or revoked. 403 Forbidden — Authenticated but not permitted. Capability not activated or account not verified. 404 Not Found — Resource does not exist or does not belong to your platform. 409 Conflict — Request conflicts with the current resource state. 422 Unprocessable Entity — Well-formed request that fails a business logic rule. 429 Too Many Requests — Rate limit exceeded. Retry after the Retry-After header interval. 500 Internal Server Error — Unexpected PIK error. Retry with exponential backoff.
INVALID_API_KEY — API key not recognised. Verify it has not been deleted. API_KEY_REVOKED — API key has been revoked. Generate a new key. ACCOUNT_NOT_VERIFIED — Connected account verification is not approved. ACCOUNT_NOT_FOUND — No account with that ID exists under your platform. CAPABILITY_NOT_ACTIVATED — Required capability not activated on this account. CAPABILITY_ALREADY_ACTIVE — Capability is already active on this account. INSUFFICIENT_BALANCE — Available balance is too low for the requested transaction. BELOW_MINIMUM_AMOUNT — Amount is below the minimum for this transaction type or currency pair. ABOVE_MAXIMUM_AMOUNT — Amount exceeds the maximum allowed. UNSUPPORTED_CURRENCY — Currency is not supported by PIK. UNSUPPORTED_CURRENCY_PAIR — The sell/buy currency combination is not a supported FX pair. QUOTE_EXPIRED — The quote_id has passed its validity window. Request a new quote. QUOTE_ALREADY_USED — The quote_id has already been used. Each quote can only be used once. PAYMENT_ALREADY_SETTLED — Action attempted on a payment that is already settled. PAYMENT_EXPIRED — Action attempted on a payment that has expired. DUPLICATE_REFERENCE — A transaction with the same reference already exists. Use unique references. RATE_LIMIT_EXCEEDED — Too many requests in a short period. Implement exponential backoff. VAN_NOT_ISSUED — The connected account does not have a Virtual Account Number issued. VAN_ALREADY_ISSUED — A Virtual Account Number has already been issued for this account.