Online payments
Hosted pages your customers pay on, and an API for everything else. Refunds, disputes and payouts included.
Take cards from 0.79% — online, through payment links, on subscriptions and by the call for AI. Then earn 0.89% cashback on top, on what you spend with your Tuppence card.
UK consumer debit and credit cards from 0.79%. American Express is 1% more; commercial and foreign-issued cards 2% more. See pricing.
From a link you text a customer to an API an AI agent pays by the call, every payment lands in the same balance and pays out the same way.
Hosted pages your customers pay on, and an API for everything else. Refunds, disputes and payouts included.
Also known as usage-based recurring payments.
Price a call, a token or a task. Customers prepay credit once, at the card rate, and every use after that is free to record.
A REST API with Node and Python SDKs. Amounts are whole pence, every write is safe to retry, and test mode works the moment you sign up.
import { Tuppence } from "@tuppence/node"; const tuppence = new Tuppence(process.env.TUPPENCE_SECRET_KEY!); // A payment link: share its URL, get paid. const link = await tuppence.paymentLinks.create({ name: "Research report", amount: 2000, // £20.00, in pence }); console.log(link.url); // https://pay.tuppence.ai/l/…
import os from tuppence import Tuppence tuppence = Tuppence(os.environ["TUPPENCE_SECRET_KEY"]) # A payment link: share its URL, get paid. link = tuppence.payment_links.create( name="Research report", amount=2000, # £20.00, in pence ) print(link.url) # https://pay.tuppence.ai/l/…
import { Tuppence } from "@tuppence/node"; import { http402 } from "@tuppence/http402"; const tuppence = new Tuppence(process.env.TUPPENCE_SECRET_KEY!); // 50p a call. Unpaid requests get 402 Payment Required, // with a link to pay or a prepaid-credit token to spend. app.get( "/v1/report", http402({ tuppence, price: 50, currency: "gbp", credits: { meter: "report" } }), (req, res) => res.json(buildReport()), );
$ curl https://api.tuppence.ai/v1/payment_links \ -H "Authorization: Bearer $TUPPENCE_SECRET_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"name": "Research report", "amount": 2000}' { "id": "link_01K…", "object": "payment_link", "livemode": false, "url": "https://pay.tuppence.ai/l/…", "name": "Research report", "currency": "gbp", "amount": 2000, "reusable": false, "status": "active", … }
Tuppence publishes a SKILL.md: one file that tells a coding agent how to use Tuppence safely — test keys only, idempotency keys on every write, amounts in pence, and when to ask a person.
Add it to Claude Code
mkdir -p ~/.claude/skills/tuppence && curl -fsSL https://tuppence.ai/skill.md -o ~/.claude/skills/tuppence/SKILL.mdOr give it the tools, through MCP
claude mcp add tuppence --env TUPPENCE_API_KEY=sk_test_… -- npx -y @tuppence/mcp29 MCP tools — payment links, payments, refunds, subscriptions, credit and cards — each limited to what its API key allows. Also packaged for the OpenAI Agents SDK, LangChain and the Claude Agent SDK.
--- name: tuppence description: Take payments with Tuppence — payment links, payments, refunds, subscriptions, metered usage and prepaid credit. Use when the user wants to charge someone, sell access, or bill for usage. --- # Tuppence ## Rules - Use a sk_test_ key unless the user says live. - Send an Idempotency-Key on every POST. - Amounts are integers in pence: £20.00 is 2000. - Refunds and live payments: confirm with a person. ## Take a payment POST /v1/payment_links {"name", "amount"} → url …
T+3 settlement (T+7 in your first week), free and unlimited. Instant payout for 0.99%.
Full or partial, from the dashboard, the API or the iPhone app.
Evidence drafted from the payment’s history. A £15 fee only if it goes against you.
Signed events for everything that happens, retried for three days, with test sends.
Your balance, a live payments feed, links with QR codes, and refunds behind Face ID.
Owner, admin, developer and analyst roles, two-factor sign-in and an audit log.
Disputes, failed payouts and leaked keys, by email, push or Slack.
Move a test account forward a month and watch renewals, retries and payouts happen.
Test mode is open today. Join the waitlist and we’ll tell you when your account can take real payments.