Skip to content

Error Codes

API errors are returned with a consistent standard error response. Raw bank error codes (bank transaction/result codes) are not surfaced to the customer; you only see the stable codes below.

{
"error": {
"code": "terminal_not_allowed",
"message": "Terminal is not allowed for this partner.",
"traceId": "trc_9f12ab"
}
}
FieldDescription
codeStable, machine-readable error code (catalog below).
messageHuman-readable description.
traceIdA trace identifier to share in support requests.
  • Validation and business-rule violations → 4xx (e.g., 400, 409, 422).
  • Authentication failure → 401.
  • Every error response carries an error.code and a traceId.
CodeMeaning
duplicate_partner_tx_codeAn active/successful payment already exists with the same partnerTxCode.
terminal_not_allowedThe terminal does not belong to the partner or is inactive.
amount_limit_exceededThe amount is outside the allowed min/max range.
installment_not_allowedThe card is not eligible for installments or the terminal has no installment permission.
payment_not_refundableThe payment is not in a refundable state.
refund_amount_exceeds_remainingThe requested refund amount exceeds the remaining refundable balance.
refund_not_yet_availableSame-day partial refund: available after day-end.
refund_in_progressA pending refund already exists for this payment (single-flight rule).

The codes below occur during Card Handoff when the paymentRef sent to the handoffUrl is not valid. The remedy is always the same: create a new cardless payment (POST /v1/payments), then start the handoff again with the new paymentRef/handoffUrl it returns.

CodeHTTPMeaning
payment_ref_invalid404The paymentRef is invalid/unknown.
payment_ref_expired404The paymentRef has expired.
payment_prepare_already_started4093D has already been started for this paymentRef (single-use).