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
{
"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.)
| 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 |
| ||||||||
Payment.CaptureType |
| ||||||||
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
{
"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
[
{
"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.
- The parameter must be enabled in the customer record for this function to be enabled
- Client enabled to execute 3DS on credit transaction
- 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
- Homologation - adiq-3ds-package-hml-1.0.2-min.zip
- Production - adiq-3ds-package-1.0.2-min.zip
- 3ds Decision Map - mapa-fluxo-3ds
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 |