Build the whole integration in test mode today — its own database, its own keys, no approval needed
CANDI is not a payment processor and does not want to become one. It is the product layer Stripe leaves you to build yourself.
Where the line falls. Everything to do with the money is Stripe's and yours; everything to do with the billing model is ours.
| On one sale | Stripe, on your account | CANDI |
|---|---|---|
| Taking the card payment | Stripe processes it | — |
| Verifying you (KYC / KYB) | Stripe hosts it and decides | — |
| Where the money lands | your own account | never holds it |
| Getting paid out | your own payout schedule | — |
| Sales tax, VAT, GST | Stripe Tax, if you enable it | not calculated by CANDI |
| Refunds and disputes | Stripe's terms, your balance | reported to you on a signed event |
| Subscriptions, trials, dunning | — | CANDI runs it |
| Licence keys, credits, files | — | CANDI runs it |
| Discounts, splits, affiliates | — | CANDI runs it |
| Checkout page and customer portal | — | CANDI runs it |
| Signed webhooks and delivery log | — | CANDI runs it |
| Fees on the sale | Stripe's processing fee | 1% on top |
| The seller of record | not Stripe | not CANDI — it is you |
Stripe's own processing fee, taken by Stripe on your account at whatever your Stripe agreement says, and a flat 1% platform fee to CANDI for the billing layer. No monthly fee, no setup fee, no minimum, and nothing on a payment that fails.
The primitives you would otherwise assemble from a subscription tool, a licensing service, a credits ledger and an affiliate platform — behind one integration and one contract.
Send the customer to a hosted page and get them back on a signature-verified redirect, or keep them put and open it as an inline modal with the embed SDK.
Trials, proration on upgrade or downgrade, pause and resume, seat counts, and dunning that retries a failed renewal before it cancels.
Issue keys on purchase, activate and validate per device with activation limits and expiry — no extra service to run.
Prepaid wallets and metered billing with durable idempotency — perfect for AI tokens, API calls and loyalty points.
Attach files to a product and the buyer gets a token-gated download the moment payment clears, re-issued as a fresh signed link from their portal.
Percentage or fixed-amount codes with expiry, redemption caps and per-product scope, validated at checkout before the customer pays.
Twelve HMAC-signed events with retries at 30s, 1m, 5m and 1h, a full delivery log, dedupe on event id, and one-click resend.
Attribute a sale to an affiliate or split it across partners, with each party's share computed on the order and reported back to you line by line.
A magic-link portal where your customer sees their subscriptions, orders and invoices, updates a card, and cancels or resumes without emailing you.
These are properties of the platform you can check against our API and our docs — not traction claims. CANDI has no customer logos to show you yet, and we are not going to borrow anyone else's.
# 1 — open a checkout curl -X POST https://api.usecandi.com/v1/checkouts \ -H "x-api-key: candi_test_…" \ -d '{"product_id":"prod_…","success_url":"https://yourapp.com/done"}' → { "url": "https://checkout.usecandi.com/chk_…" } # 2 — fulfil on the signed webhook (candi-signature: HMAC_SHA256) POST /your/webhook checkout.completed → grant access. Stripe pays you on your own schedule.
Nothing about building against CANDI waits on us. Connecting a Stripe account is what turns it into live money, and that step is not open yet.
Define a one-time or recurring product with its pricing, and attach any licence, file or credit behaviour it needs.
Call the API for a hosted checkout URL, or embed it as a modal on your own page. The charge is created on your connected Stripe account.
POST /v1/checkouts
→ checkout.usecandi.com/{id}Listen for checkout.completed, verify the candi-signature HMAC, and grant access. The renewal and the entitlement are then ours to run.
Point Claude, Cursor or your own agent at the SKILL.md and let it do the integration. Billing tools built before agents existed make you read a reference manual; we publish one for the machine as well.
# connect the CANDI MCP server npx candi-mcp # then, from any agent: create_product(name, price) create_checkout(product_id) get_metrics_summary() → MRR
CANDI is new. The billing layer on this page is live and testable in your account right now; the Stripe connection that turns it into real money is not — and we would rather you heard that from us than found out during an integration.
Your own Stripe account, your own money · Stripe's fees plus a platform fee, and nothing else · How pricing works