# Get transaction details

Retrieve data about a specific transaction.

## Get a transaction's details

/v1/transactions/{merchant}/{site}

Looks up a transaction by identifier. Provide at least one of `merchantTransactionId` or `systemTransactionId`. Pass `fundingType` for the payment method you used. For pay-by-bank, also pass `apmProvider`. The response is a JSON array with zero or one transaction object. This endpoint isn't a list or search API.

### Request examples

To get a transaction's details, supply the `merchant` and `site` associated with the transaction, either its `merchantTransactionId` or its `systemTransactionId`, and the `fundingType`. For pay-by-bank lookups, also supply `apmProvider`.

Merchant transaction ID
```curl
curl --request GET \
     --url 'https://api-services.pxp.io/api/v1/transactions/MERCHANT-1/SITE-1?merchantTransactionId=ECOM-001&fundingType=Card' \
     --header 'accept: application/json'
```

System transaction ID
```curl
curl --request GET \
     --url 'https://api-services.pxp.io/api/v1/transactions/MERCHANT-1/SITE-1?systemTransactionId=1ed768bb-e88a-4636-91ae-67927ccbb02b&fundingType=Card' \
     --header 'accept: application/json'
```

FlashFlow
For FlashFlow, pass `systemTransactionId`, `fundingType` set to `PayByBank`, and `apmProvider` set to `Flashflow`.

```curl
curl --request GET \
     --url 'https://api-services.pxp.io/api/v1/transactions/MERCHANT-1/SITE-1?systemTransactionId=1ed768bb-e88a-4636-91ae-67927ccbb02b&fundingType=PayByBank&apmProvider=Flashflow' \
     --header 'accept: application/json'
```

#### Path parameters

The following path parameters identify the merchant and site for the lookup.

| Parameter | Description |
|  --- | --- |
| `merchant`string (≤ 20 characters) | The unique merchant identifier associated with this transaction, as assigned by PXP. |
| `site`string (≤ 50 characters) | The unique site identifier associated with this transaction, as assigned by PXP. |


#### Query parameters

Provide at least one transaction identifier. Include `fundingType` for the payment method you used.

| Parameter | Description |
|  --- | --- |
| `merchantTransactionId`string (≤ 50 characters) | The unique identifier that you assigned to this transaction. Required for lookup unless `systemTransactionId` is provided. |
| `systemTransactionId`string (36 characters) | The unique identifier assigned to this transaction by PXP. Required for lookup unless `merchantTransactionId` is provided. For FlashFlow, always supply the `systemTransactionId` from the initiation response. |
| `fundingType`string | The funding type used for the transaction. Possible values: `Card`, `Cage`, `Paypal`, `PayByBank`. For FlashFlow, set this to `PayByBank`. |
| `apmProvider`string | The APM provider for a pay-by-bank transaction query. For example `Aeropay`, `Spei`, `Cvu`, `Breb`, or `Flashflow`. Required when `fundingType` is `PayByBank`. For FlashFlow, set this to `Flashflow`. |


### Response examples

If your request is successful, you'll receive a `200` response containing a JSON array with zero or one transaction object:

- `[]` when no matching transaction is found.
- A single-element array when a match is found.


E-commerce - Card (Authorised)
```json
[
  {
    "systemTransactionId": "1ed768bb-e88a-4636-91ae-67927ccbb02b",
    "state": "Authorised",
    "stateData": {
      "code": "CRD000",
      "message": "Approved"
    },
    "transactionMethod": {
      "intent": "Authorisation",
      "fundingType": "Card",
      "entryType": "Ecom"
    },
    "approvalCode": "123456",
    "merchant": "MERCHANT-1",
    "site": "SITE-1",
    "merchantTransactionId": "ECOM-001",
    "merchantTransactionDate": "2024-01-27T08:51:02.826Z",
    "fundingData": {
      "maskedPrimaryAccountNumber": "************1234",
      "cardScheme": "Visa",
      "expiryMonth": "12",
      "expiryYear": "2025",
      "gatewayTokenIdBase32": "GA4TSMZVGE3DKMRVGQZTCMBYGE",
      "providerResponse": {
        "provider": "pxpfinancial",
        "code": "00",
        "message": "Transaction Approved"
      }
    }
  }
]
```

E-commerce - FlashFlow (Executed)
A FlashFlow query returns the last persisted transaction state. It doesn't call FlashFlow live. Treat merchant webhooks as the authoritative final outcome, and use query for reconciliation.

```json
[
  {
    "state": "Executed",
    "systemTransactionId": "1ed768bb-e88a-4636-91ae-67927ccbb02b",
    "merchantTransactionDate": "2026-09-21T10:00:00Z",
    "merchantTransactionId": "FLASHFLOW-TXN-001",
    "merchant": "MERCHANT-1",
    "site": "SITE-1",
    "providerTransactionId": "flashflow-ref-001",
    "transactionMethod": {
      "intent": "Purchase"
    },
    "fundingData": {
      "payByBank": {
        "apmProvider": "Flashflow",
        "approvedAmount": 42.50,
        "gatewayTokenId": "b6e2f1a4-c3d8-4f7a-b1e9-d2c3f4a5b6c7"
      }
    }
  }
]
```

In-store - Card (Authorised)
For in-store transactions, the response may also include a root-level `entryType` describing how the card was presented (for example, `CardContactless`). This is separate from `transactionMethod.entryType`, which is always `Instore`.

```json
[
  {
    "state": "Authorised",
    "stateData": {
      "code": "CRD000",
      "message": "Approved"
    },
    "transactionMethod": {
      "entryType": "Instore",
      "fundingType": "Card",
      "intent": "EstimatedAuthorisation"
    },
    "merchantTransactionDate": "2026-05-08 09:24:25.000000",
    "systemTransactionId": "0cc27966-4d38-4a7a-8877-135c666952bb",
    "approvalCode": "233765",
    "merchant": "Unity",
    "site": "UnityELVInStore",
    "merchantTransactionId": "1703164920260508",
    "entryType": "CardContactless",
    "fundingData": {
      "maskedPrimaryAccountNumber": "************0190",
      "expiryMonth": "12",
      "expiryYear": "2049",
      "gatewayTokenIdBase32": "JVA47TR36T7UDITG444FPDDRWU",
      "cardScheme": "MasterCard",
      "providerResponse": {
        "provider": "elavon",
        "code": "A",
        "message": "APPROVAL",
        "merchantId": "2100112262",
        "terminalId": "210011226202",
        "schemeTransactionId": "MMCC0004VC000 000508"
      }
    }
  }
]
```

No match
```json
[]
```

For FlashFlow query responses, `fundingData.payByBank.iframeSrc` isn't returned. `fundingData.payByBank.gatewayTokenId` is omitted when not yet stored on the transaction. `fundingData.payByBank.approvedAmount` is always present as a number when stored, or as `null` when not yet stored.

#### Response properties

Each item in the array is a transaction object. Key fields include:

| Property | Description |
|  --- | --- |
| `systemTransactionId`string | The unique identifier assigned to this transaction by PXP. |
| `merchantTransactionId`string | The unique identifier that you assigned to this transaction. |
| `merchantTransactionDate`date-time | The date and time when the transaction was initiated, in ISO 8601 format. |
| `merchant`string | The merchant identifier associated with this transaction. |
| `site`string | The site identifier associated with this transaction. |
| `state`string (enum) | The current state of the transaction. [Learn more about states](/guides/transactions/how-it-works#states). |
| `stateData`object | A response code and message describing the transaction outcome. [Learn more about state data](/guides/transactions/how-it-works#state-data-response-codes). |
| `stateData.code`string | The state details code (e.g., `CRD000`). |
| `stateData.message`string | The state details message (e.g., `Approved`). |
| `transactionMethod`object | Details about the transaction method, including `intent`, `fundingType`, and `entryType`. |
| `approvalCode`string | The approval code returned by the authorising entity, when applicable. |
| `providerTransactionId`string | The unique identifier assigned by the financial service provider for the transaction, when returned. |
| `entryType`string (enum) | For in-store transactions, the method by which the card was presented (e.g., `ChipAndPin`, `CardContactless`). Returned at the root of the transaction object. |
| `fundingData`object | Details about the payment method used for the transaction. For card, this can include scheme, masked PAN, token IDs, and verification results. For FlashFlow, look under `fundingData.payByBank`. |
| `fundingData.gatewayTokenId`string | A securely stored token for the payment card, when returned. |
| `fundingData.gatewayTokenIdBase32`string | The Base32-encoded representation of the gateway token ID, when returned. |
| `fundingData.payByBank.apmProvider`string | The APM provider for a pay-by-bank transaction. For FlashFlow query responses, this is `Flashflow`. |
| `fundingData.payByBank.approvedAmount`number or null | The FlashFlow floating settlement amount when stored. On FlashFlow query responses this field is always present as a number or as `null`. |
| `fundingData.payByBank.gatewayTokenId`string | A PXP payment account token for the FlashFlow bank account when vaulted. Omitted when not yet stored. Reuse as `fundingData.payByBank.gatewayTokenId` on a later FlashFlow payout. |
| `fundingData.providerResponse`object | Raw data received from the payment provider. [Learn more about the provider response](/guides/transactions/how-it-works#provider-response). |