Skip to main content

Payments API

Query payment transactions across all customers.

List Payments​

GET /api/v1/payments

Query Parameters:

ParameterTypeDescription
limitintItems per page
offsetintItems to skip
customer_idstringFilter by customer, by their permanent id. A value that cannot be a customer id is a 422. When you hold only the external_id you gave them, read the id from Get Customer first
searchstringSearch the transaction comment. A digits-only value also addresses the record whose record id it is (the pay_/crd_ value, with or without the prefix), so it returns that record together with every comment showing the number; a gateway reference such as TR-1234 is matched through the comment it is parsed from. A comment written in any script is searchable. Covers every match in the date range. Capped at 128 characters
typestringFilter by summary card: electronic, manual, credit or refund. manual includes manual charges. An unknown value is a 422.
from_datestringStart date
to_datestringEnd date

Response:

{
"payments": [
{
"id": "pay_abc123",
"customer_id": "789",
"customer_name": "Acme Corp",
"amount": 99.00,
"currency": "USD",
"status": "completed",
"method": "Manual Payment",
"method_type": "manual",
"record_type": "payment",
"recorded_at": "2026-03-15T14:22:00Z"
}
],
"total": 240,
"limit": 50,
"offset": 0,
"has_more": true,
"summary": {
"electronic": 4200.00, "electronic_count": 42,
"manual": 2340.00, "manual_count": 24,
"credits": 120.00, "credit_count": 8,
"refunds": 0.00, "refund_count": 0
}
}

summary carries the totals for each summary card over every record matching the query, type included. Filtering to one card returns that card's totals and zero for the other three, because none of their records match. If you previously read all four totals from a type-filtered call, drop type and read the breakdown from the unfiltered response.

Payment Status​

status is always completed, and there is no status filter. Every record this endpoint returns is money that has already moved. A payment still being processed lives in your payment gateway, so it has no record here.

A status parameter is ignored rather than rejected. If you previously sent status=pending or status=failed and relied on the empty result, note that the same call now returns every matching payment.

Method Types​

method_type categorises how the payment was made.

ValueDescription
electronicCard / e-commerce gateway payment
manualManually recorded payment (wire, check, cash)
chargeManual charge, a balance adjustment that debits the customer
refundMoney returned to the customer

Record Types​

record_type distinguishes inbound payments from credits applied to the account.

ValueDescription
paymentAn inbound payment
creditA credit applied to the account