- Personal use: you want an AI agent to spend your own money within bounds you approve, with proof.
- Testing without a merchant account: you are a developer and want to exercise a real card charge end-to-end without building a full PSP integration or opening a merchant account.
The core idea
Who is who
The no-code route: approve in the dashboard
If you are the only party, you do not need to build the mandate and approval calls yourself. The dashboard does them for you:- Sign in to the dashboard and create or select your Organization.
- In the Test or Live section, open Personal card limits.
- Set the bounds: what the agent may do (for example
card.charge), the maximum amount, the currency, and how many days the mandate stays valid. - Click Create and approve with passkey and approve the exact bounds with WebAuthn.
ACTIVE (or SCHEDULED) with no keys to generate, no assertions to sign, and no command line. Test approvals are free. Live requires an active subscription, and the first approval of a live mandate costs $0.35 USD.
Your agent still calls the authorization API when it wants to act, authenticated with an API key from the same dashboard section. Skip to Step 3.
The steps below are the API route. Use them for your own integration, or when your agent software creates mandates itself.
Step 1: Create a bounded mandate
You define what your agent is allowed to do. Keep the bounds tight: a max amount, an allowed action, and a validity window.PENDING_APPROVAL.
Step 2: Approve the mandate
Send yourself through the hosted approval session and approve the exact bounds with WebAuthn. A browser return is not approval evidence. Wait for a server-side read to reportACTIVE or SCHEDULED before proceeding. See the quickstart for the full approval flow.
Step 3: Authorize a concrete action
Your agent asks Attesso whether a specific action is allowed:can_execute is exactly true and before execute_before. A DENY or INDETERMINATE means do not charge the card.
Step 4: Charge your card
Now your agent performs the charge on the card you gave it. The request must be derived from the same immutable proposed action you sent to Attesso. Never rebuild it from mutable UI or agent state.Example: charge a virtual credit card
A virtual credit card is a single-use or limited card you create in an app such as Revolut, Monzo, or your bank. It is ideal for a one-off test charge or for giving your agent a bounded spending surface.Example: charge a personal card
The same pattern applies if your agent holds a personal debit or credit card through a card-issuing API. The card is just the rail; Attesso’s role is unchanged.Step 5: Report finality
After the card provider returns a definite result, close the loop.Commit (the charge was accepted)
Cancel (the charge was declined, or you aborted)
If the card provider times out
A timeout is not proof the charge did not happen. Reconcile before committing or canceling. Query the card provider by yourexternal_action_reference. See the reconciliation guide for the exact decision table. Never charge twice while the outcome is ambiguous.
Testing without a merchant account
If you are a developer who wants to exercise a real card charge without building a full PSP integration, a virtual card is the fastest path:- Create a temporary virtual card in Revolut (or similar) with a small limit.
- Give the virtual card to your agent as its payment rail.
- Run the loop above against the free test environment (
att_test_key). - The charge hits the virtual card; you see the full authorize → execute → commit lifecycle with real evidence.
- Delete the virtual card when done.
emu_, so you validate the actual charge path without opening a merchant account or integrating a full PSP.
Personal use: is this for you?
Yes, if you want an AI agent to spend your money with your explicit approval and a verifiable record. Start with the dashboard route above; it needs no integration. Create an API key in the dashboard when your agent software is ready to call the authorization API. The flow is then the same as any other Attesso integration:- You define the bounds and approve them.
- Your agent spends within those bounds.
- Attesso proves the agent stayed inside them and signs the evidence.
What Attesso does not do
Attesso does not execute payments, issue cards, hold payment credentials, or connect to your card account. It never sees your card number. It only authorizes the action and produces evidence. You keep your card, your funds, and your compliance responsibility.Next steps
- Quickstart: the full test loop with an emulator.
- Bind to your PSP: the same pattern with Stripe, Adyen, or any provider.
- Reconcile outcomes: handle timeouts and ambiguous results safely.
- Verify evidence: check a signed bundle yourself, without trusting Attesso.

