# Get card transaction

Retrieve a card transaction by its ID.

Use in conjunction with the V2.1.0 card transaction state change webhook.

{% admonition type="warning" %}
Only transactions created in the past 90 days can be accessed. A 422 error code will be returned otherwise.
{% /admonition %}

When a refund happens, a separate transaction will be added with a REFUND transaction type.

Endpoint: GET /v4/spend/profiles/{profileId}/cards/transactions/{transactionId}
Security: UserToken

## Path parameters:

  - `profileId` (integer, required)
    The ID of the profile that owns the card.
    Example: 123456

  - `transactionId` (integer, required)
    The ID of the transaction.
    Example: 342671

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.
    Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

## Response 200 fields (application/json):

  - `id` (integer)
    ID of the transaction
    Example: 342671

  - `cardToken` (string)
    Unique identifier of the card
    Example: "59123122-223d-45f9-b840-0ad4a4f80937"

  - `type` (string)
    [Type](/api-reference/card-transaction#card-transaction-type) of the transaction. One of:
- ACCOUNT_CREDIT
- ACCOUNT_FUNDING
- CASH_ADVANCE
- CASH_WITHDRAWAL
- CHARGEBACK
- CREDIT_TRANSACTION
- ECOM_PURCHASE
- POS_PURCHASE
- REFUND
    Enum: "ACCOUNT_CREDIT", "ACCOUNT_FUNDING", "CASH_ADVANCE", "CASH_WITHDRAWAL", "CHARGEBACK", "CREDIT_TRANSACTION", "ECOM_PURCHASE", "POS_PURCHASE", "REFUND"

  - `state` (string)
    The current [state](/api-reference/card-transaction#card-transaction-state) of the transaction. One of:
- IN_PROGRESS
- COMPLETED
- DECLINED
- CANCELLED
- UNKNOWN
    Enum: "IN_PROGRESS", "COMPLETED", "DECLINED", "CANCELLED", "UNKNOWN"

  - `declineReason` (string,null)
    Code of the [decline reason](/api-reference/card-transaction#card-transaction-decline-reasons) if applicable

  - `detailedDeclineReason` (string,null)
    Code of the [detailed decline reason](/api-reference/card-transaction#card-transaction-detailed-decline-reasons) if applicable

  - `creationTime` (string)
    When the transaction was created
    Example: "2022-11-28T08:17:54.241Z"

  - `modificationTime` (string)
    When the transaction was last updated
    Example: "2022-11-28T08:17:54.241Z"

  - `purgeTime` (string,null)
    Time at which reserved funds will be released after the authorisation hold expires
    Example: "2022-11-28T08:17:54.241Z"

  - `transactionAmount` (object)
    Transaction amount, including any embedded fees such as ATM fees that are not applied by Wise

  - `transactionAmount.amount` (number)
    Transaction amount
    Example: 1.4

  - `transactionAmount.currency` (string)
    Currency code
    Example: "SGD"

  - `fees` (array)
    Array of fees

  - `fees.amount` (number)
    Fee amount
    Example: 0.1

  - `fees.currency` (string)
    Currency code
    Example: "SGD"

  - `fees.fee_type` (string)
    Fee type
    Example: "ATM_ACQUIRER"

  - `transactionAmountWithFees` (object)
    Transaction amount including all fees

  - `transactionAmountWithFees.amount` (number)
    Transaction amount including all fees
    Example: 1.5

  - `transactionAmountWithFees.currency` (string)
    Currency code
    Example: "SGD"

  - `merchant` (object)
    Merchant information

  - `merchant.name` (string)
    Name of the merchant
    Example: "Test Payment"

  - `merchant.location` (object)
    Merchant location

  - `merchant.location.country` (string,null)
    Country where merchant is located
    Example: "France"

  - `merchant.location.city` (string,null)
    City where merchant is located
    Example: "Rouen"

  - `merchant.location.zipCode` (string,null)
    Zip code where merchant is located
    Example: "00000"

  - `merchant.location.region` (string,null)
    Region where merchant is located

  - `merchant.location.state` (string,null)
    State where merchant is located

  - `merchant.category` (object)
    Merchant category

  - `merchant.category.name` (string)
    Category of the merchant
    Example: "MISCELLANEOUS_FOOD_STORES_CONVEN"

  - `merchant.category.code` (string)
    MCC code of the merchant
    Example: "5999"

  - `merchant.category.description` (string)
    Description of the merchant category
    Example: "5999 R Miscellaneous and Special"

  - `authorisationMethod` (string)
    Authorisation method
    Example: "MANUAL_ENTRY"

  - `approvalCode` (string,null)
    Also called authorization code. This can be used to prove ownership of a customer's card/account to a merchant
    Example: "913647"

  - `billingAmount` (object)
    Billing amount

  - `billingAmount.amount` (number)
    Billing amount
    Example: 1.1

  - `billingAmount.currency` (string)
    Currency code
    Example: "EUR"

  - `arn` (string,null)
    Acquirer reference number
    Example: "04300014127798385983852"

  - `pinValidationResult` (string,null)
    PIN validation result. One of:
- ONLINE_PIN_VALIDATED
- ONLINE_PIN_INVALID
- OFFLINE_PIN_VALIDATED
- OFFLINE_PIN_INVALID
- NOT_RECEIVED
    Enum: "ONLINE_PIN_VALIDATED", "ONLINE_PIN_INVALID", "OFFLINE_PIN_VALIDATED", "OFFLINE_PIN_INVALID", "NOT_RECEIVED"

  - `balanceChannelReferenceId` (string,null)
    Balance channel reference ID associated with the card transaction
    Example: "6e71018d-2f4d-4fc3-6711-f517f4664712"

  - `debits` (array)
    Array of debits. Only present when retrieving a single transaction by ID.

The debits list is a non-aggregated list of debit movements, meaning that the balanceId is not unique in the list. For example, a cancelled transaction may have a list of 2 debits where the absolute values of debitedAmount.amount, forAmount.amount and fee.amount are the same, but one is the negation of the other due to a reservation (first debit) which was then released (second debit with negated amounts). You can choose to perform the aggregation in your system or display the full list of debits to the end customer.

  - `debits.balanceId` (integer)
    Balance ID
    Example: 52832

  - `debits.debitedAmount` (object)
    Amount taken from the balance

  - `debits.debitedAmount.amount` (number)
    Amount
    Example: 1.1

  - `debits.debitedAmount.currency` (string)
    Currency code
    Example: "EUR"

  - `debits.forAmount` (object)
    Amount converted to

  - `debits.forAmount.amount` (number)
    Amount
    Example: 1.5

  - `debits.forAmount.currency` (string)
    Currency code
    Example: "SGD"

  - `debits.rate` (number)
    Exchange rate of debitedAmount to forAmount
    Example: 1.36363636364

  - `debits.fee` (object)
    Conversion fee

  - `debits.fee.amount` (number)
    Conversion fee amount
    Example: 0.04

  - `debits.fee.currency` (string)
    Currency code
    Example: "EUR"

  - `debits.creationTime` (string)
    Creation time of debit
    Example: "2022-11-28T08:17:54.241Z"

  - `credits` (array)
    Array of credits. Only present when retrieving a single transaction by ID

  - `credits.balanceId` (integer)
    Balance ID
    Example: 52832

  - `credits.creditedAmount` (object)
    Amount credited to the balance

  - `credits.creditedAmount.amount` (number)
    Amount
    Example: 1.5

  - `credits.creditedAmount.currency` (string)
    Currency code
    Example: "SGD"

  - `credits.creationTime` (string)
    Creation time of credit
    Example: "2022-11-28T08:17:54.241Z"

  - `relayAuthorisationData` (object,null)
    Relayed authorisation response data, only available if the partner has opted in for [relayed authorisation](/guides/product/issue-cards/relayed-authorisation)

  - `relayAuthorisationData.responseCode` (string)
    [ResponseCode](/guides/product/issue-cards/relayed-authorisation#authorisation-response) of the relayed authorisation. One of:
- APPROVED
- PROCESSING_ERROR
- NON_SUPPORTED_CURRENCY
- NON_SUPPORTED_MCC_FOR_COUNTRY
- BLOCKED_COUNTRY
- TRANSACTION_TYPE_NOT_SUPPORTED
- SUSPECTED_FRAUD
    Enum: "APPROVED", "PROCESSING_ERROR", "NON_SUPPORTED_CURRENCY", "NON_SUPPORTED_MCC_FOR_COUNTRY", "BLOCKED_COUNTRY", "TRANSACTION_TYPE_NOT_SUPPORTED", "SUSPECTED_FRAUD"

  - `relayAuthorisationData.fallback` (boolean)
    Indicating whether there was a fallback applied by Wise
    Example: true


