Docs/API/Search

Search

Query transactions by date, amount, processor, customer, or any combination. Returns paginated results ordered by creation time.

POST /api/transaction/search

Use Search when you need to find transactions you did not capture IDs for, reconcile batches, build reports, or audit activity. For a single transaction you already have the ID of, call GET /api/transaction/{transactionId} instead — it is faster and returns more detail.

Default date window

If you don't pass a created_at filter, the default window is the prior four months. For anything older, always specify a date range.

Request body

Filters are combined with AND. Omit a filter to ignore it entirely.

FieldTypeDescription
created_atobject{ start_date, end_date } ISO-8601 range.
updated_atobject{ start_date, end_date } ISO-8601 range.
amountobject{ min, max } in cents.
response_codearray<integer>List of response codes to match.
statusarray<string>Transaction statuses to include (e.g. approved, declined, pending_settlement, settled, refunded, voided).
typearray<string>One or more of sale, authorize, capture, refund, void, credit, verification.
processor_idstringRestrict to a specific processor.
payment_method_typestringcard, ach, terminal, etc.
order_idstringExact match on order_id.
customer_idstringMatch transactions linked to a customer.
emailstringMatch on billing email.
last_fourstringLast four of the card.
limitintegerPage size. Default 25, max typically 100.
offsetintegerSkip this many records for pagination.
order_bystringSort field. Default created_at.
order_directionstringasc or desc. Default desc.

Example

fetch("https://sandbox.fluidpay.com/api/transaction/search", {
  method: "POST",
  headers: {
    "Authorization": "YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    created_at: {
      start_date: "2026-04-01T00:00:00Z",
      end_date:   "2026-04-23T23:59:59Z"
    },
    status: ["settled", "refunded"],
    amount: { min: 10000, max: 100000 },
    limit: 50
  })
})

Response

{
  "status": "success",
  "msg": "success",
  "total_count": 128,
  "data": [
    {
      "id": "txn_abc123",
      "type": "sale",
      "amount": 12999,
      "response_code": 100,
      "status": "settled",
      "created_at": "2026-04-20T14:22:11Z",
      ...
    },
    ...
  ]
}

Use total_count with limit and offset to paginate through large result sets. Pages beyond 10,000 results get expensive — narrow the filters instead of paginating that deep.