Transaction Response Codes
Transaction Detail
| Property | Type | Description |
|---|---|---|
| transactionId | String | Identifier for a transaction |
| transactionStatus | TransactionStatus | Represents the various statuses a transaction can have |
| transactionType | TransactionType | The type of transaction (e.g., AUTH, REFUND, etc.) |
| transactionAmount | Int | The amount of the transaction in minor units |
| tipAmount | Int? | Tip amount of the transaction in minor units |
| transactionDate | Date | Date and time of the transaction |
| merchantId | String | Identifier of the merchant |
| terminalId | String | Identifier of the terminal |
| cancellable | Bool | Indicates if the transaction can be cancelled (reversed) |
| applicationLabel | String? | Application label from the card |
| cardType | String? | Type of card used (e.g., VISA, MASTERCARD) |
| expiryDate | Date? | Expiry date of the card |
| authId | String | Authorization identifier |
| AID | String? | Application Identifier |
| cardNumber | String | Masked card number |
| responseCode | String? | Response code from the host |
| responseMsg | String? | Response message from the host |
| CID | String? | Cryptogram Information Data |
| applicationCryptogram | String? | Application cryptogram |
| externalID | String? | External identifier for the transaction |
| retrievalRefNum | String? | Retrieval Reference Number (RRN) |
| refundedTransactionId | String? | ID of the original transaction that was refunded |
| refundedDate | Date? | Date of the refund |
| refundedMaskedPan | String? | Masked PAN of the card used for the refund |
| isReversalAvailable | Bool? | Indicates if reversal is available for this transaction |
| paymentMethod | PaymentMethod | Payment method used (e.g., CARD, BLIK, QRCODE) |
| refundable | Bool? | Indicates if the transaction is refundable |
| ref1 | String? | Optional reference field 1 |
| ref2 | String? | Optional reference field 2 |
| currency | Currency? | Currency of the transaction |
| dccStatus | DCCStatus? | Status of Dynamic Currency Conversion |
| dccAmount | Int? | DCC amount in minor units |
| dccCurrency | Currency? | DCC currency |
| dccExchangeRate | Double? | Exchange rate for DCC |
| dccMarkup | Double? | Markup for DCC |
| dccEcbIndicator | Bool? | ECB indicator for DCC |
| transactionRetry | Int? | Number of retries for the transaction |
Note: A field is considered mandatory if it cannot be null.
Note for masked PAN handling
- In Mobile response and on transaction detail on mobile full masked PAN (BIN + asterisk + last 4 digits: 2345 34** **** 1234) should be displayed.
- In WPI response full masked PAN should be returned but in formatted receipt and in JSON receipt ‘short last pan: ’ (asterisk and last 4 digits: **** **** **** 1234) should be included.
- In merchant portal full masked PAN should be presented.
- On transaction confirmation (customer receipt) - short last pan should be displayed
Note for expiry date
- Expiry date by default is returned masked (xx/xx) but it depends on dynamic property api.intent.cardexp.enabled. If this parameter is set to TRUE, clear expiry date is returned to mobile and:
- Displayed on transaction details in mobile application
- Returned in WPI and payment response of the SDK
- Returned on WPI formatted/json receipt in WPI response
TransactionStatus
| Status | Meaning |
|---|---|
| CLEARED | Transaction is authorized and cleared properly by acquirer. |
| PIN_REQUESTED | Pin is required to finish transaction. If something happens at this stage (ie. Mobile went death) then this status stays. In fact the result is - no transaction was done. |
| NEW | New transaction (not performed yet), just when transaction was created in DB |
| REJECTED | Transaction was rejected after initiation. similar to DECLINED, but due to other reasons, when refusal to make transaction is done earlier i.e. Overlay app pops up (some other app above ToM) or when the user minimizes the app during a transaction. DECLINE is done by processor, REJECT can be done by SoftPos kernel. |
| REFUNDED | Transaction was refunded and refund was successful. When the transaction was done (with CLEARED), and additional REFUND message was created to original one. The result is the money is returned to the card account. |
| TIMEOUT | Transaction authorization timeout (POS side). There is 120 seconds to read the card, 60 seconds to enter the PIN, 30 seconds for authorization. |
| USER_CANCELLED | Transaction is cancelled by user on terminal screen |
| ERROR | Transaction not authorized due to server error, if something happens that is extraordinary (technical part) |
| TERMINAL_DECLINED | Transaction was declined by terminal (i.e. Kernel declined because of expiry, declined by VISA/MC,…) |
| ONGOING | Transaction in progress, sent request to acquirer and waiting for the response from processor / acquirer (SIX) |
| AUTHORIZED | Transaction authorized successfully, after receiving the response from processor / acquirer, and accepted. For WL it will be automatically CLEARED. |
| DECLINED | Transaction authorization denied, (refused by processor/acquirer host) |
| CANCELLED | Transaction is cancelled after successful authorization |
| DCC_REQUIRED | Transaction requires DCC (Dynamic Currency Conversion). |
TransactionType
| Type | Meaning |
|---|---|
| AUTH | A successful transaction authorized |
| REFUND | A successful transaction refund |
PaymentMethod
| Type | Meaning |
|---|---|
| CARD | Transactions made using TTPOI or other NFC readers. |
| QRCODE | Transactions made using QR code payments. (Alternative Payment Method) |
| BLIK | Transactions made using BLIK. |
| UNKNOWN | Unknown payment method |
Transaction Response Codes
Both TransactionDetail and APMTransaction have a parameter called Response Code which returns the number corresponding to the transaction response:
- If the transaction code is 0:
- transaction response approved
- If the transaction code is one of [06, 09, 21, 58, 97, 98, 99]:
- transaction response technical error
- If the transaction code is 10:
- transaction response partial approval
- If the transaction code is 11:
- transaction response invalid transaction
- If the transaction code is 33:
- transaction response expired card
- If the transaction code is 43:
- transaction response not permitted
- If the transaction code is 55:
- transaction response incorrect pin
- If the transaction code is 56:
- transaction response invalid card
- If the transaction code is 60:
- transaction response pin required
- If the transaction code is 61:
- transaction response insufficient funds
- If the transaction code is 67:
- transaction response exceeds withdrawal amount
- If the transaction code is 77:
- transaction response pin try limit
- If the transaction code is 86:
- transaction response exceeds withdrawal frequency
- If the transaction code is 87:
- transaction response approved purchase_only
- For any other transaction code (default case):
- transaction response declined