Card Transactions

These APIs allow you to retrieve information on transactions that are made on your user's cards.

The possible state values are:

  • IN_PROGRESS - The transaction has been authorized but not captured.
  • COMPLETED - The transaction has been captured and/or settled.
  • DECLINED - The transaction has been declined.
  • CANCELLED - The transaction has been cancelled.
  • UNKNOWN - Default fallback status if the state can't be confirmed.

The transition from CANCELLED to COMPLETED is an edge case. Wise is releasing the customer funds after 7 days if the merchant has not capture the transaction, the state becomes CANCELLED. But the merchant can decide to capture the transaction after 7 days, the state will then be COMPLETED.

Transaction state flow

The decline reason field provides information about the specific issue that led to the transaction being declined, helping the merchant and the customer troubleshoot the problem.

While the 'decline reason' field provides valuable information about the specific issue that led to the transaction being declined, it may not cover all possible reasons for a decline, such as technical issues or unforeseen circumstances.

Please do NOT expose statuses that are not listed below to your customers
ACCOUNT_INACTIVE

Balance related to the transaction is not active.

Please ensure that all outstanding actions have been completed before using your card, as this may help avoid any potential issues or declines.

BLOCKED_COUNTRY

Transactions were made in unsupported countries.

Check out this link to see if the country is included in our list of supported nations.

It is possible for a merchant to be based in a supported country and have an address registered in a blocked country, albeit infrequently.

CARD_EXPIRED

The card provided has reached its expiration date, making it invalid for this transaction.

CARD_FROZEN

The customer or our customer service team has put this card on a temporary hold.

If the card has not been frozen by the customer, it may be worth investigating further.

To resume spending, advise customer to unfreeze the card.

CARD_INACTIVE

The card is either not active or has not been received by the customer, so we are unable to proceed with the transaction.

CHIP_PIN_ENTRY_TRIES_EXCEEDED

The PIN is restricted on the chip of the card due to excessive incorrect entries.

The blocked PIN can be unlocked at an ATM using specific steps that vary depending on the machine and country, such as PIN management or PIN operations followed by unblocking the PIN.

CONTACTLESS_PIN_ENTRY_REQUIRED

Contactless payment systems sometimes require a PIN for authentication purposes to protect users' accounts from potential fraud or tampering.

In Europe, contactless payment transactions that follow one after the other require PIN verification as an additional security measure.

CUMULATIVE_LIMIT_EXCEEDED

In Singapore, regulatory requirements dictate that some customers must adhere to specific spending limits on their Wise balances, leading to this decline reason when they exceed their allowed amounts.

DECLINED_ADVICE

There's a problem with the message from the processor, so we might not be able to accept it because it could be incomplete or unsafe.

Just because we can't process the payment right now doesn't mean there's anything wrong with the card.

Tell the customer that there was a technical issue with the payment and to try again later.

INCORRECT_CVV

The customer accidentally entered the wrong security code.

Please advise the customer to check their card details and try again.

If the customer's saved card details are correct, they should remove their card details from the merchant's website and then add them back again.

INCORRECT_EXPIRY_DATE

The customer made a mistake and entered the wrong expiration date for their card.

If the customer's saved card details are correct, they should remove their card details from the merchant's website and then add them back again.

INCORRECT_PIN

The customer entered their PIN incorrectly.

Please advise the customer to check their PIN and try again.

If the PIN is correct and still fails, kindly suggest resetting the PIN.

INSUFFICIENT_FUNDS

The customer doesn't have enough money in their account to make the payment.

Please advise the customer to add money to their account and try again. In most cases, this will resolve the issue.

INVALID_3DS_UCAF

The 3D Secure checks failed during the transaction, so the customer should try again and ask for authentication.

INVALID_TRANSACTION

We don't support certain types of transactions, so the customer should ask the merchant to use a different payment method or try a different merchant.

MANDATE_DCC_NON_SUPPORTED_FOR_CARD_COUNTRY

The transaction was declined because our system doesn't support conversions for Brazilian cards when BRL is involved.

The BRL won't be automatically exchanged to other currencies.

If the customer wants to continue with the payment, they need to change the currency they're using.

MANDATE_LOCAL_CASH_WITHDRAWAL_NOT_ALLOWED

At present, we do not support ATM withdrawals in the country of transaction.

NON_SUPPORTED_CURRENCY

At present, we do not offer support for this currency in this transaction.

NON_SUPPORTED_MCC_FOR_COUNTRY

At present, we do not offer support for transactions in this category for customers in the country of purchase. Please consider using an alternative payment method or changing merchant.

PAYMENT_METHOD_DAILY_LIMIT_EXCEEDED

The customer has reached daily spending limit.

Please advise if they would like to increase their daily limit.

PAYMENT_METHOD_LIFETIME_LIMIT_EXCEEDED

The customer has reached lifetime spending limit.

Please advise if they would like to increase their lifetime limit.

PAYMENT_METHOD_MONTHLY_LIMIT_EXCEEDED

The customer has reached monthly spending limit.

Please advise if they would like to increase their monthly limit.

PAYMENT_METHOD_NOT_ALLOWED

This payment type has been disabled

Please advise if they would like to enable the payment type.

PAYMENT_METHOD_TRANSACTION_LIMIT_EXCEEDED

The customer has exceeded transaction/daily/monthly limit for this payment type.

Please advise if they would like to update the limit.

PIN_ENTRY_TRIES_EXCEEDED

The customer has reached the maximum number of allowed PIN entry attempts.

To avoid further inconvenience, we recommend implementing a reset PIN feature within your app to help the customer regain access to their card.

PRE_ACTIVATED_CARD_PIN_ENTRY_REQUIRED

The customer has attempted to make a contactless payment at a Point of Sale (POS), but their card has not been activated for chip + PIN transactions.

For US/Japan issued cards, please advise the customer to enter the 6-digit activation code provided to complete the transaction.

PROCESSING_ERROR

Our system is currently experiencing technical difficulties.

Please advise the customer to try again after a brief period of time.

RESTRICTED_MODE

Although rare, restricted mode can happen, and it's advisable to advise the customer to replace their card promptly as our system should have already informed them.

In this mode, more secure payment methods like chip + PIN, contactless, mobile wallets, and online payments with 3DS are allowed, while less secure methods like magnetic stripe and online payments without 3DS are not permitted.

SCA_SOFT_DECLINE

We cannot proceed with the transaction due to SCA regulations.

Kindly suggest to the customer that they contact the merchant and use a more secure authentication method such as 3DS.

SECURITY_CVM_FAILURE

Our system has detected that the POS terminal was misconfigured and failed our security checks.

Kindly suggest to the customer that they use an alternative payment method like contactless or mobile wallets, or recommend that they ask the merchant to accept a signature instead.

SECURITY_MAGSTRIPE_SECURE_ELEMENTS_INCORRECT_OR_MISSING

The merchant has entered the wrong type of purchase.

Please advise the customer to contact the merchant and ask them to correct this issue.

SECURITY_PIN_ENTRY_REQUIRED

The customer's offline PIN is locked because they entered it incorrectly three times. To unlock it, they need to use an ATM to unblock their PIN.

TRANSACTION_TYPE_NOT_SUPPORTED

We have restrictions on this type of transaction, and sometimes the scheme won't allow it.

Please check if spend control is set up to block this transaction.

idtext

ID of the transaction

cardTokenstring

Unique identifier of the card

typestring

Type of the transaction

declineReasonDeclineReason

Code of the decline reason if applicable

createdDatedatetime

When transaction or transaction state change occurred

statestring

The current state of the transaction

cardLastDigitsstring

Last 4 digits of the card

transactionAmount.valuedecimal

Transaction amount

transactionAmount.currencystring

Currency code

fees[n].amountdecimal

Fee amount

fees[n].currencystring

Currency code

fees[n].fee_typestring

Fee type

transactionAmountWithFees.valuedecimal

Transaction amount including fees

transactionAmountWithFees.currencystring

Currency code

merchant.idstring

ID of the merchant

merchant.namestring

Name of the merchant

merchant.location.countrystring

Country where merchant is located

merchant.location.citystring

City where merchant is located

merchant.location.zipCodestring

Zip code where merchant is located

merchant.location.regionstring

Region where merchant is located

merchant.location.statestring

State where merchant is located

merchant.category.namestring

Category of the merchant

merchant.category.codestring

MCC code of the merchant

merchant.category.descriptionstring

Description of the merchant

authorisationMethodstring

Authorisation method

balanceTransactionIdinteger

Associated balance transaction id if applicable

balanceTransactionIdinteger

Associated balance transaction id if applicable

debits[n].balanceIdinteger

Balance id

debits[n].debitedAmount.valuedecimal

Amount taken from the balance

debits[n].debitedAmount.currencystring

Currency code

debits[n].forAmount.valuedecimal

Amount converted to

debits[n].forAmount.currencystring

Currency code

debits[n].ratedecimal

Exchange rate

debits[n].fee.amountdecimal

Conversion fee amount

debits[n].fee.currencystring

Currency code

Example
{
"id": "342671",
"cardToken": "59123122-223d-45f9-b840-0ad4a4f80937",
"type": "ECOM_PURCHASE",
"declineReason": null,
"createdDate": "2022-11-28T08:17:54.241236Z",
"state": "IN_PROGRESS",
"cardLastDigits": "3086",
"transactionAmount": {
"amount": 1.5,
"currency": "SGD"
},
"fees": [],
"transactionAmountWithFees": {
"amount": 1.5,
"currency": "SGD"
},
"merchant": {
"id": "332512",
"name": "Test Payment",
"location": {
"country": "France",
"city": "Rouen",
"zipCode": "00000",
"region": null,
"state": null
},
"category": {
"name": "RMiscellaneousAndSpecial",
"code": "5999",
"description": "5999 R Miscellaneous and Special"
}
},
"authorisationMethod": "MANUAL_ENTRY",
"balanceTransactionId": 2598366,
"debits": [
{
"balanceId": 52832,
"debitedAmount": {
"amount": 1.06,
"currency": "EUR"
},
"forAmount": {
"amount": 1.5,
"currency": "SGD"
},
"rate": 1.43073,
"fee": {
"amount": 0.01,
"currency": "EUR"
}
}
]
}

GET /v3/spend/profiles/{{profileId}}/cards/transactions/{{transactionId}}

Retrieve a card transaction based on its transaction ID.

Example Request
curl -X GET 'https://api.sandbox.transferwise.tech/v3/spend/profiles/{{profileId}}/cards/transactions/{{transactionId}}
-H 'Authorization: Bearer <your api token>'

Response

The possible type values are:

  • ACCOUNT_CREDIT - Receiving money on the card, excluding Visa OCT or Mastercard MoneySend
  • ACCOUNT_FUNDING - Sending money to another card or e-wallet
  • CASH_ADVANCE - Cash disbursement
  • CASH_WITHDRAWAL - ATM withdrawal
  • CHARGEBACK - Currently unused. Reserved for future use.
  • CREDIT_TRANSACTION - Visa OCT and Mastercard MoneySend
  • ECOM_PURCHASE - Online purchase
  • POS_PURCHASE - Purchase via a POS Terminal
  • REFUND - Partial or full refund of an existing card transaction

The possible state values are listed here

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

Example Response
{
"id": "342671",
"cardToken": "59123122-223d-45f9-b840-0ad4a4f80937",
"type": "ECOM_PURCHASE",
"declineReason": null,
"createdDate": "2022-11-28T08:17:54.241236Z",
"state": "IN_PROGRESS",
"cardLastDigits": "3086",
"transactionAmount": {
"amount": 1.5,
"currency": "SGD"
},
"fees": [],
"transactionAmountWithFees": {
"amount": 1.5,
"currency": "SGD"
},
"merchant": {
"id": "332512",
"name": "Test Payment",
"location": {
"country": "France",
"city": "Rouen",
"zipCode": "00000",
"region": null,
"state": null
},
"category": {
"name": "RMiscellaneousAndSpecial",
"code": "5999",
"description": "5999 R Miscellaneous and Special"
}
},
"authorisationMethod": "MANUAL_ENTRY",
"balanceTransactionId": 2598366,
"debits": [
{
"balanceId": 52832,
"debitedAmount": {
"amount": 1.06,
"currency": "EUR"
},
"forAmount": {
"amount": 1.5,
"currency": "SGD"
},
"rate": 1.43073,
"fee": {
"amount": 0.01,
"currency": "EUR"
}
}
]
}