# Log check and cash payments on Dubsado invoices

> Checks, cash and e-transfers matched to open Dubsado invoices and logged as manual payments, so balances and reminders stay right.

Source: https://cotlet.dev/integrations/dubsado-api-mcp-server/log-offline-payments

Some clients pay by check, cash or bank transfer instead of the invoice link. Until you log each one in Dubsado, the invoice shows a balance, the payment reminder still goes out, and your Amount remaining is wrong.

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

[Request access](https://cotlet.dev/app/signup?app=dubsado) [All Dubsado tools](https://cotlet.dev/integrations/dubsado-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can Dubsado do this on its own?

Dubsado has no API to log payments (checked 12 Oct 2026), and its Zapier New Payment Received trigger fires only for processor payments, never for manually logged ones. Payments through Dubsado Payments, Square or PayPal are recorded automatically; everything paid outside Dubsado has to be logged by hand on each invoice's Transactions tab.

By hand

## How you do it in Dubsado today

1. Find the invoice: open the Invoicing page, use the Invoices widget on Home, or click Amount remaining under Insights > Finance reports to see every open invoice.
2. Open the invoice and click the Transactions tab in the details column, then Payment (or + Log a payment when the invoice has no transactions yet).
3. In the Log payment dialog, set the Date the payment was received, choose the Payment method (Cash, Check, Credit, E-transfer and others) and enter the Amount; Add max amount fills in the whole balance.
4. Add a Description such as the check number and click Log Payment, or Mark invoice as paid when it covers the balance.
5. Repeat for every check and transfer. Matching a deposit to the right invoice and installment is the slow part, and a payment logged twice or on the wrong project is easy to miss.

With an agent

## How to log check and cash payments on Dubsado invoices

Prompt

```
Here are this week's checks and e-transfers. Match each one to the open Dubsado invoice it pays, log it as a manual payment, and list who still owes me.
```

1. 01  
### Match each payment to one invoice  
For each line you give (payer, amount, date, check number), the agent finds the client with list\_clients and their open invoices with list\_invoices. An amount that equals a balance or the next installment is a match; two invoices that fit equally go back to you.
2. 02  
### Stop on amounts that do not fit  
Dubsado refuses a payment larger than the remaining balance, so an overpayment is reported instead of split across invoices. A payment that fits no open invoice, or comes from someone who is not a client, is listed as unmatched.
3. 03  
### Guard against double logging  
When the balance is already lower by that exact amount, or the invoice is paid, the agent assumes it was logged before and skips it. The check number goes into the description so the next run and your bookkeeping can tell payments apart.
4. 04  
### Log with your OK  
record\_manual\_payment uses the method the client actually used and the date the money arrived, not today's date. You approve each payment, or the whole batch after reading the match list.
5. 05  
### Report what is still owed  
The run ends with list\_invoices for every unpaid invoice: client, balance and the next due date, overdue ones first, so the Monday "who owes me" list comes out of the same run.

### What you get back

Example data

```
Logged after your OK (3):
Check #1042, $800.00 from Acme Co: invoice 0042 "Acme rebrand", balance now $0.00, marked Paid.
E-transfer $400.00 from Maya Chen: invoice 0051 "Spring brand shoot", installment 1 of 3, balance $800.00.
Cash $150.00 from Leo Grant: invoice 0049, balance now $0.00.
Not logged: $1,250.00 from R. Patel is more than the $1,000.00 balance on invoice 0047; check the amount.
Still owed: 4 invoices, $3,150.00. Overdue: 0038 "Kim family session", $450.00 due 1 Oct.
```

### Other ways to ask

- Every Monday, list unpaid Dubsado invoices with what each client still owes, overdue first, without logging anything.
- Log check #2210 for $500 from the Lopez wedding against the second installment and tell me what is left.
- Go through my bank export for September, match the e-transfers to Dubsado invoices and show me the matches before logging any.

Before you automate it

## What Dubsado allows, and what to know first

- Dubsado does not let a manual payment exceed the invoice's remaining balance, and a payment that clears the balance moves the invoice to Paid.
- Only manually logged Dubsado payments can be edited or deleted; payments through Dubsado Payments are locked and can only be refunded.
- Logging a manual payment in Dubsado sends the client no receipt; the invoice itself lists the payment, and you share it as a PDF or link when the client wants proof.
- Dubsado payment reminders for an installment stop once that installment is paid in full, while logging or editing a manual payment does not cancel the client's autopay enrollment.
- Dubsado invoices with any transaction cannot be deleted; to stop collecting, you close the invoice, which marks the rest as uncollectible and cancels the remaining reminders.

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

Sources: [Dubsado Help: Managing manual payments](https://help.dubsado.com/en/articles/15920709-managing-manual-payments) · [Dubsado Help: Send transaction receipts to clients](https://help.dubsado.com/en/articles/15920698-send-transaction-receipts-to-clients) · [Dubsado Help: Automated payment reminders](https://help.dubsado.com/en/articles/15000565-automated-payment-reminders) · [Dubsado Help: Finance reports](https://help.dubsado.com/en/articles/16208391-finance-reports)

REST

## Call record\_manual\_payment from a script

curl

```
curl https://cotlet.dev/api/v1/dubsado/record_manual_payment \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"inv_20417","amount":"400.00","paid_on":"2026-10-09","method":"e_transfer","description":"E-transfer ref 7731"}'
```

Example response

```
{
"invoice_id": "inv_20417",
"amount": "400.00",
"method": "check",
"paid_on": "2026-10-12",
"balance": "800.00",
"invoice_status": "unpaid"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is dubsado\_record\_manual\_payment. Example data.

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

Tools

## Dubsado tools this automation uses

__Cotlet Dubsado tools used to log check and cash payments on Dubsado invoices__
| Tool | Parameters |
| ----------------------- | -------------------------------------------------- |
| list\_clients | query, limit, cursor |
| list\_invoices | status, project\_id, due\_before, limit, cursor |
| record\_manual\_payment | invoice\_id, amount, paid\_on, method, description |

[All 14 Dubsado tools with descriptions](https://cotlet.dev/integrations/dubsado-api-mcp-server#tools)

## More Dubsado automations

- [Send a Dubsado proposal to a new lead with AI](https://cotlet.dev/integrations/dubsado-api-mcp-server/send-proposal-to-new-lead)
- [Summarize Dubsado questionnaire answers with AI](https://cotlet.dev/integrations/dubsado-api-mcp-server/summarize-questionnaire-answers)
- [Find unsigned Dubsado contracts and draft reminders](https://cotlet.dev/integrations/dubsado-api-mcp-server/chase-unsigned-contracts)
- [Dubsado API and MCP server: every tool](https://cotlet.dev/integrations/dubsado-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to Dubsado.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Dubsado.

[Request access](https://cotlet.dev/app/signup?app=dubsado)
