---
title: "List transactions"
description: "Pull card spend in a form that is ready to post to your ledger."
source: https://developers.qashio.com/v2/reference/get-public-v1-erp-transactions/
---

# List transactions

`GET /public/v1/erp/transactions`

Requires a Bearer access token.

**Purpose.** Pull card spend in a form that is ready to post to your ledger.

**Description.** The primary sync endpoint. Returns a paginated list of transactions, newest first,
each already enriched with the supplier, chart of account, tax rate, approval state and cost
allocation needed to create a journal entry — so you do not have to join that data yourself. Covers
purchases, refunds, reversals, cash withdrawals, card loads and unloads.

Typical use is an incremental pull: filter on `client_sync_status` for what you have not pulled
yet, post it to your ledger, then acknowledge it. You can also pull a `transaction_time` window, or
filter on `erp_sync_status`. Amounts are returned **fee-inclusive** — `billing_amount` and
`clearing_amount` already contain the associated fees.

To follow a refund back to its purchase, filter on `parent_qashio_id`.

**Input (query).**

| Parameter | Type | Description |
| --- | --- | --- |
| `page` | integer | Page number, 1-based. Default `1` |
| `page_size` | integer | Records per page. Default `10` |
| `qashio_id` | string | Qashio transaction reference (`CT…`) |
| `parent_qashio_id` | string | Return the children of this transaction — refunds and reversals |
| `transaction_status` | string | `draft`, `pushed`, `synced`, `failed` |
| `transaction_category` | string | `purchase`, `refund`, `reversal`, `card_loading`, `card_unloading`, `cash_withdrawal`, `deposit`, `cashback`, `account_transfer`, and related values |
| `erp_sync_status` | string | `draft`, `pending`, `validated`, `not_validated`, `success`, `failed` |
| `approval_status` | string | `initiated`, `pending`, `approved`, `rejected`, `resolved`, `review`, `action_taken`, `admin_approved`, `external_dispute` |
| `card_last_four` | string | Exactly four digits |
| `employee_id` | string | Cardholder's employee identifier |
| `transaction_currency` | string | Currency the merchant charged in |
| `billing_currency` | string | Currency the company was billed in |
| `transaction_time_from` / `transaction_time_to` | date | Transaction window, `YYYY-MM-DD`. Send both |
| `client_sync_status` | string | `not_synced`, `synced`, `outdated`. One value per request |

**Output.** Array of transactions, plus `pagination`. Principal fields:

| Group | Fields |
| --- | --- |
| Identity | `id` (Qashio UUID), `qashio_id` (`CT…`), `parent_id`, `parent_qashio_id`, `company_id` |
| Merchant | `merchant_name`, `merchant_city`, `merchant_country`, `mcc_code`, `mcc_description` |
| Amounts | `transaction_amount`, `transaction_currency`, `billing_amount`, `billing_currency`, `clearing_amount`, `vat_amount`, `fee_charges` |
| Timing | `transaction_time`, `cleared_at`, `created_at`, `updated_at`, `modified_date` |
| Classification | `transaction_type`, `transaction_category`, `clearing_status`, `settlement_status`, `message_type` |
| Card and holder | `card_name`, `card_external_id`, `card_last_four`, `card_holder_name`, `card_holder_email`, `employee_id`, `pool_account_name`, `pool_external_id` |
| Accounting | `erp_supplier` (`{ id, qashio_external_id, remote_id, remote_name, status }`), `erp_chart_of_account` (`{ id, qashio_external_id, remote_id, remote_name, account_type, account_number, account_currency }`), `erp_supplier_name`, `erp_chart_of_account_name`, `chart_of_account_number`, `erp_tax_rate_name`, `expense_category_name`, `vendor_trn`, `purchase_order_number`, `rrn` |
| Sync and approval | `client_sync_status`, `erp_sync_status`, `erp_sync_type`, `exclude_from_sync`, `sync_errors`, `approval_status`, `approved_date_time`, `approved_by` (`{ user_external_id, name }`) |
| Detail | `memo`, `transaction_description`, `segments`, `line_items`, `receipts` |

`line_items` entries carry `{ id, amount, vat_amount, description, expense_category,
erp_tax_rate_name, erp_tax_rate_remote_id, erp_chart_of_account_name,
erp_chart_of_account_remote_id, segments, created_at, updated_at }`.

`segments` carry your cost allocation. The four standard labels are `Location`, `Project`,
`Division` and `Department`. Custom segment keys use underscores on this API (`cost_center`).

**Errors.** `400` (invalid enum, `card_last_four` not four digits, incomplete date range), `401`,
`403`.

### Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `page` | integer | no | Page number, 1-based. Default `1` |
| `page_size` | integer | no | Records per page. Default `10` |
| `qashio_id` | string | no | Qashio transaction reference (`CT…`) |
| `parent_qashio_id` | string | no | Return the children of this transaction — refunds and reversals |
| `transaction_status` | string | no | `draft`, `pushed`, `synced`, `failed` |
| `transaction_category` | string | no | `purchase`, `refund`, `reversal`, `card_loading`, `card_unloading`, `cash_withdrawal`, `deposit`, `cashback`, `account_transfer`, and related values |
| `erp_sync_status` | string | no | `draft`, `pending`, `validated`, `not_validated`, `success`, `failed` |
| `approval_status` | string | no | `initiated`, `pending`, `approved`, `rejected`, `resolved`, `review`, `action_taken`, `admin_approved`, `external_dispute` |
| `card_last_four` | string | no | Exactly four digits |
| `employee_id` | string | no | Cardholder's employee identifier |
| `transaction_currency` | string | no | Currency the merchant charged in |
| `billing_currency` | string | no | Currency the company was billed in |
| `transaction_time_from` | date | no | Transaction window, `YYYY-MM-DD`. Send both |
| `transaction_time_to` | date | no | Transaction window, `YYYY-MM-DD`. Send both |
| `client_sync_status` | string | no | Tracks which transactions you have already pulled. One value per request. `not_synced`: Not acknowledged yet. Every new transaction starts here. `synced`: Acknowledged with `POST /public/v1/erp/transactions/acknowledge`. Your copy is current. `outdated`: Acknowledged, then changed. Pull it and acknowledge it again. |
| `exclude_from_sync` | boolean | no |  |

### Example request

```bash
curl -X GET 'https://api.qashio.com/public/v1/erp/transactions?page=1&page_size=20' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <access_token>'
```

### Example response (200)

```json
{
  "status_code": 200,
  "success": true,
  "data": [
    {
      "id": "cf427cb0-c3ef-41ac-be60-da58887e68b0",
      "merchant_name": "Acme Trading LLC",
      "erp_supplier_name": "QSupplier 1",
      "expense_category_name": "Office Supplies",
      "erp_tax_rate_name": "Tax Rate - 1",
      "erp_chart_of_account_name": "Chart of account - 1",
      "pool_account_name": "Qashio Pool Account - 1",
      "card_name": "Qashio Card - 1",
      "card_holder_name": "Tom Baker",
      "card_holder_email": "lina.haddad@example.com",
      "qashio_id": "CT9tctsjf8ybcjr5",
      "transaction_amount": 2,
      "transaction_currency": "AED",
      "transaction_time": "2026-09-09T09:14:14.817Z",
      "transaction_description": "Wallet Transfer",
      "transaction_type": "wallet_transfer",
      "transaction_category": "card_loading",
      "fee_charges": 0,
      "clearing_status": "cleared",
      "billing_currency": "AED",
      "memo": "Monthly office supplies",
      "vat_amount": 0,
      "status_code": "0000",
      "message_type": "api",
      "settlement_status": "settled",
      "rrn": "6252091414Al",
      "vendor_trn": "100123456700003",
      "purchase_order_number": "PO-2026-0142",
      "parent_id": "CAj2w5b3w9hoe0ga",
      "parent_qashio_id": "TXN-PARENT-001",
      "visible": true,
      "cleared_at": "2026-08-06T07:30:44.941Z",
      "exclude_from_sync": false,
      "client_sync_status": "not_synced",
      "erp_sync_status": "not_validated",
      "erp_sync_type": "automatic",
      "approval_status": "approved",
      "merchant_city": "Dubai",
      "merchant_country": "AE",
      "mcc_code": "5812",
      "mcc_description": "Eating Places and Restaurants",
      "company_id": "COoyy0mfzqhxtxkkk",
      "supplier_qashio_external_id": "CAj2w5b3w9hoe0ga",
      "chart_of_account_qashio_external_id": "CAj2w5b3w9hoe0ga",
      "erp_supplier_remote_id": "CAj2w5b3w9hoe0ga",
      "erp_tax_rate_remote_id": "CAj2w5b3w9hoe0ga",
      "erp_chart_of_account_remote_id": "CAj2w5b3w9hoe0ga",
      "chart_of_account_number": "sample",
      "pool_external_id": "CAj2w5b3w9hoe0ga",
      "card_external_id": "CAj2w5b3w9hoe0ga",
      "card_last_four": "sample",
      "employee_id": "EMP-1001",
      "erp_supplier": "sample",
      "erp_chart_of_account": "6100",
      "billing_amount": 0,
      "clearing_amount": 0,
      "approved_date_time": "sample",
      "modified_date": "2026-09-09T09:14:16.999Z",
      "approved_by": "sample",
      "updated_at": "2026-09-09T09:20:45.265Z",
      "created_at": "2026-09-09T09:20:42.109Z",
      "sync_errors": [
        {
          "id": null,
          "name": null,
          "label": null,
          "code": null,
          "erp_internal_id": null,
          "erp_code": null
        }
      ],
      "segments": [
        {
          "id": null,
          "name": null,
          "label": null,
          "code": null,
          "erp_internal_id": null,
          "erp_code": null
        }
      ],
      "receipts": [
        {
          "id": null,
          "name": null,
          "label": null,
          "code": null,
          "erp_internal_id": null,
          "erp_code": null
        }
      ],
      "line_items": [
        {
          "id": null,
          "name": null,
          "label": null,
          "code": null,
          "erp_internal_id": null,
          "erp_code": null
        }
      ]
    }
  ],
  "meta": {
    "request_id": "3adb2d16090c7b3bdbde3b326a814b30",
    "timestamp": "2026-09-09T10:07:52.143Z"
  },
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total_pages": 1,
    "total_records": 7,
    "has_next": false,
    "has_previous": false
  }
}
```

### Errors

- `401` Unauthorized - missing or invalid Bearer token
