for merchants
Create a plan
Start getting paid on-chain in minutes. A plan is a PDA ["plan", merchant, plan_id] holding the mint, amount and period. Terms are immutable: a new price is a new plan_id. You sign with your wallet; subscriber allowance is always exactly one period.
My plans
—
fetchPlans · filtered by wallet
My invoices
—
fetchInvoicesOfMerchant · count
Domains
—
GET /api/widget/sites?merchant
Est. per period
—
sum of plan amounts × 1 period
connect wallet loading… ● live
Live: counts come from RPC + the widget API once the wallet connects. Per-period is the raw sum of your plan amounts × 1 — not a forecast.
Module 01
Plan creator
Set the mint, amount and billing period. The plan PDA is derived deterministically.
ATOMIC PROGRAM INSTRUCTION: create_plan
Module 02
Batch charging & invoicing
Issue invoices against active subscriptions, then charge up to 8 per transaction.
ATOMIC PROGRAM INSTRUCTION: charge_invoice · batch (max 8)
Recurring invoices
Issue an invoice against a subscription (metadata hash lands on-chain); batch-charge up to 8 invoices in one transaction. A paid invoice + metadata is a verifiable receipt.
My invoices
No invoices yet — pick a plan, load an active subscription above and issue the first invoice.
Module 03
Widget generator & origin binding
Bind a domain to a plan and paste the snippet. Foreign origins end in 403.
OFF-CHAIN API: domain binding · Ed25519 wallet signature on save
embeddable widget
Sell on your own site
Bind a domain to a plan — the snippet works only there. Plan ownership is verified on-chain when you save.
Connect the merchant wallet first.
After creating
- Your plan appears on the plans list once the transaction confirms.
- Hit the bolt button on the plan card to copy a Blink URL for sharing.
- Collect payments with “Charge now” in My subscriptions once the period elapses.
- Sell on your own site: bind a domain to a plan below, paste the snippet, and see live use-cases on examples — a stolen snippet stops at a 403 page.