Transactions
List, retrieve, and export transactions for reporting
The Kashier Transactions API provides endpoints for retrieving transaction data and exporting transaction batch data. These APIs enable merchants to monitor their transactions.
Get all transactions
This endpoint allows merchants to retrieve a list of transaction records based on multiple optional filter parameters, such as currency, amount, status, and channel. The data can be paginated, sorted, and searched.
| Endpoint | Value |
|---|---|
| LIVE-URL | https://api.kashier.io/v2/aggregator/transactions |
| Method | GET |
| TEST-URL | https://test-api.kashier.io/v2/aggregator/transactions |
| Method | GET |
Full parameter and response reference → Get all transactions.
curl --location 'https://test-api.kashier.io/v2/aggregator/transactions?currency=EGP&sortType=-1&limit=20&page=1'
--header 'Authorization: YOUR_TEST_SECRET_KEY'Headers
| Key | Description |
|---|---|
| Authorization | The Authorization is the secret key that is used to identify the merchant. You can obtain it from Kashier dashboard. Learn more about Authorization. |
Filter values
Filter values are case-sensitive and validated against a fixed set. Send them exactly as shown:
| Parameter | Accepted values |
|---|---|
status | Approved, Rejected, Unknown, all |
type | PAYMENT, REFUND, AUTHORIZE, all |
currency | EGP, EUR, USD, GBP, all |
channel | online, pos, all |
paymentType | Invoice, paymentPage, paymentRequest, all |
Pass multiple values as a comma-separated list. The literal all means no filter on that parameter.
Lowercase values such as status=approved or type=payment are rejected with 400. Unknown query keys are also rejected with 400 — remove any parameter that is not documented rather than passing it empty.
The status filter accepts only Approved, Rejected, and Unknown. Rows projected as Expired or Pending cannot be selected by this filter; retrieve them without a status filter and filter client-side.
Get transaction details
This endpoint allows merchants to retrieve detailed information about a single transaction using its unique reference ID.
| Endpoint | Value |
|---|---|
| LIVE-URL | https://api.kashier.io/v2/aggregator/transactions/:transactionId |
| Method | GET |
| TEST-URL | https://test-api.kashier.io/v2/aggregator/transactions/:transactionId |
| Method | GET |
curl --location 'https://test-api.kashier.io/v2/aggregator/transactions/:trxId'
--header 'Authorization: YOUR_TEST_SECRET_KEY'Headers
| Key | Description |
|---|---|
| Authorization | The Authorization is the secret key that is used to identify the merchant. You can obtain it from Kashier dashboard. Learn more about Authorization. |
Full parameter and response reference → Get transaction details.
Transaction statuses
The list endpoint and the details endpoint report status in two different vocabularies. Both describe the same transaction.
| Surface | status field | Vocabulary |
|---|---|---|
List (/v2/aggregator/transactions) | Computed projection | Approved, Rejected, Unknown, Expired, Pending (capitalized) |
Details (/v2/aggregator/transactions/:transactionId) | Stored status | SUCCESS, FAILURE, PENDING (uppercase) |
| Webhooks | Stored status | SUCCESS, FAILURE, PENDING (uppercase) |
This is why a row can read Approved in the list while your webhook for the same payment read SUCCESS. Neither is wrong.
Each list row also carries lastStatus, which is the stored order status — for example CAPTURED on a captured payment. Use lastStatus when you need the order's money state rather than the projection.
Projection mapping
List status | Stored status it is projected from |
|---|---|
Approved | SUCCESS |
Rejected | FAILURE, or INITIATED |
Unknown | UNKNOWN, and any unmapped case |
Expired | EXPIRED |
Pending | PENDING |
Rejected does not always mean declined
A transaction still sitting at INITIATED — created but never completed by the customer or the provider — projects to Rejected in the list. Before treating a Rejected row as a hard decline, check lastStatus and transactionResponseCode, or fetch the transaction details for the stored status.
Reconcile on the stored status from the details endpoint or your webhooks. Use the list projection for reporting and dashboard-style views.
Export transaction batches
This API allows you to export transaction data based on specific filters such as status and date range. It is typically used for reporting, reconciliation, and data analysis by aggregators or merchants.
| Endpoint | Value |
|---|---|
| LIVE-URL | https://api.kashier.io/v3/payment/export |
| Method | GET |
| TEST-URL | https://test-api.kashier.io/v3/payment/export |
| Method | GET |
Full parameter and response reference → Export transaction batches.
curl --location 'https://test-api.kashier.io/v3/payment/export?status=Approved&startDate=2024-10-27T00%3A00%3A00.000Z&endDate=2024-11-27T23%3A59%3A59.999Z'
--header 'Accept: application/json, text/plain, */*'
--header 'Authorization: YOUR_TEST_SECRET_KEY'Headers
| Key | Description |
|---|---|
| Authorization | The Authorization is the secret key that is used to identify the merchant. You can obtain it from Kashier dashboard. Learn more about Authorization. |