Docs

Webhooks and XRPC

Receive signed ATM events through HTTP webhooks or an optional AT Protocol-native receiver.

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.

Default callback path

Signed HTTP webhooks are the default because every app backend can receive them. ATM stores delivery attempts, signs each payload, and lets apps replay failed events from the dashboard.

XRPC receiver path

Apps that already expose a DID-discoverable AT Protocol service can optionally receive events through money.atmosphere.event.receive. This is useful for apps that want their ATM integration to look like the rest of their XRPC surface.

Event envelope

Event payloads include environment, app, delivery, and event type metadata. Apps should verify the signature or service-auth envelope before processing the event.

json
{
  "id": "evt_...",
  "deliveryId": "del_...",
  "environment": "test",
  "type": "payment.completed",
  "appDid": "did:plc:app",
  "createdAt": "2026-06-05T00:00:00.000Z",
  "data": {
    "paymentId": "pay_...",
    "amount": 500,
    "currency": "usd",
    "recipientDid": "did:plc:creator"
  }
}

Idempotency

Webhook delivery is at-least-once. Store the delivery id and ATM object id before performing side effects. Redriven events should be safe to receive multiple times.

Webhooks and XRPC - Atmosphere Money Docs