Search
Query transactions by date, amount, processor, customer, or any combination. Returns paginated results ordered by creation time.
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.
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.
| Field | Type | Description |
|---|---|---|
created_at | object | { start_date, end_date } ISO-8601 range. |
updated_at | object | { start_date, end_date } ISO-8601 range. |
amount | object | { min, max } in cents. |
response_code | array<integer> | List of response codes to match. |
status | array<string> | Transaction statuses to include (e.g. approved, declined, pending_settlement, settled, refunded, voided). |
type | array<string> | One or more of sale, authorize, capture, refund, void, credit, verification. |
processor_id | string | Restrict to a specific processor. |
payment_method_type | string | card, ach, terminal, etc. |
order_id | string | Exact match on order_id. |
customer_id | string | Match transactions linked to a customer. |
email | string | Match on billing email. |
last_four | string | Last four of the card. |
limit | integer | Page size. Default 25, max typically 100. |
offset | integer | Skip this many records for pagination. |
order_by | string | Sort field. Default created_at. |
order_direction | string | asc 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.