Skip to main content
AlgoVoi supports three recurring-style models. Choose based on who pays and how they fund.

Recurr — human-facing invoice subscriptions

Recurr generates a fresh payment link each billing cycle and delivers it to the customer. The customer pays from their own wallet. AlgoVoi never holds keys or standing authority.

How it works

  1. Merchant creates a customer (wallet address) and a subscription (amount, chain, cadence)
  2. Each cycle, Recurr generates a standard payment link and emails it to the customer
  3. Customer clicks the link and pays on-chain — same flow as any AlgoVoi checkout
  4. Recurr marks the invoice paid and schedules the next cycle

Subscription lifecycle

Creating a customer

Creating a subscription

amount_minor is in microunits (1,000,000 = 1.00 USDC). notify_lead_hours controls how early the invoice-ready email is sent before the due date.

Dunning

When an invoice is unpaid past the cycle window, Recurr sends follow-up emails on an exponential backoff schedule (1 day, 3 days, 7 days). After the configured maximum attempts the subscription moves to cancelled.

Customer self-cancel

Every subscription includes a cancel_url — a single-use link in every invoice email. Clicking it shows a confirmation page; submitting cancels immediately and rotates the secret so the link cannot be replayed. No login required.

Customer portal

recurr.algovoi.co.uk lets customers connect a wallet and view or cancel all subscriptions across every merchant that has billed that wallet. Supported wallets:
  • EVM (Base, Tempo, ARC testnet): MetaMask
  • Solana: Phantom
  • Algorand / VOI: AlgoVoi Extension, Pera, Defly, Lute
  • Stellar: Freighter, Albedo, xBull, LOBSTR
  • Hedera: HashPack, Blade, Kabila (via WalletConnect)

Webhooks


MPP subscriptions — agent-native standing authority

MPP subscriptions are designed for AI agents paying for resources autonomously. They follow the paymentauth.org MPP spec with intent="subscription", meaning the full lifecycle — authorisation, activation, and periodic pulls — happens without human intervention.

How it works

  1. Challenge — the agent calls a subscription resource and receives a 402 with an MPP challenge:
  2. Authority tx — the agent signs an on-chain transaction that grants AlgoVoi permission to pull amount each period. This is an approve/allowance tx (not a payment tx).
  3. Credential post — the agent re-submits the request with Authorization: Payment containing the authority tx ID and signed proof.
  4. Activation (atomic with first-period charge) — AlgoVoi verifies the authority tx inline, then executes the first-period pull on chain synchronously before returning. Activation succeeds only when the first pull is broadcast-accepted by the chain (the “soft success” threshold). The response carries status: "active", a base64url subscriptionId, a first_pull_tx_id, and a Payment-Receipt header. A background finality monitor watches the first-pull tx until the configured per-chain depth is reached; if the tx is dropped or orphaned before finality, the subscription is flipped to status: "revoked" and the agent must restart with a fresh authority.
  5. Autonomous renewals — AlgoVoi’s pull reaper fires every 120 seconds, finds active subscriptions where next_due_at ≤ now (next_due_at = activation_anchor + 1 period after the first-period charge above), executes the on-chain pull, and advances next_due_at anchor-relative. Missed periods don’t accumulate authority — a delayed reaper skips past missed boundaries to the next future one in a single step (per draft-payment-intent-subscription-00 L422-425).

Resource setup

Mark a resource as a subscription when creating or updating it via the API:
sub_period_unit accepts day, week, or month.

Wire format

An MPP subscription challenge looks like this:
When the agent posts a valid credential, the gateway returns HTTP/1.1 200 OK with:
subscriptionId is the base64url-no-padding form of an internal UUID per draft-payment-intent-subscription-00 §Subscription Identifier. The same value is also returned in the Payment-Receipt response header so clients following the I-D.httpauth-payment receipt convention can consume it without parsing the JSON body. first_pull_tx_id is the chain tx that collected the first period’s charge as part of activation; clients may inspect it on-chain or wait for the finality monitor to mark first_pull_finalized_at (the same status surfaces through the revoked lifecycle transition if finality is never reached).

Idempotency

Subscription activation honours the Idempotency-Key request header per draft-ietf-httpapi-idempotency-key-header §2.5:
  • Same Idempotency-Key + same request payload (resource + credential) → cached 200 response, byte-identical to the first activation (same subscriptionId, same Payment-Receipt).
  • Same Idempotency-Key + a different request payload → 422 Unprocessable Entity. The key has been reused with a new payload, which the spec treats as misuse.
  • No Idempotency-Key header → a credential replay of the same challenge is rejected as 401 (single-use per draft-payment-intent-subscription-00 §Single-Use). Send a fresh challenge to retry.
Keys are tenant-scoped, so two tenants can independently use the same opaque string without colliding.

Subscription lifecycle

revoked is distinct from cancelled and expired: it signals that activation returned success but the on-chain first-period charge subsequently failed to reach finality. Agents that see status: "revoked" on a subscription they believed was active should treat it as a hard fail and restart with a fresh authority.

Supported chains

All 8 AlgoVoi chains support MPP subscriptions: Algorand, VOI, Hedera, Stellar, Base (EVM), Solana, Tempo (EVM), ARC (EVM testnet).

Key differences from Recurr

  • No emails, no dunning, no customer portal — fully autonomous
  • The authority tx is a one-time on-chain approval; subsequent pulls need no agent involvement
  • The agent receives a subscriptionId it can reference to check status or request cancellation
  • Designed for the agent-to-agent and agent-to-service payment use case

Choosing between the two models

Use Recurr when:
  • Customers are humans who expect to review and approve each payment
  • You want dunning, email notifications, and a self-service cancel page
  • The subscription is between a merchant and an end customer
Use MPP subscriptions when:
  • The payer is an AI agent operating autonomously
  • You are building a tool or resource priced per period in an MCP/RPC context
  • You want zero human friction and fully autonomous billing

See also