BTC$68,420▲ 0.82% / ETH$3,841▼ 0.31% / LTC$94.05▲ 1.14% / SOL$221.60▲ 3.02% / USDT·TRC20$1.0000 / USDC·ERC20$0.9999 / XMR$168.42▼ 0.18% / TON$6.02▲ 0.47% / XRP$2.41▼ 0.09% / GAS·ETH18 gwei / Indicative prices · illustrative ticker / No-KYC · non-pooled · 0.4% flat / BTC$68,420▲ 0.82% / ETH$3,841▼ 0.31% / LTC$94.05▲ 1.14% / SOL$221.60▲ 3.02% / USDT·TRC20$1.0000 / USDC·ERC20$0.9999 / XMR$168.42▼ 0.18% / TON$6.02▲ 0.47% / XRP$2.41▼ 0.09% / GAS·ETH18 gwei / Indicative prices · illustrative ticker / No-KYC · non-pooled · 0.4% flat
OrbChain
UTC 18:47:02 Get started →
Business / Subscriptions ▓ RECURRING · CRYPTO Plans · dunning · reconciliation

Recurring crypto
billing.

Subscription plans, billing ticks, dunning, reconciliation — without ever storing a card number. Each billing period issues a fresh invoice; the customer pays in any of your accepted coins; failed periods run the dunning ladder. Signed receipts on every invoice.

Recurring crypto · No card numbers · Ever
§ Part I / V · Plan shapes

Plans.
Intervals.
Trial periods.

Stripe-shape parity
No card, pure crypto
SymFieldWhat it controlsStatus
AMTamount + currencyPlan price. USD priced; customer pays the crypto equivalent pinned at the invoice-creation moment.REQ
INTintervalday · week · month · year. Interval count multiplies.REQ
TRLtrial_daysFree period before first billing. Customer gets an invoice at start + trial_days.OPT
COINaccepted_coinsWhich coins the customer may pay in each period. Auto Settle applies if you have a settlement_coin set.REQ
DUNdunningRetry ladder on failed period: 1d, 3d, 7d, cancel. Configurable globally or per-plan.OPT
§ Part II / V · Mechanism

One tick.
One invoice.
One webhook.

Hourly billing tick
Atomic, idempotent
#StepBehaviourState
01Create planMerchant defines amount + interval. Plan is reusable across customers.PLAN
02SubscribeCustomer subscribes; a Subscription row links plan + customer + status + next_invoice_at.ACTIVE
03TickHourly worker scans subscriptions where next_invoice_at ≤ now. Creates a fresh payment invoice per match.INVOICED
04SettleCustomer pays invoice via hosted page (URL in webhook). On PAID, next_invoice_at advances by interval.PAID
05DunIf invoice expires unpaid, retry ladder runs: 1d, 3d, 7d. Each retry = fresh invoice. After last failure, subscription cancels.PAST_DUE
06NotifyWebhooks on every state change: subscription.invoiced, subscription.paid, subscription.failed, subscription.canceled.SIGNED
§ Part III / V · Integration

Two POSTs
before the first dollar.

Create plan → subscribe
Tick handles the rest
POST /v1/subscription/plan · then /v1/subscriptioncurl · 200 OK
// 1. Create a plan — $10/month, pay any of 3 coins, no trial.
curl https://orbchain.io/v1/subscription/plan \
  -H "merchant_api_key: mk_live_…" \
  -d '{
    "name":            "Pro monthly",
    "amount":          10,
    "currency":        "USD",
    "interval":        "month",
    "accepted_coins":  ["BTC_LN", "USDT_TRC20", "USDC_ERC20"]
  }'
// → { "plan_id": "plan_01JR5P…", ... }

// 2. Subscribe a customer.
curl https://orbchain.io/v1/subscription \
  -H "merchant_api_key: mk_live_…" \
  -d '{
    "plan_id":          "plan_01JR5P…",
    "external_user_id": "user_12345",
    "customer_email":   "[email protected]"
  }'
// → { "subscription_id": "sub_01JR5P…", "next_invoice_at": "2026-05-20T…" }
§ Part IV / V · Capabilities

Dunning, coupons,
proration, pause.

Parity with card-based
Minus the card number
SymFeatureMechanismStatus
TRLTrial periodtrial_days on the plan or per-subscription override. First invoice fires at trial end.LIVE
DUNDunning ladderFailed invoice retries at 1d, 3d, 7d by default. Each retry is a fresh invoice with fresh address + fresh QR.LIVE
PROProrationUpgrade/downgrade mid-period computes the prorated delta and invoices it immediately.LIVE
PAUPause / resumePATCH /v1/subscription/:id { "status": "paused" }. Tick skips paused rows; next_invoice_at shifts on resume.LIVE
CPNCouponsPercent-off or fixed-amount coupons applicable to plan or per-subscription. Time-boxed or permanent.LIVE
SRSigned ReceiptsEvery paid subscription invoice emits an Ed25519 receipt — accounting-ready artefact.LIVE
§ Part V / V · Questions

Things SaaS operators
ask about recurring crypto.

Answered
Real patterns
Q.01How does a customer pay every month without a card?

Each period the tick creates a new invoice with a hosted payment URL. You email (or notify in-app) the customer the URL; they pay. Alternatively, auto-debit isn't a thing in crypto without the customer pre-authorizing a smart-contract allowance — which we don't implement because it breaks the self-custodial model. The manual-pay flow is the tradeoff for no-card.

Q.02What happens when price volatility hits mid-period?

Plans are USD-priced; the crypto equivalent is pinned at invoice-creation time. The customer has the invoice expiry (default 1h) to pay — if BTC moves 10% during that hour, the price they see is what we asked for.

Q.03How's dunning different from card?

Same ladder, different failure mode. A card failure is "declined"; a crypto failure is "customer didn't pay within the invoice window". Retry = new invoice with new window. After the last rung, subscription cancels and fires subscription.canceled.

Q.04Can I show the customer their subscription history?

Yes — GET /v1/subscription/:id/invoices returns every invoice issued for the subscription, with status, amount, paid_at, and a link to the signed receipt.

Q.05How do I cancel?

DELETE /v1/subscription/:id — cancels at current period end by default (pass ?immediate=true for instant). Fires subscription.canceled.

Recurring crypto.
No card numbers. Ever.

Plans, dunning, proration, signed receipts. 0.4% per settled invoice — no subscription platform fee on top.

§ Feature stack · subscriptions

Every recurring charge
runs on the same stack.

Dunning · idempotent
Retries stay one event
SymFeatureMechanismStatus
LNInstant LightningAccept and pay out Bitcoin over Lightning. Atomic settlement, zero confirmations, sub-cent fees. On-chain fallback is one parameter.LIVE
ASAuto SettleCustomer pays any accepted coin. You always receive the settlement coin you configured — pay-with-BTC, get-USDT. Swap runs at checkout, no extra setup.LIVE
APAuto PayoutSet a balance threshold. We sweep to your cold wallet the moment you hit it. 30-minute cooldown on failure. No manual clicks, no scheduled cron.LIVE
SRSigned ReceiptsEvery PAID payment gets an Ed25519-signed receipt. Verify offline with our public key. No other gateway in our category ships this.LIVE
NKNo-KYC ForeverEmail + password, that's it. No documents, no verification wall, no volume gates. We don't touch your customers' identity — your gateway, your rules.LIVE
DWDeterministic WebhooksEvery webhook carries a SHA-256 event_id derived from (event_type, entity_id). Retry 1,000×, same id. True idempotency without an extra DB column.LIVE