Authorization notification
A notification providing details of an authorization, whether approved or declined. Two key fields provide high level detail of the authorization:
-
ActionCode
indicates whether the authorization succeeded or failed. -
ActionDetail
provides additional detail on the state of the authorization. For failed authorizations, this will provide the reason for failure.
Authorization notification parameters
Parameter Naming
This notification's parameter names contain inconsistent usage of "Authorization", "Authorised" etc.
Parameters | Type | Description |
---|---|---|
NotificationType | string | Three-digit identifier of the notification type. "052" denotes the Authorization notification. |
CardID | integer | Unique Identifier of the card |
AccountNumber | string | Eight-digit account number of the consumer. |
SortCode | string | Six-digit number that identifies the branch of the bank where consumer holds account. |
TransactionID | integer | Unique identifier of the transaction. |
ProcessingCode | integer | Unique identifier of the type of transaction. The code identifies whether a transaction is a authorization, a balance inquiry, sale or cash, or any other transaction. Refer to the Processing Code Lookup table for possible values. |
AuthorizationDate | string | The date and time of authorization. The format is yyyyMMddHHmmss . |
LocalDate | string | The date and time of authorization in local time zone. The format is yyyyMMddHHmmss . |
AuthorisedAmount | integer | The amount authorized for the card transaction, converted into the partner's program base currency and exclusive of any fees. |
CardHolderCurrency | integer | The currency of the card transaction, in the partner's program base currency. Identified by the ISO currency code. |
TransactionAmount | integer | The transaction amount, specified in units of the local currency where the transaction was performed. |
TransactionCurrency | integer | The local transaction currency where the transaction was performed, in ISO numeric code format. |
CashBackAmount | integer | Shows cashback on card transactions, if any. |
MCC | integer | Four-digit numeric code that identifies the merchant"s type of business, product or service |
IsCreditAuthorisation | bool | Indicates whether card transaction is credit type or not. If "True" then transaction is a credit transaction. |
CardAcceptorID | string | Unique identifier of facility, merchant or POS that accepts the consumer"s card for payment. It is a number that can be 1 to 15 digits long and in some cases contains a dash, "-". Provided by VISA. |
TerminalCode | string | Unique identifier of the terminal where card is swiped. Provided by Visa. |
TerminalLocation | string | The location of the terminal where card is swiped. Provided by Visa. |
TerminalStreet | string | The street where card is swiped at a POS or an ATM terminal. Provided by Visa. |
TerminalCity | string | The city where card is swiped at a POS or an ATM terminal. |
TerminalCountry | string | The country where card is swiped at a POS or ATM terminal. Provided by Visa. |
ApprovalCode | string | Approval Code provided by Visa. Provided by Visa. |
IsCardPresent | bool | Indicates whether card was present or not present during the transaction. If "true" then card was present. |
IsCardHolderPresent | bool | Indicates whether consumer "swiped" or "did not swipe" the card at terminal during card transaction. If "True" then card was swiped by the consumer. |
CardAcceptorCountryCode | integer | Indicates country from which card transaction has been done. Denoted by three-digit ISO country code. |
IsPinPresent | bool | Indicates whether PIN "was present" or "not present" during the the card transaction. If "True" then PIN "was present". |
STAN | integer | SYSTEM TRACE AUDIT NUMBER provided by Visa. |
RRN | string | RETRIEVAL REFERENCE NUMBER and is provided by Visa. |
TransactionIndicator | integer | Represents the Transaction Indicator. Refer to the Transaction Indicator Lookup table for possible values. |
AcquiringInstituteID | string | Unique identifier of the Acquirer"s Institution. Provided by Visa |
ForwardingInstitutionID | string | Unique identifier of the forwarding or processing institution. Provided by Visa. |
ClientReferenceNumber | string | Client provided reference number returned by Solaris for tracking or auditing. |
Description | string | The description of transaction authorization. |
FeeAmount | integer | The fee amount converted into the partner's program base currency. |
ActionCode | string | Three digit code that identifies whether the authorization was successful or failed. "000" - Authorization was successful. "999" - Authorization failed. |
ActionDetail | string | Represents the state of Authorization. For successful authorization, ActionDetail would be "Normal, approve" or "PartialAuth". For failed authorizations, it will provide the failure reason. |
FeatureCode | string | Two-digit card feature code that identifies the feature relating to the authorization. Refer to the Feature Code Lookup table for possible values. Please note: This is a conditional field and is not included by default in the notification payload. This field can be enabled by Solaris for inclusion in the notification if required. |
POSEntryMode | string | Code that identifies the method used to enter the cardholder account number and card expiration date. This code specifies whether the entire magnetic stripe is included in an authorization request. Refer to the POS Entry Mode Lookup table for possible values. |
IsReversal | bool | Indicates whether a card transaction is a reversal or not. Possible values are: "1" - denotes the transaction is a reversal. "0" - denotes the transaction is not a reversal. |
AuthorizationID | string | Unique Identifier of the authorization |
TokenID | integer | Unique identifier of the token used for the Authorization, if applicable. For authorizations in which no token was used, this field will be blank. Please note: this field will only be present in the notification payload if it has been enabled by Solaris for the given program. If enabled, the value will be used to comprise the SecurityHash value. |
SecurityHash | string | Contains the hash of the payload values and your webhook security key, to verify the origin and integrity of the notification. |
Example of Authorization notification
{
"NotificationType": "052",
"CardID": "102331",
"AccountNumber": "00156880",
"SortCode": "608370",
"TransactionID": "7837206057187383",
"ProcessingCode": "0",
"AuthorizationDate": "20220324121006",
"LocalDate": "20220324121005",
"AuthorisedAmount": "4700",
"CardHolderCurrency": "826",
"TransactionAmount": "4700",
"TransactionCurrency": "826",
"CashBackAmount": "",
"MCC": "5999",
"IsCreditAuthorisation": "False",
"CardAcceptorID": "VIP4003IP ",
"TerminalCode": "TERMID01",
"TerminalLocation": "ACQUIRER NAME ",
"TerminalStreet": "",
"TerminalCity": "CITY NAME ",
"TerminalCountry": "US",
"ApprovalCode": "187383",
"IsCardPresent": "True",
"IsCardHolderPresent": "True",
"CardAcceptorCountryCode": "840",
"IsPinPresent": "True",
"STAN": "187383",
"RRN": "032412187383",
"TransactionIndicator": "",
"AcquiringInstituteID": "012345678901",
"ForwardingInstitutionID": "",
"ClientReferenceNumber": "",
"Description": "ACQUIRER NAME CITY NAME",
"FeeAmount": "450",
"ActionCode": "000",
"ActionDetail": "Normal, approve",
"FeatureCode": "01",
"POSEntryMode": "5 ",
"IsReversal": "0",
"AuthorizationID": "2637762136219995595",
"TokenID": "609",
"SecurityHash": "c1ea0af294d93e7ca6522d06f757d2735d3cecd33f3159b90359b4a94892ca04"
}
Lookup values for Processing Codes
Processing Code | Description |
---|---|
0 | Goods and services. Debit the customer account. |
1 | Cash Withdrawal/Cash Advance. Debit the customer account |
9 | Purchase with cashback |
11 | Quasi Cash |
20 | Purchase refund |
26 | Cardholder funds transfer |
30 | Balance Inquiry |
40 | Cardholder Account Transfer |
70 | PIN Change |
Lookup values for Feature Code
Feature Code | Description |
---|---|
01 | Payment by card terminal (without cashback) |
02 | E-Commerce Purchase |
03 | ATM Withdrawal |
04 | Payment by card terminal with cashback |
05 | Refund money |
06 | Balance Inquiry |
07 | Card PIN change |
08 | Payment at fuel pump |
09 | Bill Payment |
10 | Online payment without CVV2 |
11 | Mail order transaction |
12 | Recurring Payment |
13 | Withdraw from terminal other than ATM |
14 | Visa Personal Payment |
15 | Financial Institution Payment |
16 | Account Verification |
17 | Estimated Transaction |
18 | Estimated transaction with partial support terminal |
19 | Credential on File |
20 | Post Office Cash Withdrawal |
21 | Post Office Balance Enquiry |
22 | Post Office Deposit |
23 | Cash withdrawal from customer financial institution, teller, or Bank Branch Terminal |
24 | Purchase Manual With NO CVM |
25 | Active Card Check for Account verification |
26 | Account Funding |
97 | In App Provisioning (XPay) |
98 | Payment by contactless card |
99 | International Transaction |
Lookup values for Transaction Indicator
Code | Description |
---|---|
1 | Manual-one-time, single payment initiated by the cardholder |
2 | Recurring-multiple, ongoing payments for an indefinite term, until the cardholder or biller cancels the recurring payment arrangement |
3 | Installment-multiple payments for a specified term, usually until payment has been satisfied |
5 | Secure electronic commerce transaction |
6 | Non-authenticated security transaction at a 3-D secure-capable merchant, and merchant attempted to authenticate the cardholder using 3-D secure |
7 | Non-authenticated security transaction |
8 | Non-secure transaction |
Lookup values for POS Entry Mode
Code | Description |
---|---|
0 | Unknown or terminal not used |
1 | Manual (key entry) |
2 | Visa: Magnetic stripe read; CVV checking may not be possible. PLUS: Track 2 contents read, but transaction not eligible for CVV checking. |
3 | Optical code |
4 | Reserved for future use |
5 | Contact integrated circuit card read using VSDC chip data rules; Online CAM authentication method; iCVV checking possible |
6 | Reserved for future use |
7 | Contactless device-read-originated using qVSDC chip data rules; Online CAM authentication method; iCVV checking possible |
10 | Credential on file: Merchant initiates transaction for cardholder using credentials stored on file |
90 | Magnetic stripe read and exact content of Track 1 or Track 2 included (CVV check possible) |
91 | Contactless device-read-originated using magnetic stripe data rules; dCVV checking is possible; Online CAM checking possible for MSD CVN 17 only |
95 | Integrated circuit card read; CVV or iCVV checking may not be possible |
Validating the notification security Hash
Security Hash validation
See the respective guide for more information on calculating and verifying the notification security hash.
To compute the hash of the notification payload, concatenate the payload values in the following sequence, with your webhook security key as the final item:
<NotificationType>&<CardID>&<AccountNumber>&<SortCode>&<TransactionID>&<ProcessingCode>&<AuthorizationDate>&<LocalDate>&<AuthorisedAmount>&<CardHolderCurrency>&<TransactionAmount>&<TransactionCurrency>&<CashBackAmount>&<MCC>&<IsCreditAuthorisation>&<CardAcceptorID>&<TerminalCode>&<TerminalLocation>&<TerminalStreet>&<TerminalCity>&<TerminalCountry>&<ApprovalCode>&<IsCardPresent>&<IsCardHolderPresent>&<CardAcceptorCountryCode>&<IsPinPresent>&<STAN>&<RRN>&<TransactionIndicator>&<AcquiringInstituteID>&<ForwardingInstitutionID>&<ClientReferenceNumber>&<Description>&<FeeAmount>&<ActionCode>&<ActionDetail>&<FeatureCode>&<POSEntryMode>&<IsReversal>&<AuthorizationID>&<TokenID>&<webhook-security-key>
The payload values above and example webhook security key of abcdefghijklmnop
, will produce the following hash input:
052&102331&00156880&608370&7837206057187383&0&20220324121006&20220324121005&4700&826&4700&826&&5999&False&VIP4003IP &TERMID01&ACQUIRER NAME &&CITY NAME &US&187383&True&True&840&True&187383&032412187383&&012345678901&&&ACQUIRER NAME CITY NAME&450&000&Normal, approve&01&5 &0&2637762136219995595&abcdefghijklmnop