Skip to content

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" }
    ]
  }
}