[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 bank transfers as Invoice Ninja payments

> Match your weekly bank transfers to open Invoice Ninja invoices, record each payment with the bank date and reference, and list what has no match.

Source: https://cotlet.dev/integrations/invoice-ninja-api-mcp-server/record-bank-transfers-as-payments

Clients pay by bank transfer, the money lands in your bank account, and the invoice in Invoice Ninja stays Sent until you type the payment in by hand.

Cotlet does it in your own Invoice Ninja account with list\_invoices, list\_payments and record\_payment, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=invoice-ninja) [All Invoice Ninja tools](https://cotlet.dev/integrations/invoice-ninja-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Invoice Ninja do this on its own?

Invoice Ninja matches bank transactions to payments in Banking and Transactions, and bank account sync is listed on Enterprise and Premium only, not on Free or Ninja Pro (checked 14 Oct 2026). The REST API can create payments, on Pro and above. Invoice Ninja has no official MCP server, and nothing reads a list of transfers you paste in.

## How you do it in Invoice Ninja today

1. Open Payments and create a new payment, or open the invoice and choose More Actions > Mark Paid, which records a payment labelled Manual Entry for the full amount.
2. Pick the client first, because every payment belongs to one, then add the invoices it covers. The amount owing is pre-filled for each invoice and you can lower it for a partial payment.
3. Set Payment Date to the day the money arrived, since reports use that date, then choose a Payment Type and put the bank reference in Transaction Reference.
4. Leave Send Email on if the client should get a payment confirmation, or switch it off.
5. A lump sum for several invoices goes in as one payment with each invoice added in the Invoices section. Repeating this for every transfer is the slow part of Friday afternoon.

## How to record bank transfers as Invoice Ninja payments

Prompt

```
Here are this week's incoming bank transfers. Match each one to an open Invoice Ninja invoice by the reference or the exact amount, record the payment with the bank date, and list the lines you could not match.
```

1. 01  
### Read your list  
Your agent takes the bank lines you paste, with date, amount, payer name and reference, and ignores outgoing lines and anything dated before your cutoff.
2. 02  
### Find the open invoices  
list\_invoices runs with status sent and partial, so the agent sees every invoice with a balance, and list\_payments shows what was already recorded for a client so a transfer is never entered twice.
3. 03  
### Match in a fixed order  
An invoice number in the reference wins, then an exact balance for the named client. Two invoices with the same balance, or a payer name that fits two clients, goes to the unmatched list instead of a guess.
4. 04  
### Record each payment  
record\_payment uses the bank date as Payment Date, sets the Payment Type and Transaction Reference, and applies the amount to the invoice. A smaller amount leaves the invoice in Partial; a larger one leaves the extra as an unapplied balance. Each call asks for your OK by default.
5. 05  
### Report what is left  
Unmatched lines come back with the best candidate invoice and why it failed, so you can decide in one pass.

### What you get back

Example data

```
Bank lines: 5, total 5,580.00 USD
Recorded 4 (4,500.00):
- INV-0034 Northwind Studio, 1,200.00, ref "INV-0034 Oct"
- INV-0039 Kestrel Labs, 2,100.00, exact balance
- INV-0037 Orchard & Finch, 300.00, ref "0037"
- INV-0032 Brightwave Ltd, 900.00, partial, 900.00 still owing
Left for you 1:
- 1,080.00 "J FENWICK": two open invoices could fit
```

### Other ways to ask

- Record only transfers that name an invoice number in the reference and list the rest.
- Record the payments but switch off the confirmation email to clients.
- Show me open invoices that no transfer in this list pays, sorted by due date.
- Apply one lump-sum transfer from Kestrel Labs across their three oldest open invoices.

## What Invoice Ninja allows, and what to know first

- Invoice Ninja uses the Payment Date in reports, so a payment recorded with today's date instead of the bank date lands in the wrong period.
- A payment smaller than the invoice balance leaves the invoice in Partial status, and the rest is recorded as a second payment later.
- An Amount Received larger than the invoices it is applied to leaves the extra on the payment, and the payment status becomes Partially Unapplied.
- Send Email is on by default when you enter a payment by hand, and it sends the client a payment confirmation.
- Invoice Ninja only lets you refund amounts that were applied to an invoice, so a mistaken entry on the wrong invoice is fixed by editing or deleting the payment.

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

Sources: [Invoice Ninja Docs: Payments](https://invoiceninja.github.io/docs/user-guide/payments) · [Invoice Ninja Docs: Invoices](https://invoiceninja.github.io/docs/user-guide/invoices) · [Invoice Ninja: Pricing and plan comparison](https://invoiceninja.com/pricing-plans/) · [Invoice Ninja API Reference](https://api-docs.invoicing.co/)

## Call record\_payment from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/invoice-ninja/invoices/INV-0034/payments \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount":1200,"payment_date":"2026-10-12","payment_type":"Bank Transfer","transaction_reference":"INV-0034 Oct"}'
```

Example response

```
{
"payment_number": "0021",
"client": "Northwind Studio",
"payment_date": "2026-10-12",
"payment_type": "Bank Transfer",
"transaction_reference": "INV-0034 Oct",
"amount": 1200,
"status": "Paid",
"applied_to": [
{
"invoice_number": "INV-0034",
"amount": 1200
}
],
"invoice_status": "paid",
"invoice_balance": 0,
"confirmation_email": true
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is invoice\_ninja\_write → record\_payment. Example data.

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

## Invoice Ninja tools this automation uses

__Cotlet Invoice Ninja tools used to record bank transfers as Invoice Ninja payments__
| Tool | Parameters |
| --------------- | ------------------------------------------------------------------------------------------------------------------- |
| list\_invoices | company, status, overdue, client\_id, date\_from, date\_to, limit, cursor |
| list\_payments | company, client\_id, date\_from, date\_to, limit, cursor |
| record\_payment | company, invoice\_number, amount, payment\_date, payment\_type, transaction\_reference, private\_notes, send\_email |

[All 14 Invoice Ninja tools with descriptions](https://cotlet.dev/integrations/invoice-ninja-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Invoice Ninja to Cotlet?

Yes. You sign in to Invoice Ninja yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Invoice Ninja 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 Invoice Ninja automations

- [Chase overdue Invoice Ninja invoices](https://cotlet.dev/integrations/invoice-ninja-api-mcp-server/chase-overdue-invoices.md)
- [Create Invoice Ninja invoices from a billing list](https://cotlet.dev/integrations/invoice-ninja-api-mcp-server/create-invoices-from-billing-list.md)
- [Invoice Ninja API and MCP server: every tool](https://cotlet.dev/integrations/invoice-ninja-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Invoice Ninja.

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

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

---

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.
