[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Record e-Boekhouden invoice payments from a list

> Match a payout report or cash list to open e-Boekhouden invoices and book each payment on the right ledger. Mismatches wait for you.

Source: https://cotlet.dev/integrations/e-boekhouden-api-mcp-server/record-invoice-payments

Payments that arrive outside your bank feed, such as a payment provider payout or a cash book, have to be matched to open invoices one by one.

Cotlet does it in your own e-Boekhouden account with list\_outstanding\_invoices, list\_ledgers and create\_mutation, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=e-boekhouden) [All e-Boekhouden tools](https://cotlet.dev/integrations/e-boekhouden-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can e-Boekhouden do this on its own?

e-Boekhouden links banks to the administration so bank lines need less entry, and its API has POST /v1/mutation with the type Invoice payment received (checked 14 Oct 2026). Neither handles a payout report that sits outside the bank link. The API needs your own code and token; there is no MCP server.

## How you do it in e-Boekhouden today

1. Open the list of unpaid invoices, which e-Boekhouden keeps so you can see which invoices are still open and what action is needed.
2. Find the invoice that belongs to the payment by its invoice number or the relation.
3. Book the payment against that invoice in your administration, on the ledger where the money landed.
4. Check that the invoice no longer shows as open, then move on to the next line of the report.
5. With a long report this repeats dozens of times, and one mistyped invoice number books a payment on the wrong client.

## How to record e-Boekhouden invoice payments from a list

Prompt

```
For each payment in this payout report, find the open invoice with that number and book an Invoice payment received on my bank ledger. Skip any amount that does not match the open invoice.
```

1. 01  
### Load the open invoices  
list\_outstanding\_invoices is called for debtors and every invoice number in your report is looked up in that list. A number that is not open is reported as already paid or unknown.
2. 02  
### Compare the amount  
The payment amount must equal the open amount. A short or partial payment is not booked; it is listed with the difference so you decide what to do.
3. 03  
### Find the target ledger  
list\_ledgers gives the ledger ID of the bank or payment-provider account you named, and the agent stops if two ledgers match your description.
4. 04  
### Book one mutation per run  
create\_mutation records the payments of the report with the invoice number on each row, using the report date. It waits for your OK by default because it changes your books.
5. 05  
### Re-check the open list  
The agent reads the outstanding invoices again and confirms that every booked invoice is gone from the list.

### What you get back

Example data

```
Payments in the report: 6
Booked 5 on ledger 1155 (payout account), total EUR 4,210.00
- 2026-0143 Studio Noord BV: EUR 1,028.50
Left for you 1:
- 2026-0151 Bakkerij Smit: report says EUR 300.00, invoice open for EUR 363.00
```

### Other ways to ask

- Do the same for supplier invoices I paid: use Invoice payment sent and the creditor list.
- Only check the report and tell me which payments match, without booking anything.
- Every Friday, take the payout CSV in this folder and book the matching payments.

## What e-Boekhouden allows, and what to know first

- e-Boekhouden has seven mutation types: invoice received, invoice sent, invoice payment received, invoice payment sent, money received, money sent and general journal entry.
- For the types Invoice payment received and Invoice payment sent, each row must carry the invoice number it pays.
- The outstanding invoices call returns creditors or debtors, chosen by one parameter, and can be filtered to one invoice number.
- A mutation needs a type, a date and a ledger; the amounts on its rows can be entered including or excluding VAT.
- The API has no endpoint to delete a mutation, so a wrong booking is corrected in e-Boekhouden.

create\_mutation asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: [e-Boekhouden API reference (OpenAPI)](https://api.e-boekhouden.nl/openapi/v1.json) · [e-Boekhouden: Facturatie (unpaid invoices)](https://www.e-boekhouden.nl/functies/facturatie) · [e-Boekhouden: Boekhouden (bank link)](https://www.e-boekhouden.nl/functies/boekhouden)

## Call create\_mutation from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/e-boekhouden/ledgers/1155/mutations \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"3","date":"2026-10-12","description":"Payout 12 Oct 2026","rows":[{"invoice_number":"2026-0143","amount":1028.5,"description":"Payment Studio Noord BV"}]}'
```

Example response

```
{
"mutation_id": 5513,
"type": "3",
"date": "2026-10-12",
"ledger_id": 1155,
"description": "Payout 12 Oct 2026",
"rows": 1,
"amount": 1028.5
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is e\_boekhouden\_write → create\_mutation. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/e-boekhouden-api-mcp-server.md#automations)

## e-Boekhouden tools this automation uses

__Cotlet e-Boekhouden tools used to record e-Boekhouden invoice payments from a list__
| Tool | Parameters |
| --------------------------- | --------------------------------------------------------------------------------------------------------- |
| list\_outstanding\_invoices | cred\_deb, invoice\_number, limit, offset |
| list\_ledgers | limit, offset |
| create\_mutation | type, date, ledger\_id, rows, description, relation\_id, invoice\_number, in\_ex\_vat, payment\_reference |

[All 14 e-Boekhouden tools with descriptions](https://cotlet.dev/integrations/e-boekhouden-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect e-Boekhouden to Cotlet?

Yes. You sign in to e-Boekhouden yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get e-Boekhouden once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More e-Boekhouden automations

- [Create e-Boekhouden invoices from a list](https://cotlet.dev/integrations/e-boekhouden-api-mcp-server/create-invoices-from-a-list.md)
- [e-Boekhouden API and MCP server: every tool](https://cotlet.dev/integrations/e-boekhouden-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to e-Boekhouden.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with e-Boekhouden.

[Sign up free](https://cotlet.dev/app/signup?app=e-boekhouden)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
