A payment page for every payment.
Create a payment with one API call and Tuppence gives you a hosted page to send your customer to — branded as you, with 3-D Secure handled and a receipt at the end.
$ curl https://api.tuppence.ai/v1/payments \ -H "Authorization: Bearer $TUPPENCE_SECRET_KEY" \ -H "Idempotency-Key: order-1042" \ -H "Content-Type: application/json" \ -d '{"amount": 2000, "currency": "gbp", "description": "Order 1042"}' { "id": "pay_01K…", "amount": 2000, "status": "requires_payment_method", "approval_url": "https://pay.tuppence.ai/pay/pay_01K…", … }
Create the payment
Your server calls POST /v1/payments with an amount in pence and an idempotency key, so a retried request never charges twice.
Send them to pay
Redirect your customer to the payment’s approval_url. The page shows your name, logo and colour, and runs the bank’s check if the card needs one.
Hear that it worked
A signed payment.succeeded webhook reaches your server, your customer gets a receipt, and the money joins your balance.
The hard parts of taking a card, done.
Strong Customer Authentication
When a card needs 3-D Secure, the payment waits for the bank’s check and carries on when it passes.
Saved cards
With the customer’s agreement — the terms are shown on the page — save their card and charge it later with /v1/payments/charge_saved.
Authorise now, capture later
Hold the amount when the order is placed and capture it when you ship, or cancel and release it.
Payments an agent starts
An AI agent can create a payment through the API or the MCP server, and the payer approves it on the hosted page. Saved cards are charged only under terms the payer agreed to.
Your brand on the page
Display name, logo, accent colour (kept readable automatically), support contact and the text on your customer’s statement.
Receipts
A receipt email and a receipt page for every successful payment, in your branding.
Card-testing protection
A burst of declined cards pauses the payment link it came through and alerts you, so it can’t be used to check stolen cards.
Unusual charges flagged
Charges that don’t fit an account’s or an agent’s normal pattern are flagged, and can require the customer to authenticate again.
Every step has an endpoint.
Test mode behaves like live: test cards, test payouts, a test clock and helpers that open disputes or settle payouts on demand. Full reference in the docs.
API reference- POST /v1/payments
- POST /v1/payments/{id}/confirm
- POST /v1/payments/{id}/capture
- POST /v1/payments/{id}/cancel
- POST /v1/payments/charge_saved
- POST /v1/refunds
- GET /v1/balance
- POST /v1/payouts
- POST /v1/disputes/{id}/submit
- POST /v1/webhook_endpoints
- Stripe’s card fields on the pay page and inside your own checkout (
@tuppence/js) - Apple Pay and Google Pay
Get paid to accept card payments.
Test mode is open today. Join the waitlist and we’ll tell you when your account can take real payments.