Skip to main content

Checkout Errors

The checkout endpoints use the ACP error envelope, which differs from the standard Gomry error format used everywhere else in this API. The catalog endpoints use the standard format.
string
invalid_request, processing_error, or service_unavailable. A coarse class for clients that do not switch on code.
string
The specific reason. See the table below.
string
Human-readable. Safe to log; not intended to be shown to a buyer verbatim.
string
Present when one field caused the failure — for example items[0].id.
Every error response also carries API-Version, and echoes Request-Id and Idempotency-Key when you sent them. Correlating a failure is exactly when those headers matter most.

Codes

Unexpected fields are rejected, not ignored. Request bodies are validated strictly, so a body carrying a field the schema does not define returns 400 invalid_body rather than silently dropping it.This is deliberate and exists for one reason above all: a body containing something like card_number must fail loudly rather than be quietly accepted into our logs and traces. See Agentic Commerce.

Blocking messages vs errors

An error is a failed request. A blocked session is not an error — it returns 200 with status: "not_ready_for_payment" and one or more entries in messages[]:
messages[].code is a separate, smaller enum from the error codes above — the ACP spec closes it to six values: A type: "error" message blocks payment; type: "info" is advisory. Read status for the decision and messages for the reason.

Retrying

500 internal_error, 503 temporarily_unavailable, and 409 request_not_idempotent. Use exponential backoff, and reuse the same Idempotency-Key so a retry cannot double-charge.
Every 400. The request is wrong and will fail identically until changed.
409 sold_out, 409 not_on_sale, 409 amount_mismatch. The world changed underneath the session. GET it, show the buyer what is now true, and only then retry.
401 invalid_signature and 402 payment_declined. Retrying a declined token will not make it succeed; ask for another payment method.