Customer portal — recurr.algovoi.co.uk/mandate
End-users (the humans authorising the mandate) self-serve at: https://recurr.algovoi.co.uk/mandate The page accepts a mandate ID (UUID) and shows:- Current balance and currency (GBP pence resolution)
- Status (
active/suspended/revoked) - The mandate JWT (copyable — paste into your agent’s env)
- Last 10 charges (amount, chain, tx id, timestamp)
- Top up via PayPal button (initiates PayPal Orders v2 flow, captures on return)
How it works
Token format
The mandate token is a stateless JWT, signed with a separateMANDATE_JWT_SECRET (key-separated from the gateway’s session JWTs). Format:
jti— UUID stored on themandatesrow (pre-allocated at issue time, primary index for fast revocation lookup)sub— themandate_accounts.idof the human who owns ittyp_claim— token type marker; the verifier rejects anything other thanmandate_v1exp— optional expiry; if omitted, the token is non-expiring (caps + balance still enforce limits)
ttl_secs at issue time) and merchant whitelist as primary mitigations.
Spending the mandate — agent integration
The agent calls a single endpoint:access_token is the same short-lived JWT that the resource endpoint accepts — the agent then calls the resource with Authorization: Bearer {access_token}.
Per-call guards
max_amount_minor— agent self-cap. If the resolved resource costs more than this, the call returns402and no charge occurs.- Mandate balance — if
amount_minor > balance_minor, returns402. - Period cap (daily/weekly/monthly) — if this charge would push
period_spent_minorover the cap, returns402. - Merchant whitelist — if
merchant_whitelistis non-null andtenant_idis not in it, returns403.
Response codes
Operator workflow — internal API
All admin operations are at/internal/* and require the admin bearer token.
1. Register a human account holder
{ id, email, status, created_at }. Save the id — needed for issuance.
2. Issue a mandate
mandate_id, the JWT token (this is the only time it is returned — store it now or have the user load recurr.algovoi.co.uk/mandate?id={mandate_id} to retrieve it), balance_minor, currency, period, status.
3. Top up balance
Two paths: Via PayPal (customer self-serve) — direct the user torecurr.algovoi.co.uk/mandate?id={mandate_id}. They click “Top up”, complete PayPal checkout, balance credited on capture.
Via admin API (operator-credited) — for invoiced enterprise accounts:
4. List, view charges, revoke
Period semantics
Theperiod field controls the rolling spending cap:
Reset is lazy —
period_spent_minor is rolled forward on the next POST /mandate/pay after the boundary, not on a cron. Analytics queries that read period_spent_minor directly may see stale values between the boundary and the next charge.
Custody
APM is the only AlgoVoi product designed for AlgoVoi to take custody of funds — and it is in development, not yet live (see the status note at the top). This is the deliberate trade-off that will make agent-native fiat spending possible — agents cannot hold private keys or fiat accounts, so a regulated custodian has to stand in. Everything in this section describes the launch design, not a service operating today.Where the money will sit at each stage (at launch)
Custody model vs the other AlgoVoi products
Safeguarding
The fiat-balance custody puts APM in a different regulatory bucket from the rest of the platform:- UK: holding pre-paid customer balances triggers EMR 2011 safeguarding obligations under regulations 20-21 (the funds-received and segregation rules), with PSR 2017 reg 23 covering any non-e-money payment-transaction funds (via EMR 20(6)). This is the EMR/PSR regime — NOT the CASS 7 client-money regime which governs investment business. AlgoVoi is in the process of obtaining the relevant authorisation (status: in preparation — see Compliance).
- EU: equivalent treatment under PSD2 / EMD2 if offering APM cross-border to EU residents.
- US: state money-transmitter licensing if APM is offered to US residents; not currently available in the US.
- Per-mandate balance cap (default £100): enforced at issuance, admin top-up, PayPal initiate, and PayPal capture — every code path that increases
balance_minor. Config:MANDATE_MAX_BALANCE_MINOR. - Per-account aggregate balance cap (default £300): sum of
balance_minoracross all active mandates owned by the same human; same enforcement points. Config:MANDATE_MAX_ACCOUNT_BALANCE_MINOR. - Per-account mandate-count cap (default 3): enforced at issuance only — an account holding 3 active (non-revoked) mandates cannot issue a fourth. Config:
MANDATE_MAX_PER_ACCOUNT.
0 to disable that check once authorisation is granted or a higher-trust account is whitelisted.
Per EMR 2011 reg 21(2)(a), safeguarded funds must be segregated by the end of the fifth business day following the day on which the e-money was issued. At launch, AlgoVoi’s PayPal-capture flow will credit balance_minor synchronously on the same business day funds settle to the safeguarding account.
Hot-wallet security
The custodial hot wallets that pay merchants on-chain are operationally separated from the customer balance accounting:- Hot wallet float per chain, not per user. The £15 mandate has no specific crypto reserved against it — the wallet holds enough liquidity in aggregate to settle expected daily volume, with overnight cold-storage sweeps for the excess.
- HSM-backed signing for high-value chains (Base, Algorand mainnet, Stellar); software signing with key-encryption-at-rest for testnets and low-value chains.
- Rate limits at the facilitator prevent a compromised gateway from draining the float — per-chain daily cap and per-tx maximum.
- No user keys held. APM never asks the user for, generates, or stores any private key on the user’s behalf. The user’s relationship with AlgoVoi is purely fiat-balance-based.
Evidence the FCA will look for
Safeguarding readiness is not a one-off setup — the FCA expects ongoing controls evidence. The minimum documented set for APM:- Designated safeguarding account at the bank with a letter from the bank confirming designation per EMR 21(3)(a). Internal labelling is not sufficient; the account name or accompanying bank letter must make the safeguarding purpose obvious.
- Chain-by-chain reconciliation from the mandate ledger (
balance_minoraggregated) throughmandate_charges.tx_idto the on-chain wallet balance — performed and recorded daily, with discrepancies investigated within one business day. - Key-management governance — who can sign, signing thresholds (m-of-n for HSM-protected wallets), key rotation cadence, incident response.
- Sweep and float-management policy — when excess float moves to cold storage, who authorises, how reconciliations follow the funds.
- Wind-down plan showing how every active mandate would be made whole if AlgoVoi ceased operations or the wallet stack failed (refund route, communication, timeline).
- Books and records per EMR 21(5) — ledger entries that identify each user’s safeguarded balance, retained per the FCA’s record-keeping rules.
What this means for users
The portal at recurr.algovoi.co.uk/mandate makes the trade-off explicit:- You don’t need a crypto wallet to use APM. That’s the value proposition.
- You give up custody of your fiat balance during the period it sits with AlgoVoi.
- Unspent balance is refundable on mandate closure (subject to identity verification) — EMR 2011 reg 39 redemption rights apply.
- Spent balance is refundable for at-fault failures — if AlgoVoi delivers the wrong payout, the merchant doesn’t deliver the resource, or a double-charge occurs, you get a refund of the GBP amount from AlgoVoi’s reserves. The on-chain payout to the merchant cannot be reversed, but you the user are made whole. This is required under CRA 2015 fairness rules; “non-refundable once spent” as a blanket term is not enforceable in UK consumer law.
- Choose your cap deliberately. A £100 mandate exposes £100 of custody risk; a £10 mandate exposes £10. For untrusted agents, start small.
What this means for operators
If you’re offering APM to your own customers (white-label viamerchant_whitelist), you need to think about three things:
- Disclosure — your terms must tell the end-user that funds are custodied by AlgoVoi, not by you. Standard template clause available on request.
- Float planning — APM revenue lands in AlgoVoi’s account, not yours. Settlements to you happen on-chain when the agent buys your resources. Tax and accounting follow standard crypto-settlement rules for your jurisdiction.
- Refund routing — if your customer asks for a refund, you process it through your own payment rails (or via AlgoVoi if AlgoVoi is the merchant of record for the resource). The mandate balance does not flow back automatically — it’s already been spent on-chain.
Security model
Refund model:
- Unspent balance — refundable on mandate closure subject to identity verification (EMR 2011 reg 39 redemption rights).
- At-fault failures (wrong merchant settled, resource not delivered, double-charge) — refundable from AlgoVoi reserves via
POST /internal/mandate-charges/{id}/refund. The on-chain payout to the merchant is irreversible, but AlgoVoi credits the user back in GBP and treasury reconciles. Required under CRA 2015 — blanket “non-refundable” terms are unenforceable. - Successful purchases where the customer changes their mind — no automatic refund (the merchant has been paid, the resource was delivered). The customer’s recourse is with the merchant.
period_cap_minor and ttl_secs for new accounts.
See also
- Architecture — payment protocols overview for how APM relates to x402, MPP, AP2, A2A
- Recurring payments for the Recurr (human-paid) and MPP-subscription models