Payments¶
Query payment and remittance data directly.
POST /payments/query¶
Cursor-paginated query against payment and remittance data. Results are scoped to your authenticated tenant. Default page size is 500 rows; maximum is 100,000 rows per request.
Request Body¶
| Field | Type | Required | Description |
|---|---|---|---|
| source | string (cashapp, iandp, bpn) |
Yes | Payment data source to query. |
| fields | array of string | No | Fields to return. Omit to return all core fields. Use GET /schema to discover available field names. |
| filters | object | Yes | Field-level filters — at least one is required; a request with no filters is rejected. Supports eq, neq, gt, gte, lt, lte, in, nin operators, e.g. { "status": { "eq": "Paid" } } or { "job_id": { "in": ["job-123", "job-456"] } }. in/nin require a non-empty array. Use date_range to filter on createDateTime. |
| cursor | string | No | Opaque cursor token from a previous response. Omit to start from the beginning. |
| limit | integer | No | Rows per page, 1–100000. Defaults to 500. |
Every source also applies its own mandatory, non-overridable default filters — e.g. rows already picked up by a completed export are always excluded, and iandp additionally has a fixed accepted-status and lookback-window default. Fields covered by a default filter (such as exported_at) are locked: passing your own filter on a locked field is rejected with a 400.
Status Codes¶
| Status | Description |
|---|---|
| 200 | Query executed. Returns paginated rows. |
| 400 | Validation error (e.g. missing source, no filters provided, empty in/nin array, or a filter on a locked field). |
| 401 | Missing or invalid API key. |
| 429 | Rate limit exceeded. |
Example Request¶
curl -X POST https://ext.arc-aegis.billtrust.com/api/v1/remittance-export/payments/query \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"source": "cashapp",
"fields": ["id", "status", "totalAmount", "currency", "createDateTime"],
"filters": {
"date_range": { "from": "2026-06-01", "to": "2026-06-30" },
"status": { "eq": "Paid" }
},
"limit": 500
}'
Example Response — 200¶
{
"data": [
{
"id": "pay_8f2c1e",
"status": "Paid",
"totalAmount": 1450.00,
"currency": "USD",
"createDateTime": "2026-06-14T09:12:00.000Z"
}
],
"pagination": {
"cursor": "eyJvZmZzZXQiOjUwMH0",
"hasMore": true,
"rowCount": 500
}
}
Pass pagination.cursor back as cursor in the next request to fetch the next page. A null cursor means all results have been returned.
Example Response — 400¶
{
"error": {
"code": "VALIDATION_ERROR",
"message": "source is required",
"details": [
{ "field": "source", "message": "Required" }
]
}
}