Docs

Error codes

Stable ATM error codes, likely causes, retry behavior, and developer actions.

Closed beta@atmosphere-money/app-nodeSDK beta: 0.0.0-beta.0ATM API beta: 2026-0642 lexicons

Compatible with the closed-beta ATM app APIs and versioned ATM event headers. Check atm-api-version on every webhook or XRPC receiver event.

Payment setup errors

CodeHTTPRetryCauseDeveloper action
RecipientNotPayable409noRecipient has not completed payment setup.Disable checkout controls and direct the recipient to ATM setup.
PaymentSetupIncomplete409noPayment setup exists but is not ready for live payment collection.Show setup-required copy and re-check payout status later.
PaymentAccountUnavailable503yesATM cannot currently access the recipient payment account.Show a temporary unavailable state and retry payout status.
BrokerDidUnsupported400noThe recipient prefers a broker ATM cannot process for this checkout.Do not send an ATM checkout envelope to another broker.

Checkout errors

CodeHTTPRetryCauseDeveloper action
InvalidProduct400noThe product token or checkout envelope is malformed.Rebuild the envelope server-side and confirm only one product field is sent to attested.network initiate.
CheckoutExpired410noThe checkout session or ticket hold expired.Create a fresh checkout or hold.
CheckoutAlreadyProcessing409yesA matching idempotent checkout operation is already in flight.Poll status or retry after a short delay.
ProcessorUnavailable503yesThe payment processor is temporarily unavailable.Show a retryable payment-unavailable state.
PaymentMethodUnavailable400noThe requested payment method is not enabled or eligible.Use ATM-supported methods for the environment and currency.

Auth errors

CodeHTTPRetryCauseDeveloper action
AppUnauthorized401noApp service-auth is missing or invalid.Mint a fresh token with the exact issuer, audience, lxm, expiry, and jti.
InvalidAudience401noThe token audience does not match ATM.Use the ATM service audience for this environment.
InvalidMethod401noThe token lxm does not match the route being called.Mint service-auth for the exact NSID.
TokenReplay401noThe jti has already been used.Mint a new token with a unique jti.
BuyerAssertionInvalid401noThe buyer assertion is missing, expired, replayed, or does not match buyerDid.Mint a fresh buyer assertion for the current action.

Webhook errors

CodeHTTPRetryCauseDeveloper action
InvalidSignature401noWebhook signature verification failed.Verify against the raw body and the correct environment secret.
DuplicateDelivery200noThe delivery was already processed.Return success after confirming the side effect already happened.
ReceiverUnavailable502yesATM could not deliver to the app endpoint.Fix the endpoint and redrive from the app dashboard.
ReceiverConfigNeeded202noNo webhook or receiver endpoint is configured.Add an endpoint; ATM can queue or redrive pending events.

Ticket errors

CodeHTTPRetryCauseDeveloper action
TicketHoldUnavailable409noCapacity could not be reserved.Refresh authoritative availability and ask the buyer to choose a valid quantity.
TicketHoldExpired410noThe hold expired before checkout completed.Create a new hold.
TicketAlreadyCheckedIn200noThe ticket was already checked in.Show prior check-in state rather than recording a second entry.
TicketTokenInvalid404noThe scan token is unknown, revoked, or malformed.Do not admit entry; ask the organizer to inspect the ticket.
TicketVoided409noThe ticket was refunded, voided, or revoked.Do not admit entry.

User-facing copy

Keep user-facing errors calmer than developer errors. Show the concrete next action and avoid exposing processor internals unless the user is in ATM dashboard settings or support tooling.

Setup incomplete

This creator has not set up payments yet.

Temporary unavailable

Checkout is temporarily unavailable. Please try again in a moment.

Sold out

These tickets are no longer available.

Auth canceled

Sign-in was canceled. You can continue from where you left off.

Error codes - Atmosphere Money Docs