Payments Report
Retrieve the invoice payments shown in the Payments Report, with date, customer, and salesperson filters.
Endpoints
| Method | Endpoint | Required scope | Description |
|---|---|---|---|
GET | /api/v3/reports/payments | reports:read | List payments report rows and their filtered net total. |
Permissions
Requires reports:read and the user's current report and invoice-list permissions. Inherit-all credentials follow the user's live permissions. Restricted credentials must explicitly include reports:read; invoices:read alone does not grant report access.
All rows, counts, and monetary totals are scoped to the authenticated account. Users without permission to view all invoices are restricted to invoices assigned to themselves, even if another user_id is requested. The response echoes the effective user filter. This is the invoice salesperson, not the user who entered the payment.
Payments Report
GET/api/v3/reports/payments
Required scope: reports:read
Query parameters
| Parameter | Default | Description |
|---|---|---|
date_from | Today minus 30 days | Inclusive payment date in YYYY-MM-DD format. Supply both dates together or omit both. |
date_to | Today | Inclusive payment date in YYYY-MM-DD format, on or after date_from. |
customer_id | All visible customers | Optional customer UUID. |
user_id | All permitted salespeople | Optional invoice salesperson UUID, subject to visibility restrictions. |
sort | transaction_date | transaction_date, customer_name, amount, document_number, reference, or sales_person_name. |
direction | desc | asc or desc. Equal sort values use invoice number descending and transaction ID descending as tie-breakers (invoice-number sorting uses transaction ID). |
page | 1 | Page number, minimum 1. |
limit | 20 | Rows per page, clamped to 1–100. |
include_total | true | Include exact pagination counts. Accepts true, false, 1, or 0. |
include_summary | true | Include the net payment total for the entire filtered result. Accepts true, false, 1, or 0. |
Dates filter the recorded payment date, not the invoice issue date or transaction creation timestamp. Dates are calendar dates without timezone conversion. The default range follows the web report's application calendar and includes both endpoints. Valid years are 1000–9999.
Invalid dates, incomplete or reversed ranges, invalid UUID filters, unsupported sorting, and invalid boolean values return 422 with code: "invalid_query_parameter" and the offending param. Well-formed filters with no visible matches return an empty list and a zero summary.
curl 'https://yourbusiness.salesbinder.com/api/v3/reports/payments?date_from=2026-10-01&date_to=2026-10-31&limit=100' \
--header 'Authorization: Bearer YOUR_API_KEY'Response
The response uses the standard paginated list. Each row contains id, object: "payment", invoice_id, invoice_number, customer_id, customer_name, user_id, sales_person_name, payment_date, amount, type, reference, and card. Card data is either null or an object with brand and last4; provider tokens and accounting sync status are not returned.
Amounts are decimal strings rounded to the account's currency_decimal_places (0–4), using the same calculation as the web report. Negative amounts have type: "refund"; nonnegative amounts have type: "payment". currency identifies the account's reporting currency. This endpoint does not perform currency conversion.
{
"object": "list",
"url": "/api/v3/reports/payments",
"has_more": false,
"data": [],
"pagination": { "page": 1, "per_page": 100, "total_pages": 0, "total_records": 0 },
"filters": {
"date_from": "2026-10-01",
"date_to": "2026-10-31",
"customer_id": null,
"user_id": null,
"sort": "transaction_date",
"direction": "desc"
},
"currency": "USD",
"currency_decimal_places": 2,
"summary": { "total_amount": "0.00" }
}summary.total_amount is the signed sum across all matching rows, not just the current page. It includes invoice payments, refunds, full overpayment cash receipts, and reversals of overpayments. Customer-credit applications and their reversals are excluded because they are not new cash payments. Purchase-order payments are excluded.
Set include_total=false to skip the exact count query; total_records and total_pages are then omitted. Set include_summary=false to skip the aggregate query and omit summary. The options are independent. For larger exports, request the summary on the first page only and disable both aggregates on subsequent pages. Large page offsets still have a cost; records may change between requests, so deduplicate by payment ID. Responses are marked Cache-Control: no-store.