Go live

Run through this list in sandbox first. Then flip live mode and repeat with real money once.

Copy this page as a setup prompt for your coding assistant.

Full implementation example

Try the live sandbox store at ante-demo-store.vercel.appa complete Next.js shop with cart signing, @splitante/react-sdk, webhooks, and test/live credential switching.

Clone the source on GitHub: plurel-company/ante-demo-store. The repository is public (anyone can clone or fork); only Plurel maintainers can push to main.

Sandbox (required)

Complete every step in the portal Setup guide (top bar while in test mode). The five steps are: payouts, sandbox API keys, signing secret, one settled sandbox checkout, and a sandbox webhook. You can also run through the same items manually:

  • Payout setup completed (test mode is fine) at Payments.
  • Sandbox API keys created from the Setup guide or Developers (full values shown once).
  • Cart signing secret generated under Developers → Signing.
  • Cart signing route deployed on a URL you control.
  • Button opens the modal; one full group funded with test card 4242…
  • Webhooks for group.created and group.funded verified with verifyWebhookSignature.
  • Fulfillment code runs on group.funded, not only on onGroupFunded.
  • Cancel tested (group.cancelled).
  • You know what happens on expiry (group.expired, automatic refunds).
  • Session create passes organizer customer, success_url, cancel_url, and cart.metadata.order_ref — see recommended fields below.

Recommended session fields

Pass these on every createSession or Ante.createButton call when your storefront already knows the values. The API accepts sessions without them, but production integrations are smoother when you send organizer context up front.

FieldPass whenWhy
customer.nameYou know the shopper starting the groupPre-fills the organizer in group setup; avoids blank “Person 1” labels.
customer.emailYou have a logged-in or checkout emailSupport and correlation; required for POST /sessions/:id/remind to reach pending members.
customer.phoneYou already collect itOptional support contact — only send if you use it elsewhere.
success_urlHosted modal / SDK embedRedirects the organizer back to your store after the group is fully funded.
cancel_urlHosted modal / SDK embedRedirects the organizer after they close the modal or the group is cancelled (refunds run automatically).
cart.metadata.order_refAlways (your order or cart id)Echoes as order_ref on webhooks and GET /sessions — tie fulfillment to your system.

Guest payers (share links)

Do not collect payer email or address in your storefront before Ante opens. Friends who open /s/{shareId} pay through Stripe; Ante stores payer email from Stripe when provided (receipt / billing details). Your integration only needs to pass organizer customer at session create.

Privacy

If you pass customer.email or customer.phone, disclose that in your privacy policy and only send fields you already collect for checkout. See Go live and your obligations under Ante's privacy policy for participant data.

Portal security (required)

The merchant owner must register at least one passkey or enable TOTP two-factor authentication before Ante allows live mode. Configure both under Security. Live accounts cannot remove their last passkey or 2FA method, and owners signing in with email or Google complete an extra verification step.

Switch to live

  1. Finish every Setup guide step (progress ring must be complete).
  2. Add a passkey or enable 2FA at Security (owner account) — required before going live.
  3. Finish Stripe live verification at Payments (payout account connected).
  4. Toggle Live on Business or from the business menu in the sidebar. Ante issues ante_pk_live_* and ante_sk_live_* if this is your first time going live.
  5. Put the live publishable key in the frontend. Keep the same ANTE_SIGNING_SECRET unless you rotated it.
  6. Register live webhook endpoints (separate from sandbox registrations).
  7. Run one small real transaction and confirm payout + webhook.
  8. If you use preferred payout currency, confirm FX fields on live group.funded match expectations — limitations (transfers stay in checkout currency).

Key environment

Test keys against a live-mode merchant (or the reverse) return 403. Sandbox flag in Settings must match key prefix.

Before traffic

Alert on repeated webhook failures in the delivery log at Webhooks. Make fulfillment idempotent (retries can duplicate group.funded). Keep a support note template: merchant id, session id, order_ref, request_id. Pass organizer customer and redirect URLs on every session create in production — details in SDK docs and REST API.

Headless only

If you call the REST API with secret keys and no cart signature, confirm headless_api_enabled is true before launch. Contact Ante if unsure.

Errors: Troubleshooting. Keys: Security.