COUNTCOUNT
Sign Up
InvoicesAdd payment transactions

Add payment transactions

PATCH/partners/invoices/{uuid}/add-transactions

Settles whole transactions against an invoice, or records a refund paid out on a credit memo.

Each transaction settles its full amount. On an invoice, Income transactions are payments and Expense transactions are refunds; on a credit memo, Expense transactions record a refund paid to the customer — the only way to refund a credit memo. The document must be approved (not a draft or estimate), have a customer, and be in the workspace currency; pay a foreign-currency invoice with POST /partners/transactions/{transactionId}/assign-to-bills-invoices instead. Transactions must not be reviewed, reconciled, pending, excluded, or already part of another invoice. Undo with PATCH /{uuid}/remove-transaction. MCP equivalent for credit memo refunds: COUNT_record_credit_memo_refund.

HMAC signature + Bearer access token
Try this request

Path parameters

uuiduuidrequired

The UUID of the invoice or credit memo.

Request body

transactionsarrayrequired

Transaction UUIDs from the Transactions API.

isRecordAsCashboolean

Record the payment as a hand-recorded cash receipt. Defaults to false.

cashDepositPendingboolean

Invoices only, and only with isRecordAsCash: true. Routes the receipt through Undeposited Funds so the invoice reads `paid, awaiting deposit` until the bank deposit is matched.

Responses

200Transactions added.
400No transactions sent; the document is a draft or estimate, has no customer, is in a foreign currency, or is already fully paid; a transaction is reviewed, reconciled, pending, excluded, or already on another invoice; or the amount exceeds the unpaid balance or the invoice total for refunds.
404Invoice not found, or no transaction of the accepted type found.
401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
PATCHhttps://api.getcount.com/partners/invoices/{uuid}/add-transactions
Request
import crypto from 'node:crypto';

const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;

const method = 'PATCH';
const signingPath = '/invoices/3fa85f64-5717-4562-b3fc-2c963f66afa6/add-transactions';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
  "transactions": [
    "b7c8d9e0-f1a2-3456-bcde-678901234567"
  ]
};
const bodyString = JSON.stringify(body);

const bodyHash = crypto.createHash('sha256').update(bodyString).digest('hex');
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');

const response = await fetch(`${BASE_URL}/partners/invoices/3fa85f64-5717-4562-b3fc-2c963f66afa6/add-transactions`, {
  method,
  headers: {
    'x-client-id': CLIENT_ID,
    'x-timestamp': timestamp,
    'x-signature': signature,
    'Content-Type': 'application/json',
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  },
  body: bodyString,
});

console.log(await response.json());
Response · 200
{
  "status": "success",
  "message": "success on adding transactions to your invocie.",
  "data": {
    "paidInvoice": {
      "id": "f6a7b8c9-d0e1-2345-fabc-456789012345",
      "invoiceNumber": "INV-1042",
      "invoiceType": "invoice",
      "customerUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
      "date": "2026-03-01",
      "dueDate": "2026-03-31",
      "currency": "USD",
      "status": "sent",
      "isDraft": false,
      "approved": true,
      "isSent": true,
      "paymentStatus": "paid",
      "subtotal": 1000,
      "taxTotal": 85,
      "total": 1085,
      "amountDue": 0,
      "products": [
        {
          "productUuid": "aa11bb22-cc33-dd44-ee55-ff6677889900",
          "description": "Consulting services",
          "quantity": 10,
          "unitPrice": 100,
          "nonTaxable": false
        }
      ],
      "createdAt": "2026-03-01T09:00:00.000Z",
      "updatedAt": "2026-03-02T11:15:00.000Z"
    }
  }
}