Automate Stripe work with your agents
Maplith maps how Stripe’s payments, customers, invoices and subscriptions join your accounting, web shop, CRM and recurring orders, so your agent knows where each thing is and how far to trust each join.
| Way | Status | What it means |
|---|---|---|
| Your own agent | Available | Stripe connector in Claude or Stripe plugin in ChatGPT, read-only. |
| Export files | Available | CSV exports: the last three months. |
| Maplith reads Stripe itself | Rolling out | Switched on workspace by workspace. Ask Maplith at [email protected] to switch it on for yours. |
What your agents do with Stripe and Maplith
What starts the work, what your agent does with Maplith, and how it ends. Each flow uses the Stripe data and joins described below.
A payout lands short in the bank
Trigger: A Stripe payout in the bank is lower than the payments behind it.
With Maplith:
- Route:
routefrom the bank line to the payout, by amount, date and trace id, then to its balance transactions by payout id. - Ask:
ask: “which balance transactions make up a payout, and where do fees, refunds and disputes show?” The answer comes from the map, with citations. - The map:
get_objecton the payout says its balance transactions join it by the automatic payout id; the agent reads them in Stripe with its own read key. - Record and value:
record_actionrecords what the agent found, and how the check ended.
Result: The gap is explained from Stripe’s own balance, by reporting category.
Paid in Stripe, open in the accounts
Trigger: A Stripe invoice is paid, and the same invoice still shows as open in your accounting system.
With Maplith:
- Findings: Where a scan found Stripe and your accounts disagreeing, a finding with its evidence and a recommendation.
- Route:
routefrom the Stripe invoice to the sales invoice in your accounting system, by invoice number. - The action gate:
request_actionfor an operation you declared, such as a task for the bookkeeper, decided by the key’s policy. - Record and value:
record_actionrecords that the task went to the bookkeeper.
Result: The bookkeeper gets the invoice, the payment and the reason in one task.
A customer says they were charged twice
Trigger: A customer writes to support: two charges for one order.
With Maplith:
- Task context: Your agent passes the case to
get_task_context, and gets the playbook for payment questions, if you put one in use, and what its key may do. - Route:
routefrom the helpdesk conversation to the Stripe customer by email, then to their payments by customer id. - The map:
get_objecton the payment says the order id sits in its metadata; the agent checks both payments against the shop order with its own read key. - The action gate: A refund waits for a person’s approval when you set it to. Maplith never issues it: your agent does, only with write access you give it in Stripe separately, once approved.
- Record and value:
record_actionrecords how the case ended, and the action log shows who approved the refund.
Result: The customer gets an answer and, where one is due, a refund that someone approved.
How it connects
Read-only, through access you already have. Until Maplith’s Stripe integration reaches your workspace, Maplith holds no Stripe credential.
- Connect your assistant to Maplith over MCP, by signing in or with an agent key.
- Your agent reads Stripe with the Stripe connector in Claude or the Stripe plugin in ChatGPT, read-only.
- With your approval it sends what it read; Maplith builds the map and deletes the files again.
When Maplith’s Stripe integration reaches your workspace
- In the Stripe Dashboard, open the API keys page and click Create restricted key.
- When Stripe asks what the key is for, choose Authorizing agent access to your account.
- Enter a name in the Key name field.
- Set Read on Charges, Customers, Invoices, Subscriptions, Balance and Payouts, and leave everything else at None.
- Click Create key, complete the two-factor verification, and click the key value to copy it. Stripe shows it only once.
What Maplith’s Stripe integration never reads or does
- Anything that creates, changes, schedules or deletes: only the reads Maplith needs for the map are called, whatever else Stripe's server offers.
- Another Stripe account: Maplith never reads a connected account.
- The key itself after it is stored: it is sealed and never shown again.
The permissions it asks for, and why
| Permission | Why |
|---|---|
| Charges: Read | Payments: one row per charge, with its status and any refund. |
| Customers: Read | Customers: who paid, by customer id. |
| Invoices: Read | Invoices: Stripe Billing invoices, by number. |
| Subscriptions: Read | Subscriptions: each subscription and its status. |
| Balance: Read | Balance transactions: every movement in the Stripe balance, for payout reconciliation. |
| Payouts: Read | Payouts: each transfer from Stripe to the bank. |
What Maplith never reads or does
- Stripe itself: until Maplith’s Stripe integration reaches your workspace, Maplith holds no Stripe credential and never signs in to it.
- Anything that changes Stripe: Maplith never writes there. When your agent acts, it uses access you gave it.
- What you leave out: you decide what your agent shares or an export contains.
Datasets that make a good map
Payments
One row per payment (a charge), including its status and any refund.
- charge id
- payment intent id
- customer id
- customer email (Maplith tries to mask it)
- amount
- currency
- status
- order id in the metadata
Customers
One row per Stripe customer.
- customer id
- customer email (Maplith tries to mask it)
- created date
- metadata keys
Invoices
One row per Stripe Billing invoice.
- invoice id
- invoice number
- customer id
- subscription id
- payment intent id
- status
- amount due
- amount paid
Subscriptions
One row per subscription, with its price and current status. The price id and product id are columns in Stripe's export; a connected scan finds them nested in the subscription's items.
- subscription id
- customer id
- price id
- product id
- status
- current period start
- current period end
Balance transactions
One row per movement in the Stripe balance: payment, refund, dispute, fee, or payout. The automatic payout id, invoice number and order id are columns in Stripe's export only; a connected scan has the source id instead.
- balance transaction id
- source id
- charge id
- payment intent id
- automatic payout id
- invoice number
- order id
- reporting category
- gross
- fee
- net
Payouts
One row per transfer from Stripe to the company's bank account.
- payout id
- arrival date
- amount
- currency
- status
- trace id
The narrowest access Stripe offers for reading
- Charges: Read
- Customers: Read
- Payment Intents: Read
- Invoices: Read
- Subscriptions: Read
- Balance: Read
- Payouts: Read
- Disputes: Read
Questions about Stripe and Maplith
Does Maplith copy my Stripe data?
Which Stripe access does Maplith need?
Charges: Read, Customers: Read, Invoices: Read, Subscriptions: Read, Balance: Read and Payouts: Read. Maplith keeps that access sealed, never shown again and never sent to a model.