Record a payment
Record a payment against a customer's invoices.
MCP tool method_crm_write → receive_payment
write Confirm
Returns the payment ID and how it was applied to each invoice. It records a payment that already arrived and never charges a card. A customer with a negative balance is refused. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID. |
| amount number required | number | Payment amount. |
| payment_method string required | string | A payment method from your account, such as Check. |
| date string required | string | YYYY-MM-DD. |
| deposit_to_account string required | string | An account from QuickBooks. |
| invoice_ids array | array | Invoices to pay. Without it Method applies the payment by its auto-apply rule. |
| reference_number string | string | Check or transfer number. |
| wait_for_sync_approval boolean | boolean | Ticks "Wait for approval before syncing" so QuickBooks stays untouched until you untick it in Method. Default true. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "method_crm_write",
"arguments": {
"operation": "receive_payment",
"arguments": {
"customer_id": "C-2041",
"amount": 1250,
"payment_method": "Transfer",
"date": "2026-10-22",
"deposit_to_account": "Checking",
"invoice_ids": [
"1038"
],
"wait_for_sync_approval": true
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"payment_id": "P-3320",
"customer": "Ortega Kitchens",
"amount": 4800,
"applied": [
{
"invoice_id": "1043",
"amount": 4800,
"balance_due": 0
}
],
"sync": "held"
},
"isError": false
}