Reseller API key required (sk_test_... or sk_live_...).
You purchase vouchers for customers — either as one-off sales or as recurring subscription billing
cycles. You receive one webhook when a partner-initiated cancellation needs your confirmation.Identifiers#
| Field | Used for |
|---|
subscription_access_code | Recurring voucher payments (POST /voucher-payments) |
access_code | Confirming cancellation (POST /subscriptions/cancellation) |
reseller_charge_reference | Unique ID per billing cycle — safe to retry the same cycle |
reseller_subscription_reference | Your recurring-order ID — optional on first cycle, required on cancel confirm |
You receive subscription_access_code when a customer selects your shop on the subscription
checkout page. It is passed as a query parameter on the checkout link (see
Create voucher payment).You do not use partner reference values (SUB-…) — those are partner-facing only.Important: Do not confuse subscription_access_code (billing cycles) with access_code (confirm cancellation). They refer to the same underlying subscription but are used on different endpoints.
Voucher payments#
One endpoint handles both modes. Omit subscription_access_code for one-off; include it for
subscription cycles.One-off#
Up to 5 voucher lines, 5 total vouchers per payment. Debits your wallet by the
denomination total.Subscription cycle#
Exactly one voucher line, quantity 1. Denomination value must be ≥ the subscription
amount. The platform auto-redeems the portion covering the subscription; any excess may remain
as reusable voucher balance (MPV-preserving).Cancellation#
When a partner cancels a live subscription billed through you:1.
You receive subscription.cancel_requested (webhook) 2.
Stop scheduling future charges
Not required in test mode or for subscriptions never billed through you.Important: When you receive subscription.cancel_requested, stop billing immediately and call Confirm cancellation. The partner is not canceled until you confirm.
Webhooks#
Configure test_webhook_url and live_webhook_url in the reseller dashboard.Important: Always verify webhook signatures before processing events.
Idempotency#
Important: Use idempotency_key on one-off creates and reseller_charge_reference per subscription cycle. Retries with the same key return the original result — you will not be charged twice for the same cycle.
idempotency_key on voucher payment create — scoped to (reseller, environment)
reseller_charge_reference per subscription cycle — scoped to (subscription, reference)
Errors#
error_code | HTTP | When |
|---|
insufficient_balance | 400 | Wallet cannot cover purchase |
subscription_not_active | 422 | Subscription is canceled or completed |
subscription_cycle_limit_reached | 422 | All cycles already processed |
subscription_requires_single_voucher | 422 | Recurring payment must have one voucher, qty 1 |
subscription_not_owned_by_reseller | 422 | Subscription billed by another reseller |
Validation errors (422) include unknown subscription_access_code or denomination too small.Setup#
Modified at 2026-07-21 13:41:21