Skip to content
Last updated

Overview of Qashio's ERP Transactions API

1. Introduction

This document provides the technical documentation for the /erp-transactions endpoint of the Qashio ERP API, designed for client-side integration into ERP systems for automated transaction retrieval, categorization, and synchronization. The endpoint supports retrieval of transaction data related to employee spend using Qashio VISA corporate cards, and includes enriched fields for ERP mapping and audit tracking.


2. Overview

SWAGGER

API Swagger: https://erp.qashio.com/api/docs

AUTHENTICATION

The system uses headers containing the company ID and x-api-key provided by Qashio support to authorize requests. All API calls require authentication via HTTP headers. The following headers must be passed with each request:

  • companyId: Unique company identifier. Required for identifying the client account.
  • x-api-key: API key issued by Qashio for the client. Must be kept secure.

IP whitelisting is required for enhanced security. The customer's public IPs must be provided and configured in the API infrastructure's whitelist.

These authentication settings will be visible to Company Admins under the [ERP Integrations] > [ERP Settings] in your Qashio Web portal.

NOTE:

Access to the APIs, and therefore the authentication settings is enabled from Qashio's side. In case the settings are not visible/availble, please contact your Qashio Customer Success Manager.


RATE LIMITS & PAGINATION

  • Maximum 30 requests per minute per companyId.
  • Pagination is supported using page and limit query parameters.
  • The default page size is 10 if not specified.
  • The maximum limit allowed is 500 items per page.

3. Endpoint Summary

GET /erp-transactions

Returns a paginated list of all transactions linked to the authenticated company ID.

curl -X 'GET' \
'https://erp.qashio.com/erp-transactions' \
-H 'accept: application/json' \
-H 'companyId: f251bf0****************3b0a6a37b' \
-H 'x-api-key: aX5p9D5ue0*********** **KUKA='

TRANSACTION FIELDS AND FILTERS

The following is a list of available fields returned by the /erp-transactions endpoint:

  • Field: id

    • Type: GUID
    • Notes: Internal to Qashio - Ignore for Integrations.
    • Sample: f5b948e5-20ed-4e4a-baed-eb1856e71c17
  • Field: qashioId

    • Type: String
    • Notes: Immutable Transaction Reference Number - Used to uniquely identify each transaction. Found on Qashio Web Dashboard as well.
    • Sample: CTp7y9e4iyfmu6kx
  • Field: transactionAmount

    • Type: Decimal
    • Notes: Transaction amount in original transaction currency - see transactionCurrency.
    • Sample: 21
  • Field: transactionCurrency

    • Type: String
    • Notes: ISO 3-char Currency Code for original currency in which the transaction was made.
    • Sample: USD
  • Field: transactionTime

    • Type: DateTimeOffset
    • Notes: ISO8601 DateTime with Time Zone - always in UTC time - When the transaction was done.
    • Sample: 2025-07-01T08:28:51.524Z
  • Field: billingAmount

    • Type: Decimal
    • Notes: Amount charged to card in Local (Card Account) Currency.
    • Sample: 77.14
  • Field: billingCurrency

    • Type: String
    • Notes: ISO 3-char Currency Code - Local (Card Account) Currency.
    • Sample: AED
  • Field: memo

    • Type: String
    • Notes: User input description for the transaction.
  • Field: vatAmount

    • Type: Decimal
    • Notes: VAT amount based on the tax rate as selected on the transaction.
    • Sample: 4.30
  • Field: rrn

    • Type: String
    • Notes: Transaction Id from the network.
    • Sample: 518208763425
  • Field: statusCode

    • Type: String
    • Notes: always 0000 - indicates the transaction was successful. Unsuccessful transactions are already filtered out.
    • Sample: 0000
  • Field: transactionCategory

    • Type: String
    • Notes: This should be used to determine the transaction type.
    • Sample: purchase
Transaction TypeDescription
CARD_LOADINGMoney being added on card from company's Qashio main account.
PURCHASEPurchase transaction.
CARD_UNLOADINGMoney being removed from card to company's Qashio main account.
DEPOSITMoney being deposited into company's Qashio account from another corporate bank account (via bank transfer).
REVERSALReversal of a purchase.
ACCOUNT_VERIFICATIONA verification transaction done to verify the card when added to a payment platform/website; these are reversed in a short time.
BALANCE_INQUIRYAnother type of card verification transaction; these are reversed in a short time.
CASH_WITHDRAWALATM Cash Withdrawal.
REFUNDMoney is refunded by the merchant (may be with or without reference to original transaction - see parentId).
FORCED DEBITA rare purchase transaction where the merchant/network claims an amount without an authorization.
AFTAnother type of purchase/reversal transaction depending on the messageType.
ACCOUNT_LOADINGMoney being added to a pool account from the company's Qashio main account.
CASHBACKIncomes from redeeming Qashio Points as Cashback.
ACCOUNT_UNLOADINGMoney being removed from a pool account to the company's Qashio main account.
ACCOUNT_TRANSFERMoney transfer to/from the company's Qashio account to/from any subsidiary companies.
  • Field: vendorTrn

    • Type: String
    • Notes: Vendor's VAT Registration number as captured from the user-uploaded invoice or manually entered.
  • Field: purchaseOrderNumber

    • Type: String
    • Notes: Free text field for users to associate other data (e.g., Invoice number, PO number).
    • Sample: PO Num 001
  • Field: parentId

    • Type: GUID/UUID
    • Notes: Qashio unique reference to the related transaction that parented this transaction (in cases of reversals, etc.).
    • Sample: 7370c48a-2a48-4d06-bca9-0a2219cdd54e
  • Field: excludeFromSync

    • Type: Boolean
    • Notes: Used to indicate if the transaction should be excluded from sync. Primarily used with Qashio's direct integrations.
    • Default: FALSE
    • Sample: False
  • Field: approvalStatus

    • Type: String
    • Notes: Indicates the status of the post-transaction approval.
  • Field: merchantName

    • Type: String
    • Notes: Merchant Name as received from the network.
    • Sample: OPENΑΙ *CHATGPT SUBSCR
  • Field: erpSupplierName

    • Type: String
    • Notes: Name of ERP supplier selected on the transaction.
    • Sample: OpenAl *Chatgpt Subscr
  • Field: erpSupplierRemoteId

    • Type: String
    • Notes: Code/ERP Internal Id of the ERP supplier selected on the transaction.
    • Sample: cc4e6a6a-95c5-4e3b-be29-36672dfd84a5
  • Field: expenseCategoryName

    • Type: String
    • Notes: Qashio Expense Category based on the Merchant classifications in the Visa network.
    • Sample: Electronics & Computer
  • Field: segments

    • Type: Array of Objects
    • Notes: Details on the accounting segments associated with the transaction, including default and custom segments.
  • Field: cardName

    • Type: String
    • Notes: Nickname of the card associated with this transaction.
    • Sample: ChatGPT Card
  • Field: cardLastFour

    • Type: String
    • Notes: Last four digits of the card associated with this transaction.
    • Sample: 3688
  • Field: cardHolderName

    • Type: String
    • Notes: Name of the Card Holder.
    • Sample: John Smith
  • Field: cardHolderEmail

    • Type: String
    • Notes: Email of the Card Holder.
    • Sample: john.smith@qashio.com
  • Field: receipts

    • Type: Array of Strings
    • Notes: Array of URLs to the user-uploaded receipt/invoice attachments against the transaction.
  • Field: lineItems

    • Type: Array
    • Notes: Used when a transaction is split into different accounting segments.

4. Suggested ERP Integration Scenarios

The following scenarios illustrate how clients can integrate Qashio transaction data into their ERP systems. These examples assume usage of the /erp-transactions endpoint.

Integration-Critical Notes:

  • billingCurrency should be used for all integrations as it represents the actual card account currency charged.
  • billingAmount is the amount initially authorized on the card.
  • transactionCategory should be included.
  • account_transfer represents transfers to subsidiaries.

1. Card-Level and Cardholder Reconciliation

Group transactions by cardHolderEmail, cardName, or cardLastFour for reconciliation against individual card statements or limits.

2. Approved-Only Sync

Restrict ERP posting to transactions where approvalStatus is 'approved' for finance-reviewed entries only.

3. Excluded Transactions for System-Based Logic

Respect the excludeFromSync flag to skip transactions intentionally left out of ERP integration by admins or automation.

4. Account Transfer (Inter-Company Entries)

Include transactionCategory: account_transfer entries to post inter-company transactions between subsidiaries as ERP journal entries.

5. Line-Level Allocation (Advanced)

Where users have created lineItems, use them to break a transaction into multiple ERP line entries, mapping different GL codes and tax treatments.