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.