Overview - Adiq E-commerce

The purpose of this documentation is to guide the developer on how to integrate with the Adiq E-commerce API, describing the functionalities and methods to be used, listing information to be sent and received and providing examples.

In this manual reference is made to all the operations available in the API REST from Adiq Ecommerce. These operations must be executed using your specific key on the respective environment endpoints

sandbox Homologation Production
Requests https://ecommerce-sandbox.adiq.io https://ecommerce-hml.adiq.io https://ecommerce.adiq.io

In order to perform an operation, combine the environment's base URL with the URL of the desired operation and send it using the HTTP verb as described in the operation.

Glossary

To facilitate understanding, we have listed below a short glossary with the main terms related to Recurrence:

TERM DESCRIPTION
Authorization Process for verifying whether or not a purchase can be made with a card. At that moment, several checks are carried out with the card and with the holder (eg payment, blocking, etc.). It is also at this moment that the card limit is sensitized with the value of the transaction.
Cancellation Process to cancel a purchase made with a card.
Catch or late catch Process that confirms the late capture of a transaction that was pre-authorized. Only after the capture, the bearer will be able to view the transaction on his statement or invoice.
Commercial establishment or EC Entity responsible for the virtual store.
Payment gateway Company responsible for the technical integration and processing of transactions.
Carrier

Sandbox Environment

The Adiq Sandbox environment is a replica of the production environment, but with simulated data and specific configurations for testing. It allows developers to:

  • Simulate transactions: Execute payment transactions of various types with different scenarios (authorization, capture, cancellation, etc.).
  • Test different flows: Simulate different situations, such as invalid card payments, overlimit transactions, etc.
  • Validate the integration: Simulate whether the integration between your system and our eCommerce Gateway is working correctly.
  • Identify and correct errors: Identify and correct any problems with the integration before putting the solution into production.
  • Separate environment: The sandbox environment is isolated and uses dummy data, without impacting other environments.

Creating your Credentials

Through the website sandbox.adiq.io you will be able to create access credentials for our Sandbox environment.

Fill in the form and follow the instructions to complete your registration. You will then have access to our dashboard with the ClientId and ClientSecret required to access our APIs. You can also follow the test transactions that have been executed.

Test Scenarios

Within the Sandbox environment we have made some test scenarios available. Depending on the amount of cents you send in the transactions. For example: If the “amount” is “1000”, i.e. R$10.00, the test transaction will be returned as “Approved”. Check out the values and their programmed behavior below:

Action Return/Response Description Cents
Authorization 51 - TRANSACTION NOT AUTHORIZED BY ISSUER - 51 Transaction refused by issuer/bank 51
Authorization HTTP code 504 Time out, authorization not executed. 01
Authorization HTTP code 504 Time out, authorization will be executed in 5 minutes 02
Authorization 96 - TRANSACTION NOT AUTHORIZED - PROCESSING ERROR Error only displayed in situations of second installment payments of recurrences 15
Capture HTTP code 504 Time out, capture not executed 03
Capture HTTP code 504 Time out, capture will be executed in 5 minutes 04
Capture TRANSACTION NOT AUTHORIZED - ORIGINAL TRANSACTION NOT FOUND The transaction you are trying to capture was not found or cannot be executed after the authorization has expired 05
Cancellation 12-ISSUER FAILURE, TRY AGAIN LATER It is not possible to execute transaction cancellation 12

You can test 3DS 2.0 authentication scenarios by following this link

Postman

Postman is a popular tool used by developers to test APIs (Application Programming Interfaces). It allows you to test, document, debug and create complex, automated requests for any API in JSON, XML, etc. formats.

For ease of integration, we offer a library with the main calls to our API. Simply enter your credentials and start testing the functionalities of our eCommerce Gateway.

Download the postman project using this link . The prerequisite is to register with SANDBOX to obtain your credentials.

Adiq Gateway Integration

Authentication

The API's listed in this documentation use Basic Auth authentication, which means that all requests must include an access token that will be obtained through authentication with your Client ID and Client Secret.

Generation of the access token

In order to create an access token, you need to send a request using HTTP Basic Authentication via the POST method as shown in the example:

Request


                
{
  "grantType": "client_credentials"
}	
    


Property Description Type Location Mandatory
GrantType Use the fixed value “client_credentials.” string body Yes
Authorization Concatenation of your Client ID, followed by “:” (colon) plus your Client Secret, converted to base64.
Example: Authorization: Basic ZGV2ZWxvcGVycy5hZGlxLmlv
string header Yes

Response


                
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6WyJBRElRIiwiQURJUQ",
  "tokenType": "Bearer",
  "expiresIn": "36000",
  "scope": "GatewayEcommerce"
}
    			
                         
Property Description Type
AccessToken API access token to be sent in all requests. string
TokenType Type of token, must be sent in the header along with the token. string
ExpiresIn Token expiration time in seconds. integer
Scope Scope of the token. string

Payment

In order to use all the features available in our API, it is important that you first get to know the concepts involved in processing a credit card transaction.

Concept Description
Authorization Authorization (or pre-authorization) is the main operation in E-commerce, because it is through authorization that a sale can be made. Pre-authorization only raises awareness of the customer's limit, but does not yet generate a charge for the consumer.
Capture When a pre-authorization is executed, it must be confirmed in order for the cardholder to be charged. This is when a pre-authorization takes effect and can be carried out up to 21 days after the pre-authorization date. It is important to pay attention to the expiry date/time informed in the pre-authorization transaction - “ExpireAt” field.
Cancellation Cancellation is necessary when, for whatever reason, you no longer want to make a sale. In the case of self-capture and pre-authorization with capture, cancellation can only be carried out on the same day.
Authentication The authentication process makes it possible to execute a sale which will go through the Payment Gateway's authentication process, thus bringing more security to the sale.
Token Creation In order to execute transactions securely, the card number must be tokenized during authentication

Payment Methods

Credit / Debit Cards

Token Creation

Generation of Card Token

This operation is used to create a token for a particular card, simply by doing a POST as shown in the example.

Request


                
{
   "cardNumber":"5155901222250004"
}
    



                         


Property Description Type Location Mandatory Size
CardNumber Card number. string body Yes from 9 to 19
Response

                
{
   "numberToken":"88f466c4-d17a-4430-952f-2a44bdb98525"
}
    

    

Property Description Type
NumberToken Card token that will be used for transactions string

Payment with Credit / Debit Card

In order to create a transaction that will use a credit/debit card, you need to send a request using the POST method to the Payments resource, as shown in the example:

Request v1

V1-request Request v1 using Vault
                
                
{
    "payment":{
        "transactionType":"credit",
        "amount":1035,
        "currencyCode":"brl",
        "productType":"avista",
        "installments":1,
        "captureType":"ac",
        "recurrent":false
    },
    "cardInfo":{
        "vaultId":"f851b514-301a-4e26-8314-3567c1b17aad"
    },
    "LineItems":[
        {
            "UnitPrice":"1055",
            "Quantity":"1",
            "ProductSKU":"922111212",
            "ProductName":"Cadeira de plastico",
            "ProductCode":"235422555252"
        },
        {
            "UnitPrice":"935",
            "Quantity":"1",
            "ProductSKU":"455451212",
            "ProductName":"Guarda-chuva",
            "ProductCode":"23656565644"
        }
    ],
    "Customer":{
        "DocumentType":"cpf",
        "DocumentNumber":"51115672088",
        "FirstName":"Jose",
        "LastName":"Silva",
        "Email":"jose.silva@email.com",
        "PhoneNumber":"1122542454",
        "MobilePhoneNumber":"11987683332",
        "Address":"Rua Luiz Vieira",
        "AddressNumber":"134",
        "Complement":"apto. 22 - Vila Guarani",
        "City":"São Paulo",
        "State":"SP",
        "ZipCode":"09876-098",
        "IpAddress":"41.261.933.248",
        "Country":"BR"
    },
    "ShipTo":{
        "FirstName":"Luiz Paulo",
        "LastName":"Cardoso",
        "PhoneNumber":"1122542454",
        "Address":"Rua Luiz Vieira",
        "AddressNumber":"134",
        "Complement":"apto. 34 - Vila Guarani",
        "City":"São Paulo",
        "State":"SP",
        "ZipCode":"09876098",
        "Country":"BR"
    },
    "DeviceInfo":{
        "HttpAcceptBrowserValue":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "HttpAcceptContent":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "HttpBrowserLanguage":"pt-BR",
        "HttpBrowserJavaEnabled":"N",
        "HttpBrowserJavaScriptEnabled":"Y",
        "HttpBrowserColorDepth":"24",
        "HttpBrowserScreenHeight":"937",
        "HttpBrowserScreenWidth":"1920",
        "HttpBrowserTimeDifference":"180",
        "UserAgentBrowserValue":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"
    },
    "sellerInfo":{
        "orderNumber":"0000000001",
        "softDescriptor":"PAG*TESTE",
        "dynamicMcc":9999,
        "code3DS":"C56A4180-65AA-42EC-A945-5FD21DEC0538",
        "urlSite3DS":"estabelecimento.com.br",
        "codeAntiFraud":"C56A4180-65AA-42EC-A945-5FD21DEC0531",
        "ThreeDsDataOnly":"false"
    },
    "sellers":[
        {
            "id":"900",
            "amount":690,
            "items":[
                {
                    "id":"P115DU90",
                    "description":"Produto 1",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                },
                {
                    "id":"P115DU91",
                    "description":"Produto 2",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                }
            ]
        },
        {
            "id":"901",
            "amount":345,
            "items":[
                {
                    "id":"P115DU92",
                    "description":"Produto 1",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                }
            ]
        }
    ]
}
                        
                            
                        
V1 request using card token
                
                
{
    "payment":{
        "transactionType":"credit",
        "amount":1035,
        "currencyCode":"brl",
        "productType":"avista",
        "installments":1,
        "captureType":"ac",
        "recurrent":false,
        "RecurrentNridElo": "E13MAR253651340",
        "RecurrentAmountElo": 2339
    },
    "cardInfo":{
        "numberToken":"2c44f9e6-c242-4c92-8129-eeef72b26336",
        "cardholderName":"JOSE SILVA",
        "securityCode":"123",
        "brand":"visa",
        "expirationMonth":"01",
        "expirationYear":"19"
    },
    "LineItems":[
        {
            "UnitPrice":"1055",
            "Quantity":"1",
            "ProductSKU":"922111212",
            "ProductName":"Cadeira de plastico",
            "ProductCode":"235422555252"
        },
        {
            "UnitPrice":"935",
            "Quantity":"1",
            "ProductSKU":"455451212",
            "ProductName":"Guarda-chuva",
            "ProductCode":"23656565644"
        }
    ],
    "Customer":{
        "DocumentType":"cpf",
        "DocumentNumber":"51115672088",
        "FirstName":"Jose",
        "LastName":"Silva",
        "Email":"jose.silva@email.com",
        "PhoneNumber":"1122542454",
        "MobilePhoneNumber":"11987683332",
        "Address":"Rua Olveira Vieira",
        "AddressNumber":"134",
        "Complement":"apto. 22 - Vila Guarani",
        "City":"São Paulo",
        "State":"SP",
        "ZipCode":"09876-098",
        "IpAddress":"41.261.933.248",
        "Country":"BR"
    },
    "ShipTo":{
        "FirstName":"Luiz Paulo",
        "LastName":"Cardoso",
        "PhoneNumber":"1122542454",
        "Address":"Rua Luiz Vieira",
        "AddressNumber":"134",
        "Complement":"apto. 34 - Vila Guarani",
        "City":"São Paulo",
        "State":"SP",
        "ZipCode":"09876098",
        "Country":"BR"
    },
    "DeviceInfo":{
        "HttpAcceptBrowserValue":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "HttpAcceptContent":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "HttpBrowserLanguage":"pt-BR",
        "HttpBrowserJavaEnabled":"N",
        "HttpBrowserJavaScriptEnabled":"Y",
        "HttpBrowserColorDepth":"24",
        "HttpBrowserScreenHeight":"937",
        "HttpBrowserScreenWidth":"1920",
        "HttpBrowserTimeDifference":"180",
        "UserAgentBrowserValue":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"
    },
    "sellerInfo":{
        "orderNumber":"0000000001",
        "softDescriptor":"PAG*TESTE",
        "dynamicMcc":9999,
        "code3DS":"C56A4180-65AA-42EC-A945-5FD21DEC0538",
        "urlSite3DS":"estabelecimento.com.br",
        "codeAntiFraud":"C56A4180-65AA-42EC-A945-5FD21DEC0531",
        "ThreeDsDataOnly":"false"
    },
    "sellers":[
        {
            "id":"900",
            "amount":690,
            "items":[
                {
                    "id":"P115DU90",
                    "description":"Produto 1",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                },
                {
                    "id":"P115DU91",
                    "description":"Produto 2",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                }
            ]
        },
        {
            "id":"901",
            "amount":345,
            "items":[
                {
                    "id":"P115DU92",
                    "description":"Produto 1",
                    "amount":345,
                    "ratePercent":0,
                    "rateAmount":0
                }
        ]
        }
    ]
}
                        
                            
                        
Property Description Type Location Mandatory Maximum Size
Payment.TransactionType Type of transaction. string body Yes Fixed
Payment.Amount Order value in cents. integer body Yes 10
Payment.CurrencyCode Currency identification. string body Yes Fixed
Payment.ProductType Product type. string body Yes Fixed
Payment.Installments Number of installments. integer body Yes 02
Payment.CaptureType Capture type. string body Yes Fixed
Payment.Recurrent Marks the transaction as recurring. boolean body Yes Fixed
Payment.RecurrentNridElo Elo identification number for automatic recurring transactions string body No 15
Payment.RecurrentAmountElo Amount of the first recurring transaction integer body No 10
CardInfo.VaultId Identifier of the card in the vault. string body No Fixed
CardInfo.NumberToken Identifier of the tokenized card. string body No Fixed
CardInfo.CardholderName Buyer's name printed on the card. string body Yes 30
CardInfo.SecurityCode Security Code. string body No 04
CardInfo.Brand Card issuer - Optional. string body No Fixed
CardInfo.ExpirationMonth Card expiry month with two digits. string body No 02
CardInfo.ExpirationYear Card expiry year with two digits. string body No 02
SellerInfo.codeAntiFraud Antifraud fingerprint code. If not sent, the antifraud analysis will be carried out without this information - Mandatory for antifraud guid body No 36
SellerInfo.code3DS Code of the merchant's 3DS. If No is sent, 3DS will not be run - Mandatory for 3DS. guid body No 36
SellerInfo.urlSite3DS URL of the merchant's website used for the 3DS, for example, the website is https://minhaempresa.com.br so you must enter [minhaempresa.com.br] without entering [https://] - Mandatory for 3DS string body No 2048
SellerInfo.OrderNumber OrderNumber entered by the customer in the payment request (Customer Order Number). If this field is repeated on the same day, the transaction may be denied. string body Yes 13
SellerInfo.SoftDescriptor Text displayed on the buyer's card bill. string body No 22
SellerInfo.DynamicMcc Merchant Category Code. If not sent, the MCC from the register will be used. Requires approval from ADIQ's risk department. integer body No 04
SellerInfo.ThreeDsDataOnly Indicates whether you want to process 3ds DataOnly transactions (Estate chargeback risk). boolean body No Fixed
Sellers.Id Merchant identifier (only for Marketplace transactions). string body No 10
Sellers.Amount Total purchase amount (in cents). integer body No 10
Sellers.Items.Id Item identifier. string body No 30
Sellers.Items.Amount Item value (in cents). integer body No 10
Sellers.Items.Description Item description. string body No 100
Sellers.Items.RatePercent Fee to be charged (for Marketplace transactions only) on the item (percentage). double body No 10
Sellers.Items.RateAmount Fee to be charged (for Marketplace transactions only) on the item in value (in cents). integer body No 10
Customer.DocumentType Type of buyer's identification document (CPF, CNPJ, etc.)
Value Description
1 CPF (Cadastro Nacional de Pessoa Física): Brazilian Individual Taxpayer’s Identification Number (equivalent to Social Security Number USA)
2 CNPJ (Cadastro Nacional de Pessoa Jurídica) – Brazilian Corporate Taxpayer’s Identification Number (equivalent to the IRS Employer’s Identification Number USA)
integer body No 1
Customer.DocumentNumber Buyer's document number without punctuation (no mask) string body No 20
Customer.FirstName Buyer's first name - Mandatory for 3DS/antifraud. string body No 60
Customer.LastName Buyer's last name - Mandatory for 3DS/antifraud. string body No 60
Customer.Email Buyer's e-mail - Mandatory for 3DS/antifraud. string body No 255
Customer.PhoneNumber Buyer's phone number (without mask) - Mandatory for 3DS/antifraud. string body No 15
Customer.MobilePhoneNumber Buyer's cell phone (without mask) - Mandatory for 3DS/antifraud. string body No 25
Customer.Address Buyer's address - Mandatory for 3DS/antifraud. string body No 60
Customer.AddressNumber Buyer's number - Mandatory for 3DS/antifraud. string body No 10
Customer.Complement Buyer's address complement - Mandatory for 3DS/antifraud. string body No 60
Customer.City Buyer's city - Mandatory for 3DS/antifraud. string body No 50
Customer.State Buyer's state - Mandatory for 3DS/antifraud. string body No 2
Customer.ZipCode Buyer's zip code (without mask) - Mandatory for 3DS/antifraud. string body No 10
Customer.IpAddress IP address of buyer's device - Mandatory for 3DS/antifraud. string body No 48
Customer.Country Buyer's country - Mandatory for 3DS/antifraud. string body No 2
DeviceInfo.httpAcceptBrowserValue 3DS - Accept Header value of the customer's browser - Mandatory for 3DS. string body No 255
DeviceInfo.httpAcceptContent 3DS - Exact HTTP Accept Header value - Mandatory for 3DS. string body No 256
DeviceInfo.httpBrowserLanguage 3DS - Client browser language according to https://www.techonthenet.com/js/language_tags.php - Mandatory for 3DS. string body No 8
DeviceInfo.httpBrowserJavaEnabled 3DS - If JAVA enabled send Y value, otherwise N - Mandatory for 3DS. string body No 1
DeviceInfo.httpBrowserJavaScriptEnabled 3DS - If JAVA SCRIPT enabled send Y value, otherwise N - Mandatory for 3DS. string body No 1
DeviceInfo.httpBrowserColorDepth 3DS - Number of bits used to display images - Mandatory for 3DS. string body No 3
DeviceInfo.httpBrowserScreenHeight 3DS - Height of client screen resolution - Mandatory for 3DS string body No 4
DeviceInfo.httpBrowserScreenWidth 3DS - Width of client screen resolution - Mandatory for 3DS. string body No 4
DeviceInfo.httpBrowserTimeDifference 3DS - Difference in minutes between GMT and client browser time - Mandatory for 3DS. string body No 4
DeviceInfo.userAgentBrowserValue 3DS - The exact value of the User Agent Header - Mandatory for 3DS. string body No 255
ShipTo.FirstName Buyer's first name - Mandatory for antifraud. string body No 60
ShipTo.LastName Buyer's last name - Mandatory for antifraud. string body No 60
ShipTo.PhoneNumber Buyer's phone number (without mask) - Mandatory for antifraud. string body No 15
ShipTo.Address Buyer's address - Mandatory for antifraud. string body No 60
ShipTo.AddressNumber Buyer's number - Mandatory for antifraud purposes. string body No 10
ShipTo.Complement Buyer's full address - Mandatory for antifraud purposes. string body No 60
ShipTo.City Buyer's city - Mandatory for antifraud. string body No 50
ShipTo.State Buyer's state - Mandatory for antifraud. string body No 2
ShipTo.ZipCode Buyer's ZIP code (without mask) - Mandatory for antifraud. string body No 10
ShipTo.country Country of buyer's address - Mandatory for antifraud. string body No 2
LineItems_#_ProductCode Product type - Mandatory for antifraud. string body No 255
LineItems_#_ProductSKU Product identifier in the store - Mandatory for antifraud. string body No 255
LineItems_#_ProductName Product name - Mandatory for antifraud. string body No 255
LineItems_#_Quantity Quantity of products being purchased - Mandatory for antifraud. string body No 10
LineItems_#_UnitPrice Product price (per item) - Mandatory for anti-fraud. string body No 10

Domains

Property Content
Payment.TransactionType credit, debit
Payment.CurrencyCode brl
Payment.ProductType
Value Description
avista Cash
lojista Retailer
debito Debit
Payment.CaptureType
Value Description
pa Pre-authorize
ac Authorize and capture
Payment.Recurrent true - Recurring, false - Non-recurring
CardInfo.Brand visa, mastercard, amex, elo, hipercard
Customer.DocumentType cpf, cnpj
  • Must not contain special characters, except '*';
  • Must not start with *;
  • Must contain only one '*';
  • Maximum size of 22 characters;
  • Ex.: PAG*LOJAXPTO

Transactions with the Payment.CaptureType field filled in with the PA domain and the Payment.TransactionType field filled in with the debit domain, in the same transaction, will be denied. This is because Debit Pre-Authorization is not allowed.


Transactions with the CardInfo.Brand field filled with the hipercard domain will only accept Payment.TransactionType with the credit domain.

Response

Response in case of success:
                    
                        
{
    "paymentAuthorization": {
        "returnCode": "0",
        "description": "Sucesso",
        "paymentId": "020080286103040952150000006201850000000000",
        "authorizationCode": "043711",
        "orderNumber": "0000000001",
        "expireAt": "2019-09-24T13:20:52.8775511-03:00",
        "amount": 1035,
        "releaseAt": "2019-09-24T13:20:52.877545-03:00",
        "nridElo": "E13MAR253651340" 
    }
}
                        
                    
                
Response in case of failure:
                    
                        
[
    {
        "tag": "payment.amount",
        "description": "O Valor informado deverá ser maior que ZERO."
    }
]
                        
                    
                
Response in the event of a 3DS failure:
                    
                        
[
    {
        "tag": "U",
        "description": "Não foi possível autenticar."
    }
]
                        
                    
                
Property Description Type
PaymentAuthorization.ReturnCode Return code. string
PaymentAuthorization.Description Return description. string
PaymentAuthorization.PaymentId Payment identifier, also known as TID. string
PaymentAuthorization.AuthorizationCode Authorization code. string
PaymentAuthorization.OrderNumber OrderNumber entered by the customer in the payment request (Customer Order Number). string
PaymentAuthorization.ExpireAt Expiry date and time in the case of pre-authorization. datetime
PaymentAuthorization.Amount Order value in cents. integer
PaymentAuthorization.ReleaseAt Date and time of payment registration. datetime
PaymentAuthorization.nridElo Elo identification number to be used in future recurring transactions. string

Response from the Authorizing Host

Response from the Authorizing Host
                
                
[
    {
        "tag": "51",
        "description": "TRANSACTION NOT AUTHORIZED BY THE ISSUER - 51"
    }
]
                            
                        
                    
Response Code Description
00 SUCCESS
01 TRANSACTION NOT AUTHORIZED BY THE ISSUER - 01
03 TRANSACTION NOT AUTHORIZED BY THE PURCHASER - INVALID BUSINESS - 03
04 UNAUTHORIZED TRANSACTION - INVALID CARD - 04
05 TRANSACTION NOT AUTHORIZED BY THE ISSUER - 05
06 TRANSACTION NOT AUTHORIZED - UNKNOWN - 06
07 TRANSACTION NOT AUTHORIZED - INVALID CARD - 07
12 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 12
13 TRANSACTION NOT AUTHORIZED - INVALID AMOUNT - 13
14 TRANSACTION NOT AUTHORIZED - INVALID CARD - 14
15 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 15
19 TRANSACTION NOT AUTHORIZED - RETRY KNIFE - 19
30 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 30
38 TRANSACTION NOT AUTHORIZED - INVALID PASSWORD - 38
39 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 39
40 TRANSACTION NOT AUTHORIZED - INVALID FUNCTION - 40
41 TRANSACTION NOT AUTHORIZED - BLOCKED CARD - 41
43 TRANSACTION NOT AUTHORIZED - BLOCKED CARD - 43
46 TRANSACTION NOT AUTHORIZED - ACCOUNT CLOSED - 46
51 TRANSACTION NOT AUTHORIZED BY ISSUER - 51
52 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 52
53 TRANSACTION NOT AUTHORIZED - INVALID TRANSACTION - 53
54 TRANSACTION NOT AUTHORIZED BY THE ISSUER - EXPIRED CARD - 54
55 OPERATION NOT AUTHORIZED - INVALID PASSWORD - 55
57 TRANSACTION NOT AUTHORIZED BY ISSUER - 57
58 TRANSACTION NOT AUTHORIZED - NOT ALLOWED FOR THE ESTABLISHMENT - 58
59 TRANSACTION NOT AUTHORIZED BY ISSUER - CARD SUSPENDED -59
61 TRANSACTION NOT AUTHORIZED - LIMIT EXCEEDED - 61
62 TRANSACTION NOT AUTHORIZED - RESTRICTED CARD- 62
63 TRANSACTION NOT AUTHORIZED - INVALID PASSWORD- 63
65 TRANSACTION NOT AUTHORIZED BY THE ISSUER - 65;
70 TRANSACTION NOT AUTHORIZED - UNKNOWN 70
75 TRANSACTION NOT AUTHORIZED - INVALID PASSWORD- 75
78 TRANSACTION NOT AUTHORIZED - BLOCKED CARD. - 78
79 TRANSACTION NOT AUTHORIZED - Card Fraud/Security - 79
82 TRANSACTION NOT AUTHORIZED - Card Fraud/Security - 82
83 TRANSACTION NOT AUTHORIZED - Card Fraud/Security - 83
91 TRANSACTION NOT AUTHORIZED - ISSUER UNAVAILABLE- 91
93 TRANSACTION NOT AUTHORIZED - INVALID CARD - 93
94 TRANSACTION NOT AUTHORIZED - DUPLICATE TRANSACTION- 94
96 TRANSACTION NOT AUTHORIZED - PROCESSING ERROR- 96

Response 3DS - Failure

IMPORTANT - For customers with 3DS enabled.

  • Credit transaction with 3DS.
    • Client enabled to execute 3DS on credit transaction
      • 3DS Denied - Transaction will proceed to the authorizing host without 3ds.
      • 3DS Approved - Transaction will proceed to the authorizing host with 3ds.
    • DENY the credit transaction in case 3ds is faulty
      • The parameter must be enabled in the customer record for this function to be enabled
        • 3DS Denied - Transaction will be denied.
        • 3DS Approved - Transaction will proceed to the authorizing host with 3DS.
  • Debit transactions with 3DS.
    • 3DS successful: The transaction will proceed to the authorizing host.
    • 3DS with challenge: The transaction will proceed to the authorizing host after the challenge has been sent.
    • 3DS Denied: The transaction will NOT proceed to the authorizing host.
                
                
{
    "paymentAuthorization": {
        "returnCode": "0",
        "description": "Success",
        "paymentId": "020080286103040952150000006201850000000000",
        "authorizationCode": "043711",
        "orderNumber": "0000000001",
        "amount": 1035,
        "releaseAt": "2019-09-24T13:20:52.877545-03:00"
    },
    "threeDs":{
        "status":"Fail",
        "threeDsVersion":"2.1.0"
    }
}
                        
                
            
Property Description Type
ThreeDs.Status 3DS status – 3DS failed. string
ThreeDs.ThreeDsVersion ThreeDsVersion is the version of the 3DS. string

Response 3DS - Challenge

The response to the payment request may state that 3DS has requested a challenge via ThreeDs.Status with the value Challenge. Challenge indicates a challenge that the issuer (bank) sends to the client (card holder) in order to validate the 3DS. This challenge is executed via a frame sent directly by the card issuer.

                
                
{
    "threeDs":{
        "status":"Challenge",
        "threeDsVersion":"2.1.0",
        "acsUrl":"https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/crejsp ",
        "authenticationTransactionId":"BGprC3ktx8lMtL391Ma0",
        "pareq":"eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwid
        GhyZWVEU1NlcnZlclRyYW5zSUQiOiI4N2YwYzdjOS0wODlkLTQ5OGItYTYzZC03MjJiMzc5ZTM
        wOTEiLCJhY3NUcmFuc0lEIjoiNGEzOWMxNGEtZjBiNi00YTE5LTg3MWEtYmQ2MjZlZDcyNmEzI
        iwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0"
    }
}
                        
                
            
Property Description Type
ThreeDs.Status 3DS Challenge status - 3DS is requesting a Challenge. string
ThreeDs.ThreeDsVersion ThreeDsVersion is the version of the 3DS and will be entered when it is a Challenge. string
ThreeDs.AcsUrl AcsUrl is the return when it is a Challenge, you must enter it in Adiq3ds.InitChallenge(acsUrl, pareq, authenticationTransactionId). string
ThreeDs.Pareq Pareq is the return when it is Challenge, you must enter it in Adiq3ds.InitChallenge(acsUrl, pareq, authenticationTransactionId). string
ThreeDs.AuthenticationTransactionId AuthenticationTransactionId is the return when it is Challenge, you must enter it in Adiq3ds.InitChallenge(acsUrl, pareq, authenticationTransactionId). string

Cancellation

In order to cancel a sale using a credit card, you need to make a PUT to the Payments resource informing the PaymentId generated at the time of authorization.

Request

                
{
  "amount": 1035,
  "sellers": [
    {
      "id": "900",
      "amount": 690,
      "items": [
        {
          "id": "P115DU90",
          "amount": 345
        },
        {
          "id": "P115DU91",
          "amount": 345
        }
      ]
    },
    {
      "id": "901",
      "amount": 345,
      "items": [
        {
          "id": "P115DU92",
          "amount": 345
        }
      ]
    }
  ]
}
    


Property Description Type Location Mandatory Maximum Size
PaymentId Identifier of the payment to be canceled. string path Yes 42
Amount Amount to be canceled (in cents). integer body Yes 10
Sellers.Id Identifier of the establishment (business). string body No 10
Sellers.Amount Total amount to be canceled (in cents). integer body No 10
Sellers.Items.Id Identifier of the item. string body No 30
Sellers.Items.Amount Amount of the item (in cents). integer body No 10
Response

                
{
  "cancelAuthorization": {
    "returnCode": "0",
    "description": "Canceled",
    "paymentId": "020080286103040952150000006201850000000000",
    "authorizationCode": "143513",
    "amount": 1023,
    "releaseAt": "2019-09-24T13:43:12.1952799-03:00"
  }
}
    



                         


Property Description Type
CancelAuthorization.ReturnCode Return code string
CancelAuthorization.Description Return description. string
CancelAuthorization.PaymentId Payment identifier. string
CancelAuthorization.AuthorizationCode Cancellation authorization code. string
CancelAuthorization.Amount Cancellation amount (in cents). integer
CancelAuthorization.ReleaseAt Date and time of cancellation registration. datetime

Capture

Capture a given payment

In order to capture a sale using a credit card, you need to make a PUT to the Payments resource informing the PaymentId generated at the time of authorization, as shown in the example. This method is used for late capture in pre-authorization transactions.

Request

                
{
  "amount": 1035,
  "sellers": [
    {
      "id": "900",
      "amount": 690,
      "items": [
        {
          "id": "P115DU90",
          "amount": 345
        },
        {
          "id": "P115DU91",
          "amount": 345
        }
      ]
    },
    {
      "id": "901",
      "amount": 345,
      "items": [
        {
          "id": "P115DU92",
          "amount": 345
        }
      ]
    }
  ]
}
    


Property Description Type Location Mandatory Maximum Size
PaymentId Identifier of the paymentto be captured. string path Yes 42
Amount Amount to be captured (in cents). integer body Yes 10
Sellers.Id Identifier of the establishment (business). string body No 10
Sellers.Amount Total capture amount (in cents). integer body No 10
Sellers.Items.Id Identifier of the item. string body No 30
Sellers.Items.Amount Amount of the item (in cents). integer body No 10
Response

                
{
  "captureAuthorization": {
    "returnCode": "0",
    "description": "Captured",
    "paymentId": "020080286103040952150000006201850000000000",
    "authorizationCode": "341707",
    "amount": 1023,
    "releaseAt": "2019-09-25T09:02:51.6615224-03:00"
  }
}

    


    

Property Description Type
CaptureAuthorization.ReturnCode Return Code. string
CaptureAuthorization.Description Return description. string
CaptureAuthorization.PaymentId Payment identifier. string
CaptureAuthorization.AuthorizationCode Authorization code. string
CaptureAuthorization.Amount Capture amount (in cents). integer
CaptureAuthorization.ReleaseAt Date and time of capture datetime

Authentication 3DS 2.0

Implementation manual for 3ds for credit and debit

Documentation 3DS - clique here

Relevant fields to assess the 3DS authentication flow

            
                
{
    {
        "paymentAuthorization": {
            {
                "returnCode": "0",
                "description": "Sucesso",
                "paymentId": "020080286103040952150000006201850000000000",
                "authorizationCode": "043711",
                "orderNumber": "0000000001",
                "amount": 1035,
                "releaseAt": "2019-09-24T13:20:52.877545-03:00"
            }
        },
        "threeDs": {
            {
                "status": "Fail",
                "eci": "00",
                "threeDsVersion": "2.1.0",
                "veresEnrolled": "Y",
                "paresStatus": "N",
                "threeDsStatus": "AUTHENTICATION_FAILED",
                "reason": "CONSUMER_AUTHENTICATION_FAILED",
                "cardHolderMessage": "Note: Additional authentication is required by the issuing bank for this transaction",
                "directoryServerErrorCode": "101",
                "directoryServerErrorDescription": "Error Processing Message Request"
            }
        }
    }
}
                
            
        
Property Description
threeDs.status 3DS status - Silent, Attempt, Challenge and Fail
threeDs.eci Result of the 3DS that was classified for authentication
threeDs.threeDsVersion 3DS version
threeDs.veresEnrolled Sender status - N, Y or U
threeDs.paresStatus Authentication result - R, N, Y, A or U
threeDs.threeDsStatus 3DS authentication status
threeDs.reason Reason for failure
threeDs.cardHolderMessage Response from issuer to bearer
threeDs.directoryServerErrorCode Error code when data entered is invalid
threeDs.directoryServerErrorDescription Description of the error when the data entered is invalid

Scenarios for 3DS 2.X authentication flows

  • Sender No is a Protocol 2.x participant
    • When you see Enrolled = N (Issuer No participating in Protocol 2.x)
  • 3DS fields are invalid
    • When you see Enrolled = U (Unavailable). In this case, the directoryServerErrorCode and directoryServerErrorDescription fields contain the error code and description.
  • Authentication rejected
    • When you see Enrolled = Y (Issuer participating in the 3DS 2.x protocol), threeDsStatus = AUTHENTICATION_FAILED and field paresStatus = R (Authentication rejected) the eci result will be 07 or 00 (Transaction Not secure)
    • When you see Enrolled = Y (Issuer participating in the 3DS 2.x protocol), threeDsStatus = AUTHENTICATION_FAILED and field pairsStatus = N (Authentication failed) the eci result will be 07 or 00 (Transaction Not secure)
  • Authentication processed
    • o When you see Enrolled = Y (Issuer participating in 3DS 2.x protocol), threeDsStatus = AUTHENTICATION_SUCCESSFUL and field pairsStatus = A (Attempted) the eci result will be 06 or 01 (Attempted)
    • o When you see Enrolled = Y (Issuer participating in 3DS 2.x protocol), threeDsStatus = AUTHENTICATION_SUCCESSFUL and field pairsStatus = Y (Authentication successful) the eci result will be 05 or 02 (Secure transaction)
    • When you see Enrolled = Y (Issuer participating in the 3DS 2.x protocol), threeDsStatus = AUTHENTICATION_SUCCESSFUL and field pairsStatus = U (Authentication Not Complete) the eci result will be 07 or 00 (Transaction Not Secure).

Vault

Stores consumer card data in the vault

This operation is used to create a vault to store the consumer's card data for use in future payments and recurrence, simply by making a POST as shown in the example.

Request



                
{
  "numberToken": "88f466c4-d17a-4430-952f-2a44bdb98525",
  "brand": "visa",
  "cardholderName": "JOSE SILVA",
  "expirationMonth": "01",
  "expirationYear": "19",
  "verifyCard": false,
  "securityCode": "123"
}
    



                         


Property Description Type Location Required Maximum Size
NumberToken Card number with token. string body Yes 36
Brand Card issuer (visa, mastercard, elo, amex, hipercard). string body Yes Fixed
CardholderName Buyer's name printed on the card. string body Yes Follow the rule of the name on the card
ExpirationMonth Card expiry month with two digits. string body Yes 2
ExpirationYear Card expiry year with two digits. string body Yes 2
VerifyCard Performs a transaction that verifies that the card entered is valid. boolean body Yes Fixed
SecurityCode Security code. string body No 04

Response


                
{
  "vaultId": "90fa2d95-3430-4e32-b86b-5b3b3a8393cb"
}
    

    

Property Description Type
VaultId Card identifier saved in the vault string

Recurrence

Signaling recurring transactions

This operation must be signaled in the v1/payments route in the payment.recurrent property with the value true

Property Description Type Location Mandatory Maximum Size
Payment.recurrent Flag the transaction as recurring. boolean body Yes Fixed

Recurrence of ELO issuer transactions

In addition to signaling that the operation is recurring for ELO transactions: The initial recurring transaction will return paymentAuthorization.nridElo.

Property Description Type Location Mandatory Maximum Size
paymentAuthorization.nridElo Elo identification number to be used in future recurring transactions. string body Yes 15

From the second transaction onwards, the following amounts must be entered in v1/payments.

Property Description Type Location Mandatory Maximum Size
payment.RecurrentNridElo Elo identification number for automatic recurring transactions. string body Yes 15
Payment.RecurrentAmountElo Amount of the first recurring transaction. integer body Yes 10

Pix

Service for generating the PIX QR Code, checking payment status and webhook for payment confirmation.

Generation of Dynamic PIX QR Code

This service allows you to generate a Dynamic QR Code in the BR Code standard for payment via PIX. The payment amount entered to generate the QR Code cannot be changed by the paying user.

Request

                
                
{
    "order_id": "012345678910AADL",
    "order_date": "2022-11-17T09:20:36Z",
    "amount": 1000,
    "description": "Toy Hotwheels",
    "url_web_hook": "https://loja-site/webhook/pedido/123456"
}
                        
                    
                
Property Description Type Location Mandatory Maximum Size
order_id PIX Order identifier. string body Yes 50
order_date Order date informed by the customer. DateTime body Yes yyyy-MM-ddTHH:mm:ssZ
amount PIX amount (in cents). int body Yes 9
description Description of the PIX. string body No 200
url_web_hook Url to run a PIX payment response webhook. string body Yes 300

Response

                
                
{
    "order_id": "012345678910AADL",
    "transaction_id": 389277,
    "qrCode": "00020126420014br.gov.bcb.pix0120adiqplus@adiq.com.br520400005303986540510.005802BR5908ADIQPLUS6009SAO PAULO62070503***6304FFCB",
    "dueDate": "2022-12-13T18:49:54.8274626-03:00",
    "amount": 1000,
    "qrCodeId": "xRC35GjYIcz+ATVq90Q6mib+VQPD23xExYPY0UzinIY="
}
                        
                    
                
Property Description Type
order_id PIX order identifier. string
transaction_id Paycore transaction identifier. long
qrCode EMV QR Code. string
dueDate QR Code expiration date. DateTime
amount PIX amount (in cents). int
qrCodeId QR Code id. string

Consulting the Payment Status.

This service allows the customer to proactively check the payment status of the generated QR Code.

Request

                
                                        
{
    "order_id": "012345678910AADL",
    "qrCodeId": "xRC35GjYIcz+ATVq90Q6mib+VQPD23xExYPY0UzinIY="
}
                    
                    
                
Property Description Type Location Mandatory Maximum Size
order_id PIX order identifier. string body Yes 50
qrCodeId QR Code id. string body Yes 50

Response

                
                                        
{
    "qrCodeId": "xRC35GjYIcz+ATVq90Q6mib+VQPD23xExYPY0UzinIY=",
    "qrCodeStatus": "Pago",
    "transaction": {
        "transactionId": "5134dfee-6eff-407f-a013-d9d528e5c943",
        "endToEndId": "E710278662022122313371719327837P",
        "value": 0.05,
        "costValue": 0.0,
        "status": "Aprovado",
        "date_payment": "2022-12-23T10:37:22.143-03:00",
        "payer": {
            "name": "Name",
            "document": "99999999000999",
            "documentType": 1
        }
    }
}
                    
                    
                
Property Description Type
qrCodeId QR Code id. string
qrCodeStatus QR Code status. string
transaction.transactionId Transaction id. string
transaction.endToEndId End-to-end id of the transaction. Transmitted in QR Code receipt and transfer messages. string
transaction.value PIX amount. decimal
transaction.costValue PIX cost amount. decimal
transaction.status PIX status. string
transaction.date_payment Payment date. DateTime
transaction.payer.name Payer's name. string
transaction.payer.document Payer document. string
transaction.payer.documentType Payer document type. int

Domains

Property Content
qrCodeStatus Pendente (Pending), Pago (Paid), Desativo (Deactivated), RemovidoPSP (RemovedPSP)
transaction.status Inexistente (Non-existent), Pendente (Pending), Aprovado (Approved), Expirado (Expired), Cancelado (Canceled)
transaction.payer.documentType 1 (CNPJ), 2 (CPF)

Webhook of the Payment Status

This service seeks to streamline the customer response process by sending the payment status of the QR Code as soon as it is identified by ADIQ.

The Url registered to run the Webhook will receive a POST request when the payment is identified.

When the POST request fails, 3 new communication attempts will be made.

Request

                
                                        
{
    "qrCodeId": "L1+EtQeaqMseiB5wLdhYSwHSfhkFyKlnGZKLxiNQp+c=",
    "qrCodeStatus": "Pago",
    "transaction": {
        "transactionId": "dafdddfe-5296-4f9d-ae4e-09ac529c283e",
        "endToEndId": "E710278662022122916533635584748P",
        "value": 10.00,
        "costValue": 0.00,
        "status": "Aprovado",
        "date_payment": "2022-12-29T13:53:41.93-03:00",
        "payer": {
            "name": "Name",
            "document": "99999999000999",
            "documentType": 1
        }
    }
}
                    
                    
                
Property Description Type
qrCodeId QR Code id. string
qrCodeStatus QR Code status. string
transaction.transactionId Transaction id. string
transaction.endToEndId End-to-end id of the transaction. Transmitted in QR Code receipt and transfer messages. string
transaction.value PIX amount. decimal
transaction.costValue PIX cost amount. decimal
transaction.status PIX status. string
transaction.date_payment Payment date. DateTime
transaction.payer.name Paye'r name. string
transaction.payer.document Payer document. string
transaction.payer.documentType Payer document type. int

Domains

Property Content
qrCodeStatus Pendente (Pending), Pago (Paid), Desativo (Deactivated), RemovidoPSP (RemovedPSP)
transaction.status Inexistente (Non-existent), Pendente (Pending), Aprovado (Approved), Expirado (Expired), Cancelado (Canceled)
transaction.payer.documentType 1 (CNPJ), 2 (CPF)

Antifraud

Antifraud implementation manual

Implementation manual for the ADIQ antifraud solution for e-commerce operations as a means of payment. The manual will help developers understand how to implement the solution.

Documentation Antifraud - Click here

Marketplace

What is Marketplace?

To learn more - click here

Consultation API

Consulting transactions via PaymentId

In order to consult a credit card transaction, you need to send a request using the GET method to the Payments resource, informing the PaymentId generated at the time of authorization, as shown in the example.

Request

Property Description Type Location Mandatory Maximum Size
PaymentId Identifier of the payment to be consulted. string path Yes 42

Response


                
        {
           "paymentAuthorization":{
              "paymentId":"020080286103040952150000006201850000000000",
              "statusDescription":"Autorizada e disponível para captura",
              "transactionDate":"2019-06-27T16:34:28.508Z",
              "authorizationCode": "T45623",
              "value": 13000,
              "netValue": null
           }
        }
    

    
Property Description Type
PaymentAuthorization.PaymentId Payment identifier. string
PaymentAuthorization.StatusDescription Transaction status (Error, Denied, Authorized available for capture, Captured, Canceled). string
PaymentAuthorization.TransactionDate Transaction date. datetime
PaymentAuthorization.AuthorizationCode Authorization code. string
PaymentAuthorization.Value Authorized amount (in cents). integer
PaymentAuthorization.NetValue Balance of the amount captured (in cents), which will only be reported after D+1 of the date it was captured. integer

Consulting transactions via OrderNumber

In order to consult a credit card transaction, you need to send a request using the GET method to the Payments resource informing the OrderNumber generated at the time of authorization and the transactionDate as shown in the example.

Request

Property Description Type Format Location Mandatory
OrderNumber OrderNumber entered by the customer in the payment request (Customer Order Number). string path Yes
transactionDate Transaction date. string yyyyMMdd path Yes

Response


                
        {
           "paymentAuthorization":{
              "paymentId":"020080286103040952150000006201850000000000",
              "statusDescription":"Autorizada e disponível para captura",
              "transactionDate":"2019-06-27T16:34:28.508Z",
              "authorizationCode": "T45623",
              "value": 13000,
              "netValue": null
           }
        }
    

    
Property Description Type
PaymentAuthorization.PaymentId Payment identifier. string
PaymentAuthorization.StatusDescription Transaction status (Error, Denied, Authorized available for capture, Captured, Cancelled). string
PaymentAuthorization.TransactionDate Transaction date. datetime
PaymentAuthorization.AuthorizationCode Authorization code. string
PaymentAuthorization.Value Authorization amount (in cents). integer
PaymentAuthorization.NetValue Balance of the amount captured (in cents), which will only be reported after D+1 of the date it was captured. integer

Annexes

PaymentID Composition

TID (TransactionID) is a 42-character code that serves as an identifier for an e-commerce transaction. This field is made up of the information described as MTI, Primary NSU, date/time, Acquirer NSU (also known as CV), which is often used for future reconciliations as it is unique, Filler


Property Description Size
MTI Identifies the type of capture 0200 for AC (Auto-Capture), and 0100 for PA (Pre-Authorization) 004
Primary NSU Primary NSU (NSU of the authorizer), also known as the NSU of the transaction. 006
Date/time Original transaction date/time in MMDDHHMMSS format. 010
Primary NSU Unique NSU for the transaction, used for future reconciliations. 012
Filler For future use. Sent 0000000000 010

Integration Errors

In the event of integration errors in any of the payment methods, a response will be returned containing an error code and a description.

Example

Mandatory field not entered, the answer will be:


                
[
   {
      "tag":"Campo",
      "description":"Não pode ser nulo ou vazio."
   }
]
    
    

Property Description
Tag API Error Code.
Description Error Description.

Late capture

What is a pre-authorization or pre-auth transaction?

Pre-authorization is a form of transaction where a query takes place that guarantees that the cardholder has the funds to pay for that service or product even before the capture transaction for authorization takes place. When the issuing bank authorizes, it makes a temporary “reservation” of funds on the credit card for that purchase - the limit is sensitized according to the amount of the pre-authorization transaction.


The pre-authorization transaction has specific business rules:

  • Validity: up to 30 days
  • Trigger: In tem, the pre-auth transaction is automatically reverted to an authorization transaction
  • MCC restriction: Eligible for specific MCCs that work with reservations such as hotels, car rental companies and others
  • Amount captured for authorization: the amount sent for authorization can be less than, equal to or greater than the pre-authorized amount.

Does Adiq have a pre-auth transaction? How does it work?

No, the solution provided by Adiq is a late-capture or post-capture transaction. The solution performs a pre-authorization transaction but will depend on a trigger to revert it to a late-capture transaction and thus send it for authorization. This trigger can be confirmation of stock prior to invoicing or a risk analysis of the transaction and, if suspicion/fraud is confirmed, the Partner chooses not to capture the transaction, thus avoiding a chargeback and fines from the card companies' excess chargeback and fraud monitoring programs, for example.


The business rules for late capture are different, such as:

  • Validity: up to 21 days
  • Trigger: it is mandatory that the transaction be reverted to a transaction for authorization (late capture), otherwise the initial transaction is undone and the actual charge to the bearer is not made.
  • MCC restriction: No MCC restriction

In order to conduct a late capture transaction, what do you need to send in the transaction?

In the TID (TransactionID) field, the information relating to the pre-authorized transaction, i.e. the same credit card must be used: The data sent is: MTI (Identifies the type of capture and 0100 for PA (Pre-Authorization), primary NSU, date/time, Acquirer NSU (also known as CV), which is often used for future reconciliations, as it is unique.

Can any Partner trade with late capture?

Yes, it is available to any merchant, whitelabel partner, SAAS or facilitator without a platform, provided they are integrated with our e-commerce gateway (digital capture).

Is it possible to cancel/reverse a late capture transaction? What is the time limit to cancel?

Yes, just call the API / endpoint to cancel the transaction within 21 days. If the No transaction is canceled or reverted to authorization, the transaction will be automatically undone.

Can I execute a late capture transaction on a debit card?

No. Late capture transactions are only allowed on credit cards. Debit card transactions have immediate authorization capture, and “reservation” is not possible.

What type of late capture transaction should be executed?

Late capture transactions can be carried out as cash credit or in installments. The same credit card can be used to carry out more than one late capture transaction.

What date will the transaction appear on the bearer’s card bill?

The bearer's invoice will show the date of authorization of the late capture transaction.

What are the applicable chargeback rules for a late capture transaction?

The chargeback rules are the same as the rules for a card transaction In ecommerce, liability remains the responsibility of the merchant.

Can the late capture transaction pass through the Adiq Antifraud and 3DS 2.0 tools?

Yes, ECs, whitelabel partners, SAAS or facilitators without a platform who choose to transact via delayed capture can take advantage of the anti-fraud and 3DS 2.0 tools, but they will need to be integrated with our e-commerce gateway (digital capture).

How does the Partner view late capture transactions in the Admin Portal?

In the admin portal, transactions are categorized as pre-authorization (up to the 21st day and before the trigger to revert them to late capture) and when the late capture actually happens, they are categorized as capture.

Is it possible to cancel/reverse a pre-authorized transaction? What is the time limit to cancel?

Yes, just call the API / endpoint to cancel the transaction within 21 days of the date of the preauthorization transaction. It is important to pay attention to the expiry date given in the preauthorization transaction. If the transaction is not canceled/captured, the transaction will be automatically undone. For example: Transaction was pre-authorized on 01/Jan, it will only be possible to cancel until 22/Jan, on 23/Jan it will not be possible to cancel.

In order to capture a pre-authorized transaction, what needs to be sent in the transaction?

Send the paymentId field that was received in the pre-authorization response and the value that will be captured in the request body. It is important to pay attention to the releaseAt date/validity time informed in the pre-authorization transaction. If the transaction is not captured and sent for authorization/capture, the transaction will be automatically undone. For example: Transaction was pre-authorized on 01/Jan at 3:00 PM, it will only be possible to capture until 22/Jan at 2:59 PM, from 22/Jan at 3:00 PM it will not be possible to capture.

API-codes

HTTP Status Code

HTTP Status Code Description
200 OK
400 Bad Request
401 Unauthorized
400 Internal Server Error

Notification API

Setting up notifications

To start receiving notifications about the transactions carried out, you need to make a POST request to the endpoint listed below:

Homologation Production
Request https://ecommerce-notification-hml.adiq.io https://ecommerce-notification.adiq.io

Request

Property Description Type Location Mandatory Maximum Size
PostBackUrl Url that will receive the HTTP POST with the notifications. String Body No
Headers Custom headers that can be sent in the request to the URL. List<KeyValuePair<string,string>> Body No
PostBackEnabled Whether sending notifications to the URL should be enabled. Boolean Body No
		        
		        
        {
	        {
		        "postBackUrl": "https://example.com/endpoint",
		        "headers": [
			        {
				        {
					        "key": "header1",
					        "value": "test1"
				        }
			        },
			        {
				        {
					        "key": "header2",
					        "value": "test2"
				        }
			        }
		        ],
		        "postbackEnabled": true
	        }
        }
				        
				        
			        

Response

HTTP Status Code Description
200 OK
400 Bad Request
401 Unauthorized
402 Client Error
500 Internal Server Error

Recurrence of attempts

The webhook is configured to attempt to communicate with the specified success or failure URL up to five times.

A simulation of the communication attempts is shown below, including the number of each attempt and the corresponding time:

Attempt Time Description
1st Immediately 00h00m The event occurred at midnight.
2nd Attempt 00h05m A new attempt will be sent after 5 minutes.
3rd Attempt 00h35m 30 minutes after the last attempt.
4th Attempt 01h35m 1 hour after the last attempt.
5th Attempt 03h05m 1.5 hours after the last attempt.
6th Attempt 05h05m 2 hours after the last attempt.

Information Sent in the Notification

All actions related to Recurring payments and Authorization (AC and PA) will be notified with the following information:

                
                
        {
          "Date": "2025-04-28T15:59:31.6906714",
          "OrderNumber": "0000000001",
          "PaymentId": "020057103504281858290001942369970000000000",
          "PaymentMethod": "Credit",
          "Amount": "690",
          "StatusCode": "0",
          "StatusDescription": "Captura - Sucesso",
          "SubscriptionId": "9d219bbf-1539-4f36-a386-80dc7dde0fc6",
          "BillingId": "17684803-fc4f-4441-9f57-bd5b1ed64f74"
        }
                        
                        
                    
Property Description Type Transaction Type
Date Date and time of the transaction. datetime All
OrderNumber OrderNumber provided by the customer in the payment request (Customer Order Number). string All
PaymentId Payment identifier, also known as TID. string All
PaymentMethod Type of the transaction. string All
Amount Transaction Value in cents. string All
StatusCode Authorizer return code. string All
StatusDescription Description of the authorizer return. string All
SubscriptionId Subscription identifier. string Recurring
BillingId Billing identifier. string Recurring