Docs

Payload schemas

Canonical envelopes, core event data shapes, and error response conventions for ATM integrations.

Closed beta@atmosphere-money/app-nodeSDK beta: 0.0.0-beta.3ATM API beta: 2026-0672 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.

Event envelope

Every event has a stable envelope and a typed datapayload. The envelope is the part apps should use for verification, environment separation, idempotency, and routing.

FieldTypeRequiredDescription
idstringyesStable ATM event id.
deliveryIdstringyesUnique delivery attempt id used for deduplication.
environmenttest | liveyesThe app environment that produced the event.
typestringyesCanonical event type, such as payment.completed.
appDiddidyesThe app receiving this event.
createdAtdatetimeyesISO timestamp for event creation.
dataobjectyesTyped event-specific payload.

Payment completed

FieldTypeRequiredDescription
paymentIdstringyesATM payment id.
amountintegeryesFinal settled amount in minor currency units.
currencystringyesLowercase ISO 4217 currency.
paymentTypestringyestip, subscription, shop, commission, ticket, or app-defined type.
recipientDiddidyesCreator, organizer, or app receiving the payment.
payerDiddidnoPresent when the payer was signed in or asserted.
listingstrongRefnoPublic catalog or listing ref when available.
appOrderIdstringnoPrivate app order id supplied in checkout metadata.
json
{
  "paymentId": "pay_...",
  "amount": 2500,
  "currency": "usd",
  "paymentType": "shop",
  "recipientDid": "did:plc:creator",
  "payerDid": "did:plc:buyer",
  "listing": { "uri": "at://...", "cid": "bafy..." },
  "appOrderId": "ord_123"
}

Subscription updated

FieldTypeRequiredDescription
subscriptionIdstringyesATM subscription id.
statusstringyesactive, past_due, canceled, incomplete, or processor-specific mapped state.
amountintegeryesCurrent recurring amount.
previousAmountintegernoPrevious amount when this event represents an amount change.
currencystringyesLowercase ISO 4217 currency.
payerDiddidnoSigned-in or asserted payer DID.
recipientDiddidyesRecipient DID.

Catalog archived

FieldTypeRequiredDescription
productUriat-uriyesArchived ATM product record URI.
productCidcidnoCID of the archived product record when available.
archivedAtdatetimeyesArchive timestamp.
appProductRefstringnoPrivate app fulfillment ref, if registered.

Ticket issued

FieldTypeRequiredDescription
eventUriat-uriyesCommunity event record URI.
holdIdstringnoTicket hold that produced the issued tickets.
paymentIdstringnoATM payment id for paid tickets.
issuedCountintegeryesNumber of tickets issued.
buyerDiddidnoVerified buyer DID when present.
appOrderIdstringnoPrivate app order id when supplied.

Error response

XRPC and API errors should be readable by humans and stable enough for apps to branch on error codes.

json
{
  "error": "RecipientNotPayable",
  "message": "This recipient has not finished payment setup."
}
Payload schemas - Atmosphere Money Docs