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.app — a 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.createdandgroup.fundedverified withverifyWebhookSignature. - Fulfillment code runs on
group.funded, not only ononGroupFunded. - Cancel tested (
group.cancelled). - You know what happens on expiry (
group.expired, automatic refunds). - Session create passes organizer
customer,success_url,cancel_url, andcart.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.
| Field | Pass when | Why |
|---|---|---|
customer.name | You know the shopper starting the group | Pre-fills the organizer in group setup; avoids blank “Person 1” labels. |
customer.email | You have a logged-in or checkout email | Support and correlation; required for POST /sessions/:id/remind to reach pending members. |
customer.phone | You already collect it | Optional support contact — only send if you use it elsewhere. |
success_url | Hosted modal / SDK embed | Redirects the organizer back to your store after the group is fully funded. |
cancel_url | Hosted modal / SDK embed | Redirects the organizer after they close the modal or the group is cancelled (refunds run automatically). |
cart.metadata.order_ref | Always (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
- Finish every Setup guide step (progress ring must be complete).
- Add a passkey or enable 2FA at Security (owner account) — required before going live.
- Finish Stripe live verification at Payments (payout account connected).
- Toggle Live on Business or from the business menu in the sidebar. Ante issues
ante_pk_live_*andante_sk_live_*if this is your first time going live. - Put the live publishable key in the frontend. Keep the same
ANTE_SIGNING_SECRETunless you rotated it. - Register live webhook endpoints (separate from sandbox registrations).
- Run one small real transaction and confirm payout + webhook.
- If you use preferred payout currency, confirm FX fields on live
group.fundedmatch 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.