List transactions
/public/v1/erp/transactionsPull card spend in a form that is ready to post to your ledger.
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.
Query parameters
pageintegerPage number, 1-based. Default
1Example
1page_sizeintegerRecords per page. Default
10Example
20qashio_idstringQashio transaction reference (
CT…)parent_qashio_idstringReturn the children of this transaction: refunds and reversals
transaction_statusstringdraft,pushed,synced,failedtransaction_categorystringpurchase,refund,reversal,card_loading,card_unloading,cash_withdrawal,deposit,cashback,account_transfer, and related valueserp_sync_statusstringdraft,pending,validated,not_validated,success,failedapproval_statusstringinitiated,pending,approved,rejected,resolved,review,action_taken,admin_approved,external_disputecard_last_fourstringExactly four digits
employee_idstringCardholder's employee identifier
transaction_currencystringCurrency the merchant charged in
billing_currencystringCurrency the company was billed in
transaction_time_fromdateTransaction window,
YYYY-MM-DD. Send bothtransaction_time_todateTransaction window,
YYYY-MM-DD. Send bothclient_sync_statusstringTracks which transactions you have already pulled. One value per request.
not_syncedNot acknowledged yet. Every new transaction starts here. syncedAcknowledged with POST /public/v1/erp/transactions/acknowledge. Your copy is current.outdatedAcknowledged, then changed. Pull it and acknowledge it again. Example
not_syncedexclude_from_syncboolean
Response
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).
Response schema from the OpenAPI document
| Field | Type | Description |
|---|---|---|
status_code | integer | |
success | boolean | |
data | object[] | |
id | string | |
merchant_name | string | |
erp_supplier_name | string | |
expense_category_name | string | |
erp_tax_rate_name | string | |
erp_chart_of_account_name | string | |
pool_account_name | string | |
card_name | string | |
card_holder_name | string | |
card_holder_email | string | |
qashio_id | string | |
transaction_amount | integer | |
transaction_currency | string | |
transaction_time | string | |
transaction_description | string | |
transaction_type | string | |
transaction_category | string | |
fee_charges | integer | |
clearing_status | string | |
billing_currency | string | |
memo | string | |
vat_amount | integer | |
status_code | string | |
message_type | string | |
settlement_status | string | |
rrn | string | |
vendor_trn | string | |
purchase_order_number | string | |
parent_id | string | |
parent_qashio_id | string | |
visible | boolean | |
cleared_at | string | |
exclude_from_sync | boolean | |
client_sync_status | string | Whether your integration has pulled the current version of this transaction. Acknowledging it sets synced; a later change sets outdated.not_syncedsyncedoutdated |
erp_sync_status | string | |
erp_sync_type | string | |
approval_status | string | |
merchant_city | string | |
merchant_country | string | |
mcc_code | string | |
mcc_description | string | |
company_id | string | |
supplier_qashio_external_id | string | |
chart_of_account_qashio_external_id | string | |
erp_supplier_remote_id | string | |
erp_tax_rate_remote_id | string | |
erp_chart_of_account_remote_id | string | |
chart_of_account_number | string | |
pool_external_id | string | |
card_external_id | string | |
card_last_four | string | |
employee_id | string | |
erp_supplier | string | |
erp_chart_of_account | string | |
billing_amount | integer | |
clearing_amount | integer | |
approved_date_time | string | |
modified_date | string | |
approved_by | string | |
updated_at | string | |
created_at | string | |
sync_errors | object[] | |
id | string | |
name | string | |
label | string | |
code | string | |
erp_internal_id | string | |
erp_code | string | |
segments | object[] | |
id | string | |
name | string | |
label | string | |
code | string | |
erp_internal_id | string | |
erp_code | string | |
receipts | object[] | |
id | string | |
name | string | |
label | string | |
code | string | |
erp_internal_id | string | |
erp_code | string | |
line_items | object[] | |
id | string | |
name | string | |
label | string | |
code | string | |
erp_internal_id | string | |
erp_code | string | |
meta | object | |
request_id | string | |
timestamp | string | |
pagination | object | |
page | integer | |
page_size | integer | |
total_pages | integer | |
total_records | integer | |
has_next | boolean | |
has_previous | boolean |
Errors
400 (invalid enum, card_last_four not four digits, incomplete date range), 401,
403.
401Unauthorized - missing or invalid Bearer token
Every error carries an errors[] array and a meta.request_id. See Errors for the full envelope.