Skip to content

Errors

The error shape, HTTP statuses, and what each error code means.

Updated View as Markdown

Every error has the same shape: an error object with a machine-readable code and a human-readable message. Some errors add fields, such as errors for validation problems or transaction for declines.

{
  "error": {
    "code": "invalid_request",
    "message": "The amount field is required.",
    "errors": {
      "amount": ["The amount field is required."]
    }
  }
}

Branch on code, not on message: messages can be reworded.

HTTP statuses

Status When
200, 201 Success. 201 means a record was created; for charges it means money moved.
401 Missing, unknown, revoked, expired or turned-off key, or a publishable key.
402 A charge, capture, void or refund the gateway did not approve, or live mode without a plan.
403 The key lacks the permission this endpoint needs.
404 No such record for this key’s team and environment.
409 The request conflicts with the record’s state, for example refunding a voided charge.
422 The request is invalid.
429 Rate limited.
5xx Something failed on our side. Retry with the same Idempotency-Key.

Declines and gateway failures

A charge, capture, void or refund that reached the gateway but was not approved answers 402. The error carries the recorded transaction, so you can show the reason and keep its id:

{
  "error": {
    "code": "card_declined",
    "message": "The card has insufficient funds.",
    "decline_code": "insufficient_funds",
    "transaction": { "object": "transaction", "id": "txn_01jaxs6q9s2u5w8y1a4c7e0g3j", "status": "declined" }
  }
}

code is one of:

Code Meaning
card_declined The issuer declined. decline_code says why.
expired_card The card has expired.
incorrect_cvc The security code is wrong.
incorrect_number The card number is wrong.
processing_error The gateway or processor failed to process a valid request. It may work on a retry.
invalid_request The gateway refused the request itself (an amount or field it does not accept).
gateway_error OrderCard could not get a usable answer: the gateway was unreachable or refused your credentials. Check the gateway before retrying, because the outcome may be unknown.

See Declines for every decline_code and the AVS and CVV results.

Other codes

Code Status Meaning
unauthenticated 401 See Authentication.
forbidden 403 The key lacks a permission.
not_found 404 No such record for this key.
subscription_required 402 Live mode needs an active plan.
resource_missing 422 A token or id in the body is not one of this key’s records. param names the field.
rate_limited 429 Wait for Retry-After seconds.
idempotency_key_reused 409 The Idempotency-Key was used with a different request.
idempotency_in_progress 409 A request with this Idempotency-Key is still running.
test_card_in_live_mode 422 A sandbox test card number was sent with a live key.
real_card_in_sandbox_mode 422 A card number that is not one of the test cards was sent with a sandbox key. Sandbox never keeps a real card.
payment_method_redacted 409 The card was redacted and can no longer be charged or changed.
payment_method_expired 409 A pending token expired before it was charged or retained. Tokenize the card again.
gateway_inactive 409 The gateway is turned off.
surcharge_changed 409 The surcharge would make the total more than max_total. Nothing was charged.
surcharge_too_high 422 A surcharge you sent is above 3% of the amount.
surcharge_not_allowed 422 You sent a surcharge amount for a gateway that decides the surcharge itself.
amount_too_large 422 A capture or refund is more than what is left. maximum_amount says how much is.
transaction_not_successful 409 Only a successful transaction can be captured, voided or refunded.
transaction_voided 409 The transaction was voided.
transaction_not_capturable 409 Only an authorization can be captured.
transaction_already_captured 409 The authorization was already captured.
transaction_not_voidable 409 The transaction cannot be voided, for example because it was refunded.
transaction_not_refundable 409 Only a purchase or capture can be refunded.
transaction_fully_refunded 409 Nothing is left to refund.
transaction_in_progress 409 Another capture, void or refund of this transaction is running.
sync_not_supported 409 The gateway keeps no configuration to sync.
Navigation

Type to search…

↑↓ navigate↵ selectEsc close