The pain
Your platform wants to offer an assistant that moves money, but not to build governance, approvals and proof.
Who uses it
The business owner, inside your app.
Who buys it
An online accounting firm, a fintech or a bank with business customers.
The gain
The customer sets payees, caps and expiry; the assistant pays and collects inside them; your app shows the history.
The flow, side by side
Your assistant, their mandate, our checks.
This page sells what runs underneath. The assistant and the app are yours; distribution through your platform is a pilot.
01Customer
Signs the mandate
In your app the owner signs a mandate: listed payees, a per-transaction and a monthly cap, 90 days. The consent page is CodeSpar's.
mnd_demo_pj · 90 days02Your assistant
Pays the month
Your assistant opens a session for that customer and pays the month's boletos through codespar_pay.
codespar_pay · boleto03CodeSpar
Checks every payment
The payee must be in the signed list and the caps apply. Outside the list it is refused; above the per-transaction cap it waits for a person.
payees · caps · receipts04Your platform
Shows the history
Payments, receipts and charges received appear in your app. Distribution through your platform is a pilot.
Pilot · integration
Behind it
Mandate, payees, approvals, receipts.
The customer's rules live in a mandate they sign. CodeSpar checks every payment against it; your platform owns the assistant and the screens.
SDK example · demo data · not run on this page
What exists today
Exists, sandbox, pilot or direction: one label per control.
What you can run with a test key today, what runs in the sandbox, what depends on a pilot or an integration, and what is only a direction.
Cookbook
One session per customer, under their mandate.
Each business customer signs a mandate on the consent page; your assistant opens a session for that customer and pays in plain language. Above the per-transaction cap the payment waits in the Dashboard; a payee outside the mandate is refused.
- A test keyFrom the Dashboard. Test keys are free; nothing moves real money.
- A mandate per customerPayees, per-transaction and monthly caps, validity. The Dashboard opens the consent page; your customer signs it.
- Your customer's idThe session's user id: one session per business customer.
// 1 · your customer signed mnd_demo_pj on the consent page: listed payees, R$ 8,000.00 per transaction, R$ 40,000.00 a monthimport { CodeSpar, isApprovalRequired } from "@codespar/sdk";const session = await new CodeSpar().create("cust_pj_0412", { preset: "brazilian" }); // 2 · your assistant pays for that customer, in a session under their user idconst run = await session.send("pay this month's rent boleto for the workshop");const pay = run.tool_calls.find((c) => c.tool_name === "codespar_pay"); // 3 · under the caps: paid · above the per-transaction cap: waits for approval · payee not in the mandate: refusedif (pay && isApprovalRequired(pay.output)) console.log(pay.output.approval_id, pay.output.expires_at);else if (pay) console.log((await session.paymentStatus(pay.id)).payment_status); // "succeeded"SDK example · demo data · not run on this page
Related use cases