Card Invoice
Card experience with PIX in installments
The API is still in the final stages of development, so this manual is subject to change.
QI Tech webhooks should not be mapped in a restrictive manner. Additional fields may be included in the payloads of webhooks returned by our APIs.
1. Create a Digital Wallet
In order to post items to the invoice (PIX entries backed by CCB), it is first necessary to create a digital wallet for each customer.
Request
Request Body
{
"owner": {
"person_type": "natural",
"name": "\<WALLET HOLDER'S NAME\>",
"document_number": "\<WALLET HOLDER'S CPF\>",
"address": {
"street": "\<WALLET HOLDER'S STREET\>",
"state": "\<WALLET HOLDER'S STATE\>",
"city": "\<WALLET HOLDER'S CITY\>",
"neighborhood": "\<WALLET HOLDER'S NEIGHBORHOOD\>",
"number": "\<WALLET HOLDER'S NUMBER\>",
"postal_code": "\<WALLET HOLDER'S POSTAL CODE\>",
"complement": "\<WALLET HOLDER'S ADDRESS COMPLEMENT\>"
},
"phone": {
"number": "\<WALLET HOLDER'S MOBILE NUMBER\>",
"area_code": "\<WALLET HOLDER'S AREA CODE\>",
"country_code": "55",
},
"email": "\<WALLET HOLDER'S EMAIL\>",
"document_identification_number":"\<WALLET HOLDER'S IDENTIFICATION DOCUMENT NUMBER\>",
"document_identification":"\<WALLET HOLDER'S IDENTIFICATION DOCUMENT KEY\>",
"document_identification_back":"\<WALLET HOLDER'S IDENTIFICATION DOCUMENT BACK KEY\>",
"selfie":"\<WALLET HOLDER'S SELFIE KEY\>",
"document_identification_type": "\<WALLET HOLDER'S IDENTIFICATION DOCUMENT TYPE\>"
},
"invoice_configuration":{
"closing_day": "\<INVOICE CLOSING DATE\>",
"due_day": "\<INVOICE DUE DATE\>",
"grace_months": "\<DIFFERENCE, IN MONTHS, BETWEEN closing_day AND due_day\>",
"issuing_and_due_day_difference": "\<DAYS BEFORE DUE DATE THAT THE INVOICE SHOULD BE ISSUED\>",
"invoice_payment_type": "bankslip",
"delay_fine_percentage": "\<LATE PAYMENT CONFIGURATION - PENALTY AMOUNT\>",
"delay_monthly_interest_rate": "\<LATE PAYMENT CONFIGURATION - DAILY INTEREST RATE\>"
},
"invoice_authorization": {
"signature": {
"signer": {
"name": "\<SIGNER'S NAME\>",
"email": "\<SIGNER'S EMAIL\>",
"phone": {
"number": "\<SIGNER'S MOBILE NUMBER\>",
"area_code": "\<SIGNER'S AREA CODE\>",
"country_code": "55",
},
"document_number": "SIGNER'S CPF"
},
"authentication_type": "opt_in",
"authenticity": {
"timestamp": "\<SIGNATURE DATE AND TIME\>",
"ip_address": "\<SIGNER'S IP ADDRESS\>",
"fingerprint": {},
"third_party_additional_data": {},
"session_id": "\<SIGNER'S SESSION ID\>"
},
"signed_object": {
"document_key": "\<DOCUMENT KEY IN QI\>"
}
}
},
"limit": "\<WALLET LIMIT VALUE\>",
"default_monthly_interest_rate": "\<DEFAULT MONTHLY INTEREST RATE FOR THE WALLET, APPLIED TO EACH ENTRY (PIX)\>"
}
Request body details
Payload wallet
Field | Type | Description | Characters |
---|---|---|---|
owner | object | Wallet Owner Object | Object owner |
invoice_configuration | object | Invoice Configuration Object for Each Wallet | Object invoicer_configuration |
invoice_authorization | object | Authorization Object | Object invoice_authorization |
limit | number | Wallet Limit | |
default_monthly_interest_rate | number | Default Interest Rate of the Wallet |
Object owner
Field | Type | Description | Characters |
---|---|---|---|
person_type | string | Identifier of whether the sent object is an individual or a legal entity. | |
name | string | Corporate name in the case of legal entity operations or the person's name in the case of individual operations. | 100 |
document_number | string | Person's CPF (numbers only). Limited to 11 characters. | |
address | string | Customer's Address. | Object adress |
phone | string | Object with phone details | Object phone |
email | string | Customer's Email. |
Object address
Field | Description | Example | Max. Characters |
---|---|---|---|
street | string | Street of the address | 100 |
state | string | State of the address (with two uppercase characters) | 2 |
city | string | City of the address | 100 |
neighborhood | string | Neighborhood of the address | 100 |
number | string | Street number | 10 |
postal_code | string | Postal code of the address (http://www.buscacep.correios.com.br/sistemas/buscacep/) (numbers only) | 8 |
complement | string | Address complement (free text) | 100 |
Object phone
Field | Description | Example | Max. Characters |
---|---|---|---|
country_code | string | DDI code of the phone (https://ddi.guiamais.com.br/) | 3 |
area_code | string | DDD code of the phone (https://ddd.guiamais.com.br/) | 2 |
number | string | Phone number (numbers only) | 10 |
Object invoice_configuration
Field | Description | Example | Max. Characters |
---|---|---|---|
closing_day | number | Invoice closing day (cut-off date for registering entries in an invoice). | |
due_day | number | Invoice due date. Options: 1,5,10 | |
grace_months | number | Difference in months between the closing date and due date. | |
delay_fine_percentage | number | Late payment penalty amount, in case of invoice payment delay. | |
delay_monthly_interest_rate | number | Interest amount, per month, in case of invoice payment delay. | |
issuing_and_due_day_difference | number | Number of days between invoice issuance and due date, for calculating the invoice issuance date | |
invoice_payment_type | string | Invoice payment method. Options: 'bankslip' |
In the invoice configuration (invoice_configuration), fixed data such as “delay_fine_percentage”, “grace_months”, “delay_monthly_interest_rate”, “invoice_payment_type”, “issuing_and_due_day_difference” can be directly configured in the partner's initial setup in the API, simplifying the wallet creation payload. The information configured in the partner's initial setup in the API will be fixed for all customers.
The number of days between the invoice due date “invoice_configuration.due_day” and the closing date “invoice_configuration.closing_day” must be greater than or equal to 8 days and less than or equal to 10 days.
Response
Response Body
{
"wallet_key": "0f4581d6-f4a4-4430-b94e-5db700e4baed",
"status": "active"
}
Response body details
Field | Type | Description | Characters |
---|---|---|---|
wallet_key | string | Unique wallet identifier (uuid) | |
status | string | Wallet status |
1.1. Consult existing wallets:
QUERY PARAMETERS
Enumerator | Description |
---|---|
owner_document_number | Wallet holder's CPF (Individual Taxpayer Registry) |
page | Page number of the query |
page_size | Requested page size in the query |
Request
Response
Response Body
{
"page": 1,
"last_page": true,
"data": [
{
"wallet_key": "0f4581d6-f4a4-4430-b94e-5db700e4baed",
"owner": {
"person_type": "natural",
"name": "First name Last name",
"document_number": "12345678911",
"address": {
"street": "RUA DEZENOVE",
"state": "SP",
"city": "JARDINÓPOLIS",
"neighborhood": "JARDINS DO IMPÉRIO",
"number": "19",
"postal_code": "13348719",
"complement": ""
},
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
},
"email": "test@test.com.br"
},
"collaterals": [],
"cards": [
{"card_key":"067cba94-4d57-4a75-9766-7e5b95c87367"}
],
"invoice_authorization": {
"signature": {
"signer": {
"name": "First Name Last Name",
"document_number": "12345678911",
"email": "test@test.com.br",
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
}
},
"authentication_type": "opt_in",
"authenticity": {
"timestamp": "2022-11-18T11:17:46",
"ip_address": "104.101.21.0",
"fingerprint": {
"browser": "Mozila"
},
"third_party_additional_data": {},
"session_id": "8df91773-c537-4662-b08b-025f03bf79dc"
},
"signed_object": {
"document_key": "27A0BA3D-A89D-4218-AB06-BC39B94CE23C"
}
}
},
"interest_base": "calendar_days_365",
"default_monthly_interest_rate": 0.035,
"invoice_configuration": {
"due_day": 10,
"closing_day": 1,
"grace_months": 1,
"invoice_payment_type": "bankslip",
"delay_fine_percentage": 0,
"delay_monthly_interest_rate": 0,
"issuing_and_due_day_difference": 9
},
"status": "active",
"limit": 800,
"current_limit": 800
}
]
}
1.2. Consult specific wallet:
Request
Response
Response Body
{
"wallet_key": "0f4581d6-f4a4-4430-b94e-5db700e4baed",
"owner": {
"person_type": "natural",
"name": "First Name Last Name",
"document_number": "12345678911",
"address": {
"street": "RUA DEZENOVE",
"state": "SP",
"city": "JARDINÓPOLIS",
"neighborhood": "JARDINS DO IMPÉRIO",
"number": "19",
"postal_code": "13348719",
"complement": ""
},
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
},
"email": "test@test.com.br"
},
"collaterals": [],
"cards": [
{"card_key":"067cba94-4d57-4a75-9766-7e5b95c87367"}
],
"invoice_authorization": {
"signature": {
"signer": {
"name": "First Name Last Name",
"document_number": "12345678911",
"email": "test@test.com.br",
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
}
},
"authentication_type": "opt_in",
"authenticity": {
"timestamp": "2022-11-18T11:17:46",
"ip_address": "104.101.21.0",
"fingerprint": {
"browser": "Mozila"
},
"third_party_additional_data": {},
"session_id": "8df91773-c537-4662-b08b-025f03bf79dc"
},
"signed_object": {
"document_key": "27A0BA3D-A89D-4218-AB06-BC39B94CE23C"
}
}
},
"interest_base": "calendar_days_365",
"default_monthly_interest_rate": 0.035,
"invoice_configuration": {
"due_day": 10,
"closing_day": 1,
"grace_months": 1,
"invoice_payment_type": "bankslip",
"delay_fine_percentage": 0,
"delay_monthly_interest_rate": 0,
"issuing_and_due_day_difference": 9
},
"status": "active",
"limit": 800,
"current_limit": 800
}
1.3. Change wallet limit:
Request
Request Body
{
"limit": 123
}
Response
Response Body
{
"wallet_key": "0f4581d6-f4a4-4430-b94e-5db700e4baed",
"owner": {
"person_type": "natural",
"name": "First Name Last Name",
"document_number": "12345678911",
"address": {
"street": "RUA DEZENOVE",
"state": "SP",
"city": "JARDINÓPOLIS",
"neighborhood": "JARDINS DO IMPÉRIO",
"number": "19",
"postal_code": "13348719",
"complement": ""
},
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
},
"email": "test@test.com.br"
},
"collaterals": [],
"invoice_authorization": {
"signature": {
"signer": {
"name": "First Name Last Name",
"document_number": "12345678911",
"email": "test@test.com.br",
"phone": {
"number": "912345678",
"area_code": "21",
"country_code": "55"
}
},
"authentication_type": "opt_in",
"authenticity": {
"timestamp": "2022-11-18T11:17:46",
"ip_address": "104.101.21.0",
"fingerprint": {
"browser": "Mozila"
},
"third_party_additional_data": {},
"session_id": "8df91773-c537-4662-b08b-025f03bf79dc"
},
"signed_object": {
"document_key": "27A0BA3D-A89D-4218-AB06-BC39B94CE23C"
}
}
},
"interest_base": "calendar_days_365",
"default_monthly_interest_rate": 0.035,
"invoice_configuration": {
"due_day": 10,
"closing_day": 1,
"grace_months": 1,
"invoice_payment_type": "bankslip",
"delay_fine_percentage": 0,
"delay_monthly_interest_rate": 0,
"issuing_and_due_day_difference": 9
},
"status": "active",
"limit": 123,
"current_limit": 1000
}
2. Add cards to an existing digital wallet:
After creating the digital wallet for the customer, it is necessary to create a card linked to this wallet.
Request
Request Body
{
"settlement_method": "credit_operation"
}
Request body details
Payload card
Field | Type | Description | Characters |
---|---|---|---|
settlement_method | string | Type of ballast. In other words, how the transactions will be backed. Options: “credit_operation” |
Response
Response Body
{
"card_key": "dabd10b6-80a8-4c9c-8a8e-e25a56668525"
}
Response body details
Field | Type | Description | Characters |
---|---|---|---|
card_key | string | Unique card identifier (uuid) |
3. Simulate operation:
Simulate transactions (PIX).
Request
Request Body
{
"amount": 200,
"number_of_installments": 4,
"monthly_interest_rate": 0.035
}
It is not necessary to provide the "monthly_interest_rate" field; when not provided, the transaction will assume the wallet's default.
Response
Response Body
{
"amount": 200,
"final_amount": 221.16,
"number_of_installments": 4,
"monthly_interest_rate": 0.035,
"cet": 0.03,
"annual_cet": 0.5040,
"total_iof": 100.44,
"items": [
{
"amount": 55.29,
"used_limit":50,
"installment_number": 1,
"invoice": {
"due_date": "2023-09-10"
}
},
{
"amount": 55.29,
"used_limit":50,
"installment_number": 2,
"invoice": {
"due_date": "2023-10-10"
}
},
{
"amount": 55.29,
"used_limit":50,
"installment_number": 3,
"invoice": {
"due_date": "2023-11-10"
}
},
{
"amount": 55.29,
"used_limit":50,
"installment_number": 4,
"invoice": {
"due_date": "2023-12-10"
}
}
]
}
4. Include transactions in a card:
Include transactions (PIX). This is the stage where the CCB (Promissory Note) is generated, and it is verified whether there is available credit to complete the transaction. The settlement of the transaction is processed synchronously.
Request
It is not necessary to provide the "monthly_interest_rate" field; when not provided, the transaction will assume the wallet's default.
Request Body
{
"disbursement": {
"method": "pix",
"data": {
"pix_key": "\<PIX KEY\>",
"end_to_end_id": "\<PIX End-to-End Key\>"
}
},
"description": "Purchase João's Bakery",
"amount": 200,
"request_control_key": "275619e6-23d1-485e-81ca-5552aa235761",
"number_of_installments": 4,
"monthly_interest_rate": 0.027,
"authorization": {
"document_number": "01975273702",
"signature": {
"signed_object": {
"document_key": "6254c56e-c980-4b38-ad99-ac5ec7535d68"
},
"authenticity": {
"ip_address": "192.168.0.0",
"third_party_additional_data": {
"hash": "23A2581A8D524035FEB2950D28727CF5 | 192.168.0.0 | 23/02/2023 17:38:45"
},
"timestamp": "2023-02-23T17:38:45.610458300"
},
"authentication_type": "opt_in",
"signer": {
"document_number": "01975273702",
"phone": {
"number": "986243444",
"country_code": "55",
"area_code": "21"
},
"name": "Master Tester",
"email": "mail@mail.com"
}
}
}
}
Disburse with Pix Key
{
"disbursement": {
"method": "pix",
"data": {
"pix_key": "\<PIX KEY\>",
"end_to_end_id": "\<PIX END TO END KEY\>"
}
}
}
Disburse with Pix QR Code
{
"disbursement": {
"method": "pix_qrcode",
"data": {
"qr_code_url": "\<PIX URL\>",
"end_to_end_id": "\<PIX QR Code End-to-End Key\>"
}
}
}
Disburse with Manual Pix
{
"disbursement": {
"method": "pix_manual",
"data": {
"ispb": "\<BANK'S CNPJ BASE\>",
"branch_number": "\<DISBURSEMENT ACCOUNT AGENCY\>",
"account_number": "\<ACCOUNT NUMBER WITHOUT THE DIGIT\>",
"account_digit": "\<DISBURSEMENT ACCOUNT DIGIT\>",
"document_number": "\<CPF/ CNPJ OF THE ACCOUNT HOLDER\>",
"name": "\<ACCOUNT HOLDER'S NAME\>"
}
}
}
Response
In case of successful transaction disbursement:
Response Body
{
"card_entry_key": "ad8e073a-2159-479b-b141-cd5d8ceb8567",
"status": "active",
"signed_url":"https://storage.googleapis.com/live-doc-api/documents/XXXXXXXXXXXXXXX.pdf"
}
Due to instability from Bacen or the destination bank of the transaction, there may be a delay in the contract transaction. In this case, it will assume the status "pending_activation" and will be updated when the transaction is successfully completed or the contract is canceled. Therefore, the flow will migrate from synchronous to asynchronous and must wait for the webhook of the transaction success or failure .
In case of failure in the transaction disbursement:
Response Body
{
"card_entry_key": "ad8e073a-2159-479b-b141-cd5d8ceb8567",
"status": "rejected",
"cancel_reason": "pix_refusal",
"cancel_reason_description": "Invalid Credit Recipient Agency or Account"
}
4.1 Consult a specific transaction (card entry):
Request
Response
Response Manual Pix Transaction
{
"transaction_key": "75b800f3-12ba-41b3-a7d5-cbb3ae2199f2",
"end_to_end_id": "E324025022023082120064RNfdmEDTxV",
"transacted_at": "2023-08-21T20:07:46",
"amount": 2242.8,
"number_of_installments": 2,
"monthly_interest_rate": 0.027,
"final_amount":2250,
"cet": 0.03,
"annual_cet": 0.5040,
"total_iof": 100.44,
"description":"Purchase João's Bakery",
"disbursement": {
"method": "pix_manual",
"data": {
"ispb": 32402502,
"branch_number": 1,
"account_number": 15570,
"account_digit": 1,
"document_number": "12345678911",
"name": "XXXXX XXXX XXXX"
}
},
"card_entry_datetime": "2023-06-07T10:29:49Z",
"signed_url":"https://storage.googleapis.com/live-doc-api/documents/XXXXXXXXXXXXXXX.pdf",
"items": [
{
"item_key":"37ebad25-7eef-4a46-b497-ce46c2c04f68",
"amount": 1125,
"used_limit":1121.4,
"status":"active",
"installment_number": 1,
"invoice": {
"invoice_key": "b32e7eae-eaab-4402-9126-9fcf42741c24",
"due_date": "2023-07-10",
"status": "opened"
},
},
{
"item_key":"60e4801f-75ce-411e-aaf0-99b951c05308",
"amount": 1125,
"used_limit":1121.4,
"installment_number": 2,
"status":"active",
"invoice": {
"invoice_key": "2af90944-1377-447c-aa70-0efd24c17d6f",
"due_date": "2023-08-10",
"status": "opened"
},
}
],
"status": "active"
}
Response Pix Key Transaction
{
"transaction_key": "75b800f3-12ba-41b3-a7d5-cbb3ae2199f2",
"end_to_end_id": "E324025022023082120064RNfdmEDTxV",
"transacted_at": "2023-08-21T20:07:46",
"amount": 2242.8,
"final_amount":2250,
"number_of_installments": 2,
"monthly_interest_rate": 0.027,
"cet": 0.03,
"annual_cet": 0.5040,
"total_iof": 100.44,
"description":"Purchase João's Bakery",
"disbursement": {
"data": {
"end_to_end_id": "E3240250220210928212926341670923",
"pix_key": "+5516983068432"
},
"method": "pix"
},
"card_entry_datetime": "2023-06-07T10:29:49Z",
"signed_url":"https://storage.googleapis.com/live-doc-api/documents/XXXXXXXXXXXXXXX.pdf",
"items": [
{
"item_key":"37ebad25-7eef-4a46-b497-ce46c2c04f68",
"amount": 1125,
"used_limit":1121.4,
"installment_number": 1,
"status":"active",
"invoice": {
"invoice_key": "b32e7eae-eaab-4402-9126-9fcf42741c24",
"due_date": "2023-07-10",
"status": "opened"
},
},
{
"item_key":"60e4801f-75ce-411e-aaf0-99b951c05308",
"amount": 1125,
"used_limit":1121.4,
"status":"active",
"installment_number": 2,
"invoice": {
"invoice_key": "2af90944-1377-447c-aa70-0efd24c17d6f",
"due_date": "2023-08-10",
"status": "opened"
},
}
],
"status": "active"
}
Response Pix QR Code Transaction
{
"transaction_key": "75b800f3-12ba-41b3-a7d5-cbb3ae2199f2",
"end_to_end_id": "E324025022023082120064RNfdmEDTxV",
"transacted_at": "2023-08-21T20:07:46",
"amount": 2242.8,
"final_amount":2250,
"number_of_installments": 2,
"monthly_interest_rate": 0.027,
"cet": 0.03,
"annual_cet": 0.5040,
"total_iof": 100.44,
"description":"Purchase João's Bakery",
"disbursement": {
"method": "pix_qrcode",
"data": {
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/a1908d67-bcc8-40cd-a63d-6b6fb510b35c5204000053039865802BR5925QI SOCIEDADE DE CREDITO D6009Sao Paulo61080145200062070503***63042184",
"end_to_end_id": "E3240250220220822211350711639780"
}
},
"card_entry_datetime": "2023-06-07T10:29:49Z",
"signed_url":"https://storage.googleapis.com/live-doc-api/documents/XXXXXXXXXXXXXXX.pdf",
"items": [
{
"item_key":"37ebad25-7eef-4a46-b497-ce46c2c04f68",
"amount": 1125,
"used_limit":1121.4,
"installment_number": 1,
"status":"active",
"invoice": {
"invoice_key": "b32e7eae-eaab-4402-9126-9fcf42741c24",
"due_date": "2023-07-10",
"status": "opened"
},
},
{
"item_key":"60e4801f-75ce-411e-aaf0-99b951c05308",
"amount": 1125,
"used_limit":1121.4,
"installment_number": 2,
"status":"active",
"invoice": {
"invoice_key": "2af90944-1377-447c-aa70-0efd24c17d6f",
"due_date": "2023-08-10",
"status": "opened"
},
}
],
"status": "active"
}
Enumeradores Card Entry status
Enumerators Card Entry status | Descrição |
---|---|
active | Active and disbursed contract |
pending_activation | Contract awaiting disbursement |
canceled | Cancelled contract |
paid | Settled contract |
4.2 Generate transaction receipt:
Request
Response
Response Body
{
"base64_receipt": ""
}
5. List invoices of a digital wallet:
Request
Response
Limit of items returned per page: 100
Response Body
{
"wallet_key": "9798d733-7f68-4929-8877-a00bfda9735e",
"invoice_closing_day": 2,
"invoice_due_day": 10,
"page": "1",
"last_page": "False",
"invoices": [
{
"invoice_key": "b32e7eae-eaab-4402-9126-9fcf42741c24",
"due_date": "2023-04-10",
"closing_date": "2023-04-02",
"status": "opened",
"number_of_items": 2
},
{
"invoice_key": "2af90944-1377-447c-aa70-0efd24c17d6f",
"due_date": "2023-05-10",
"closing_date": "2023-05-02",
"status": "opened",
"number_of_items": 12
},
{
"invoice_key": "26e18c39-8f67-4399-9a42-8d18bc175da2",
"due_date": "2023-04-10",
"closing_date": "2023-04-02",
"status": "opened",
"number_of_items": 1
},
{
"invoice_key": "6991f8e6-7b1d-4496-a08f-8a9eef263f07",
"due_date": "2023-06-10",
"closing_date": "2023-06-02",
"status": "opened",
"number_of_items": 12
}
]
}
6. List transactions of an invoice:
Request
Response
Response Body
{
"due_date": "2023-06-10",
"closing_date": "2023-06-02",
"status": "closed",
"amount": 12345.67,
"paid_amount": 0,
"delay_interest_total_amount": 0,
"delay_fine_total_amount": 0,
"number_of_items": 1,
"invoice_payments": [
{
"invoice_payment_key": "63a7c7a2-9e13-48cf-aea2-3b494125d14b",
"invoice_payment_type": "bankslip",
"charge_type": "ordinary",
"data": {
"digitable_line": "32990001039000000000104620768103992260000004183",
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/881979cb-1c15-4dea-a05e-316caae22f5e5204000053039865802BR5925LOTEAMENTO RESIDENCIAL PO6014PORTO NACIONAL61087750000062070503***630414B8"
},
"expiration": "2023-07-10",
"status": "opened",
"total_amount": 0,
"paid_amount": 0,
"chargeback_amount": 50
}
],
"items": [
{
"item_key": "37ebad25-7eef-4a46-b497-ce46c2c04f68",
"amount": 12345.67,
"used_limit": 12300,
"status": "active",
"card_entry": {
"card_entry_key": "ad8e073a-2159-479b-b141-cd5d8ceb8567",
"card_entry_datetime": "2022-11-13T10:29:49",
"description": "Purchase João's Bakery",
"final_amount": 12345.67,
"number_of_installments": 2,
"card": {
"card_key": "d41bd53e-eedc-4d62-97dd-26bbaefadb20"
}
},
"installment_number": 1
}
]
}
Enumerators Item status
Enumerator | Description |
---|---|
pending_activation | Item awaiting activation, the item's value contributes to the invoice amount |
active | Active item, the value of the item makes up the invoice value |
canceled | Item canceled, the value of the item is removed from the invoice value |
paid | Item paid in the month's invoice, the value of the item makes up the invoice value |
paid_early | Item paid in advance, the value of the item no longer makes up the invoice value |
7. Boleto Generation:
The ordinary boleto will be generated automatically on the day the invoice is closed and can be redeemed via the invoice payment get. The query parameter “shorten_url” is a flag to request a shortened boleto URL.
The boleto can be paid within 30 days of the invoice due date.
URL shortening is limited to 60 requests per minute.
Request
Response
Parameter shorten_url=False
Response Body
{
"invoice_payment_key": "63a7c7a2-9e13-48cf-aea2-3b494125d14b",
"invoice_payment_type": "bankslip",
"charge_type": "ordinary",
"data": {
"bank_slip_key": "dc4a27db-2fe1-474d-aa02-88d6fffb8d0d",
"digitable_line": 32990001039000000000104620768103992260000004183,
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/881979cb-1c15-4dea-a05e-316caae22f5e5204000053039865802BR5925LOTEAMENTO RESIDENCIAL PO6014PORTO NACIONAL61087750000062070503***630414B8",
"bank_slip_url": "\<URL BOLETO IN PDF\>"
},
"expiration": "2023-07-10",
"status": "issued",
"total_amount": 0,
"paid_amount": 0,
"chargeback_amount": 50,
}
Parameter shorten_url=True
Response Body
{
"invoice_payment_key": "63a7c7a2-9e13-48cf-aea2-3b494125d14b",
"invoice_payment_type": "bankslip",
"charge_type": "ordinary",
"data": {
"bank_slip_key": "dc4a27db-2fe1-474d-aa02-88d6fffb8d0d",
"digitable_line": 32990001039000000000104620768103992260000004183,
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/881979cb-1c15-4dea-a05e-316caae22f5e5204000053039865802BR5925LOTEAMENTO RESIDENCIAL PO6014PORTO NACIONAL61087750000062070503***630414B8",
"bank_slip_url": "\<URL BOLETO IN PDF\>",
"short_bank_slip_url": "\<SHORTENED BOLETO PDF URL\>"
},
"expiration": "2023-07-10",
"status": "issued",
"total_amount": 0,
"paid_amount": 0
}
7.1 Generation of extraordinary advance payment slips:
Request
Request Body
{
"invoice_payment_type": "bankslip",
"charge_type": "early",
"expiration": "2023-08-15",
"invoice_items": [
"key_1",
"key_2"
]
}
Condition: “expiration” must be two working days less than the invoice closing date to ensure that payment will not interfere in this routine.
Response
Response Body
{
"invoice_payment_key": "63a7c7a2-9e13-48cf-aea2-3b494125d14b",
"invoice_payment_type": "bankslip",
"charge_type": "early",
"data": {
"digitable_line": 32990001039000000000104620768103992260000004183,
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/881979cb-1c15-4dea-a05e-316caae22f5e5204000053039865802BR5925LOTEAMENTO RESIDENCIAL PO6014PORTO NACIONAL61087750000062070503***630414B8",
},
"expiration": "2023-08-15",
"status": "issued",
"total_amount": 200,
"paid_amount": 0
}
7.2 Simulation of extraordinary overdue boleto:
The simulation can only be requested after the payment deadline for the regular boleto has passed.
Request
Request Body
{
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"expiration": "2023-08-15"
}
Request com desconto
Request Body
{
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"expiration": "2023-08-15",
"discount_amount": 50
}
Response
Response Body
{
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"total_amount": 150,
"discount_amount": 50
}
7.3 Extraordinary overdue payment slip generation:
The late payment slip can only be generated after the payment deadline for the regular slip has passed.
Request
Request Body
{
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"expiration": "2023-08-15"
}
Request with discount
Request Body
{
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"expiration": "2023-08-15",
"discount_amount": 50
}
Response
Response Body
{
"invoice_payment_key": "63a7c7a2-9e13-48cf-aea2-3b494125d14b",
"invoice_payment_type": "bankslip",
"charge_type": "delay",
"data": {
"digitable_line": 32990001039000000000104620768103992260000004183,
"qr_code_url": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/881979cb-1c15-4dea-a05e-316caae22f5e5204000053039865802BR5925LOTEAMENTO RESIDENCIAL PO6014PORTO NACIONAL61087750000062070503***630414B8",
},
"expiration": "2023-07-10",
"status": "issued",
"total_amount": 0,
"paid_amount": 0,
"discount_amount": 50
}
7.4 Cancellation of invoice payment slip
Request
Response
Response Body
{}
8. Chargeback:
8.1. Consult Chargebacks:
Request
PATH PARAMETERS
Enumerator | Description |
---|---|
status | Chargeback status('active'/'used'/'pending_payment') |
Response
Response Body
{
"page": 1,
"last_page": true,
"data": [
{
"charge_back_key": "key",
"amount": 100,
"used_amount": 0,
"status": "active",
"reference_card_entry_key": "key",
"reference_item_key": "key"
}
]
}
9. Webhooks:
9.1. Change of invoice status:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.invoice.status_change",
"key": "\<INVOICE-KEY\>",
"event_datetime": "\<DATA E HORA DO ENVIO DO WEBHOOK\>",
"status": "opened",
"data": {
"wallet_key":"\<WALLET KEY\>",
"due_date": "2023-07-10",
"closing_date": "2023-07-02"
}
}
The content of the “date” field remains the same for all statuses
Enumerators Invoice status
Enumerator | Description |
---|---|
opened | Open invoice |
closed | Invoice closed |
paid | Invoice paid on due date |
paid_overdue | Invoice paid late |
9.2. Change of transaction status:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.card_entry.status_change",
"key": "\<CARD-ENTRY-KEY\>",
"event_datetime": "\<DATE AND TIME THE WEBHOOK WAS SENT\>",
"status": "active",
"data": {
"wallet_key":"\<WALLET KEY\>"
}
}
Enumeradores Card Entry status
Enumerator | Description |
---|---|
active | Contract active and disbursed |
canceled | Contract canceled |
This webhook will only be sent when the transaction is in “pending_activation” status
9.3. Bill of exchange creation after invoice closing:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.invoice_payment.status_change",
"key": "\<INVOICE-PAYMENT-KEY\>",
"event_datetime": "\<DATE AND TIME THE WEBHOOK WAS SENT\>",
"status": "issued",
"data": {
"charge_type": "ordinary",
"wallet_key":"\<WALLET KEY\>",
"invoice_key":"\<INVOICE KEY\>",
"digitable_line":"\<BOLETO DIGITISABLE LINE\>",
"qr_code_url":"\<BOLETO QR CODE URL\>"
}
}
Enumerators Charge type
Enumerator | Description |
---|---|
ordinary | Ordinary payment |
early | Extraordinary advance payment |
delay | Extraordinary late payment |
9.4. Change of invoice payment status:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.invoice_payment.status_change",
"key": "\<INVOICE-PAYMENT-KEY\>",
"event_datetime": "\<DATE AND TIME THE WEBHOOK WAS SENT\>",
"status": "paid",
"data": {
"wallet_key":"\<WALLET KEY\>",
"charge_type": "ordinary",
"invoice_key":"\<INVOICE KEY\>",
"paid_amount": 150.0
}
}
Enumerators Invoice Payment status
Enumerator | Description |
---|---|
issued | Issuing the invoice for payment |
paid | Boleto paid |
canceled | Payment of canceled boleto |
9.5. Change of chargeback status:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.chargeback.status_change",
"key": "\<CHARGEBACK-KEY\>",
"event_datetime": "\<DATE AND TIME THE WEBHOOK WAS SENT\>",
"status": "active",
"data": {
"wallet_key":"\<WALLET KEY\>",
"chargeback_amount":150.00,
"reference_card_entry_key":"\<KEY OF THE REVERSAL REFERENCE TRANSACTION\>",
"reference_item_key" :"\<KEY OF THE REVERSAL REFERENCE ITEM\>"
}
}
Reversal status enumerators
Enumerator | Description |
---|---|
active | Active reversal to be used in an invoice payment |
used | Reversal already used to pay an invoice |
pending_payment | Chargeback awaiting payment to be activated |
The pending_payment status represents the reversal of an item that belongs to a closed invoice that has not yet been paid; the reversal amount can only be used once the invoice has been paid.
9.6.1 Rejection of transaction renegotiation:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.renegotiation.status_change",
"key": "\\<RENEGOTIATION-KEY\\>",
"event_datetime": "\\<DATE AND TIME THE WEBHOOK WAS SENT\\>",
"status": "rejected",
"data": {
"wallet_key": "\\<WALLET KEY\\>"
}
}
9.6.2 Transaction renegotiation payment:
Webhook
Webhook Body
{
"webhook_type": "card_invoice.renegotiation.status_change",
"key": "\\<RENEGOTIATION-KEY\\>",
"event_datetime": "\\<DATE AND TIME THE WEBHOOK WAS SENT\\>",
"status": "paid",
"data": {
"wallet_key": "\\<WALLET KEY\\>",
"paid_method_type": "<PAYMENT METHOD>",
"paid_in": {
"code_number": "<CODE OF THE LIQUIDATING BANK>",
"ispb": "<ISPB OF THE LIQUIDATING BANK>",
"name": "<NAME OF THE LIQUIDATING BANK>"
}
}
}
Enumerators renegotiation status
Enumerator | Description |
---|---|
pending_payment | Renegotiation of advance payment awaiting payment |
paid | Renegotiation of advance payment paid |
canceled | Renegotiation of advance payment canceled |
rejected | Advance payment renegotiation rejected due to payment of installment outside the renegotiation or expiry of deadline |
10. Cancellation of purchase within 7 days:
10.1. Request to cancel a purchase:
Request
Request Body
{}
Response
Response Body
{
"amount": "2026.93",
"copy_paste_pix": "00020126930014br.gov.bcb.pix2571qrcode-h.dev.qitech.app/bacen/cobv/dece8d3e-32ce-439e-8204000053039865802BR5925Joao61080150400062070503***63046ECD",
"expiration_date": "2022-09-28"
}
10.2. Active purchase cancellation inquiry:
Response
Response Body
{
"amount": "2026.93",
"copy_paste_pix": "00020126930014br.gov.bcb.pix2571qrcode-h.dev.qitech.app/bacen/cobv/dece8d3e-32ce-439e-8204000053039865802BR5925Joao61080150400062070503***63046ECD",
"expiration_date": "2022-09-28"
}
11. Renegotiation of purchases:
11.1. Simulate renegotiation of purchases:
Request
Request Body
{
"reference_date": "2024-07-20",
"card_entries": [
{
"card_entry_key": "817dced9-3216-410b-a51c-645019ab320b",
"items": [
{
"item_key": "04318ab7-7b3c-4558-ad7b-4e9e2d9e0e6e"
}
]
},
{
"card_entry_key": "3a3d8bbb-be30-41b0-b5be-8d358dc059ea"
}
]
}
Request body details
Field | Type | Description | Characters |
---|---|---|---|
reference_date | string | Renegotiation reference date. |
Response
Response Body
{
"renegotiation_payment_amount": 350,
"reference_date": "2022-07-20",
"discount_percentage": 0,
"discount_amount": 0,
"card_entries": [
{
"card_entry_key": "817dced9-3216-410b-a51c-645019ab320b",
"payment_amount": 125,
"discount_amount": 0,
"affected_items": [
{
"item_key": "04318ab7-7b3c-4558-ad7b-4e9e2d9e0e6e",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
}
]
},
{
"card_entry_key": "3a3d8bbb-be30-41b0-b5be-8d358dc059ea",
"payment_amount": 225,
"discount_amount": 0,
"affected_items": [
{
"item_key": "1249249c-95b5-45aa-81f1-967abf5e6eef",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
},
{
"item_key": "c66dad81-ecb4-4afa-8713-a85ee8e721ec",
"due_date": "2022-08-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 100,
"present_amount": 120
}
]
}
]
}
11.2. Create a purchase renegotiation:
When the “items” object is not entered, all available items in the transaction will be considered to be included in the renegotiation, i.e. items with a status other than “active” will be ignored.
In addition, if any item is part of an active invoice slip, the slip must be canceled before proceeding with the renegotiation.
Request
Request Body
{
"reference_date": "2024-07-20",
"proposal_due_date": "2024-07-27",
"card_entries": [
{
"card_entry_key": "817dced9-3216-410b-a51c-645019ab320b",
"items": [
{
"item_key": "04318ab7-7b3c-4558-ad7b-4e9e2d9e0e6e"
}
]
},
{
"card_entry_key": "3a3d8bbb-be30-41b0-b5be-8d358dc059ea"
}
]
}
Discount fields
Adding one of these fields to the request allows you to define a percentage or absolute discount value when creating or simulating the renegotiation proposal.
Percentage discount
{
"discount_percentage": 0.5
}
Absolute discount
{
"discount_amount": 200
}
Request body details
Field | Type | Description | Characters |
---|---|---|---|
reference_date | string | Renegotiation reference date. | |
proposal_due_date | string | Due date of renegotiation proposal. |
Response
Response Body
{
"renegotiation_key": "2af29916-582b-4ce7-8440-352a0d9543f7",
"renegotiation_payment_amount": 350,
"reference_date": "2022-07-20",
"renegotiation_status": "pending_payment",
"proposal_due_date": "2022-07-27",
"discount_percentage": 0,
"discount_amount": 0,
"payment": {
"digitable_line": "",
"qr_code_url": "",
"qr_code_key": "",
"bank_slip_key": "",
"paid_method_type": null
},
"card_entries": [
{
"card_entry_key": "817dced9-3216-410b-a51c-645019ab320b",
"payment_amount": 125,
"discount_amount": 0,
"affected_items": [
{
"item_key": "04318ab7-7b3c-4558-ad7b-4e9e2d9e0e6e",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
}
]
},
{
"card_entry_key": "3a3d8bbb-be30-41b0-b5be-8d358dc059ea",
"payment_amount": 225,
"discount_amount": 0,
"affected_items": [
{
"item_key": "1249249c-95b5-45aa-81f1-967abf5e6eef",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
},
{
"item_key": "c66dad81-ecb4-4afa-8713-a85ee8e721ec",
"due_date": "2022-08-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 100,
"present_amount": 120
}
]
}
]
}
Response body details
Field | Type | Description | Characters |
---|---|---|---|
reference_date | string | Renegotiation reference date. | |
proposal_due_date | string | Due date of renegotiation proposal. | |
renegotiation_key | string | Unique renegotiation identifier (uuid). | |
renegotiation_payment_amount | number | Total value of the renegotiation. | |
discount_percentage | number | Amount of the percentage discount to be applied in the renegotiation. | |
discount_amount | number | Absolute discount amount to be applied in the renegotiation. | |
payment | object | Object containing the renegotiation payment information. | |
card_entries | list | List of transactions and their respective installments to be renegotiated. |
11.3. Consult an existing purchase renegotiation:
QUERY PARAMETERS
Enumerator | Description |
---|---|
shorten_url | Parameter used to request a shortened boleto url |
Response
Response Body
{
"renegotiation_key": "2af29916-582b-4ce7-8440-352a0d9543f7",
"renegotiation_payment_amount": 350,
"reference_date": "2022-07-20",
"renegotiation_status": "pending_payment",
"proposal_due_date": "2022-07-27",
"discount_percentage": 0,
"discount_amount": 0,
"payment": {
"digitable_line": "",
"qr_code_url": "",
"qr_code_key": "",
"bank_slip_key": "",
"paid_method_type": null,
"bank_slip_url": "\<URL BOLETO IN PDF\>",
"short_bank_slip_url": "\<SHORTENED BOLETO PDF URL\>"
},
"card_entries": [
{
"card_entry_key": "817dced9-3216-410b-a51c-645019ab320b",
"payment_amount": 125,
"discount_amount": 0,
"affected_items": [
{
"item_key": "04318ab7-7b3c-4558-ad7b-4e9e2d9e0e6e",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
}
]
},
{
"card_entry_key": "3a3d8bbb-be30-41b0-b5be-8d358dc059ea",
"payment_amount": 225,
"discount_amount": 0,
"affected_items": [
{
"item_key": "1249249c-95b5-45aa-81f1-967abf5e6eef",
"due_date": "2022-07-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 125,
"present_amount": 100
},
{
"item_key": "c66dad81-ecb4-4afa-8713-a85ee8e721ec",
"due_date": "2022-08-15",
"principal_amount": 100,
"interest_amount": 20,
"fine_amount": 5,
"total_amount": 100,
"present_amount": 120
}
]
}
]
}
11.4. Manually canceling a renegotiation:
Response
Response Body
{
"renegotiation_key": "2af29916-582b-4ce7-8440-352a0d9543f7",
"renegotiation_status": "canceled"
}