Give each AI agent a key and a budget. It posts a memo when it spends. You get one daily digest: who spent what, and whether a rule was broken.
Get an agent keyAny bank, any card, read-only. Every charge your agents make lands in one ledger, whichever account it came from.
One HTTP call when money leaves: amount, merchant, what it was for. API credits, listing fees and domains count too, not just card swipes.
One message a day. Spend by agent and by task, memos that never matched a charge, charges no agent claimed, rules that failed.
The product is the mismatch. Rails already have limits; what they don't have is the agent's own "why", and the line that says a charge showed up with no why at all.
Leashd digest · Thu Sep 10 Sable $247.96 across 2 charges Etsy $29.00 "shop onboarding fee" matched GoDaddy $218.96 no memo from any agent Rules per_txn_max $200 FAILED GoDaddy $218.96 (Sable) Unmatched memos 0 Month to date: $247.96 of $500 budget
One endpoint. Give your agent a key, have it call this when it spends. Repeats with the same external_ref are ignored, so retries are safe.
curl -X POST https://leashd-api.vercel.app/api/memo \
-H "Authorization: Bearer $LEASHD_AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount": 12.34, "merchant_hint": "OpenAI",
"task": "nightly embeddings", "cost_type": "api",
"external_ref": "run-2026-09-12"}'
→ 201 {"id":"…","posted_at":"…","agent":"my-agent"}
Annual is two months free. Early-access accounts are free until the dashboard ships. Have an account? Ten minutes to your first matched memo.