Migration guides
How to map existing payment, subscription, and ticketing stacks onto ATM.
Compatible with the closed-beta ATM app APIs and versioned ATM event headers. Check atm-api-version on every webhook or XRPC receiver event.
From Stripe Checkout
ATM checkout is intentionally closer to hosted checkout than a raw processor API integration. Your app still creates the app order, but ATM owns the payment form, processor session, receipts, proof writes, and app events.
| Create checkout session | Check payability, request creator app approval, create an ATM checkout envelope, and call network.attested.payment.initiate. |
|---|---|
| success_url | Use returnUrl for UI continuity, then poll ATM status. |
| cancel_url | Use cancelUrl to return the buyer to the app context. |
| checkout.session.completed | Use ATM payment.completed events. |
From Stripe Connect
Apps do not become Stripe platforms inside ATM. ATM is the payment platform and broker; apps get app-scoped payment visibility, app fees, events, and fulfillment refs. Connected-account owner controls stay in the creator dashboard.
From simple subscriptions
Model the recurring relationship separately from invoice payments. ATM shows one subscription relationship and payment rows for money that actually moves. Amount changes should update the relationship while preserving history.
From existing ticketing
Keep discovery, event pages, SEO, organizer UX, and scanner screens in the event app. Move scarce inventory, holds, issuance, QR tokens, verification, check-in, refunds, and payment-linked truth to ATM Tickets.