From asset to bankslip
When the assignment configuration has bankslip collection, QI Tech automatically registers a bankslip at QI SCD for each assigned credit right. The bankslip data comes from what you sent when inserting the asset. This page shows where each field comes from and which ones you use to identify and reconcile the bankslip in your system.
It applies to the credit rights duplicata mercantil, duplicata de serviços, CT-e and discounted contract. Each asset generates one bankslip. In the discounted contract, since each asset is an installment, each installment has its own bankslip.
When the bankslip is registered
The bankslip is not registered when the asset is inserted. It is registered after the assignment is paid, when the asset enters the fund's portfolio. The registration confirmation arrives when the bank return file of the next business day is processed. The full flow is in Bankslips — Start.
That is why the bankslip fields must be right at insertion. Once the asset is assigned, changes to the bankslip (due date, interest, fine, rebate) are made through the bankslip instructions, not by resending the asset.
The due-date change instruction changes only the bankslip. The asset keeps its original due date in the fund's portfolio, in the portfolio report and in the overdue count. To also change the asset due date, report an extension (asset_extension, with new_maturity_date) in asset settlement. The extension applies to credit rights, including the discounted contract, and does not exist for the installment contract.
Where each field comes from
The paths below are relative to the discounted_credit_right object in the insertion request body.
Client control fields
These are the fields you choose freely and that come back when you query the bankslip. Use them to link the bankslip to the record in your system.
| Asset field | Bankslip field | Rule |
|---|---|---|
participant_control_number | Participant control number | Up to 25 characters. Only letters, digits and _ are kept; other characters are removed. Must be unique in the collection account. |
order_number | Document number ("seu número") | The bankslip receives only the last 10 characters. The full value stays on the asset. |
bankslip.our_number.number | "Nosso número" | Optional. Send it only when your collection account expects the "nosso número" to be issued by the client. Without it, the "nosso número" is generated at registration. |
participant_control_number in an assignment with bankslipThe field is optional at asset insertion, but in collection it is the bankslip key: the collection account does not accept two bankslips with the same control number, and assets without the field count as repeated among themselves. In practice, only the first asset without a control number gets a bankslip registered. Generate a unique value per asset, with up to 25 alphanumeric characters — for example, derived from your external_id.
Amount, due date and charges
| Asset field | Bankslip field | Rule |
|---|---|---|
face_value | Bankslip amount | |
maturity_date | Due date | |
delay.fine | Fine | Must be a percentage (fine_type: percentage). A fine with percentage_value equal to zero is not added to the bankslip. |
delay.interest.pre_fixed | Late interest | Charged per day of delay, as an amount: face_value × daily rate. If you send monthly_rate, it is converted into a simple daily rate on the given calendar_base. A zero rate is not added to the bankslip. |
If the asset has no delay, the bankslip uses the fine and interest registered in the fund's collection configuration.
Payer and guarantor
| Source | Bankslip field | Rule |
|---|---|---|
borrower.name, borrower.document_number, borrower.person_type | Payer | The document is sent without punctuation. |
borrower.address | Payer address | Only sent to the bankslip if street, number, neighborhood, postal_code, city and uf are all filled in. If any is missing, the bankslip is registered without an address. complement is optional. |
| Assignor of the assignment configuration | Guarantor ("sacador/avalista") | Comes from the assignor registration, not from the request body. Appears when the collection account expects the assignor as guarantor. |
Fields that do not go to the bankslip
These fields stay on the asset and come back in the asset query, but do not appear on the bankslip:
external_id— useparticipant_control_numberas the bridge between the bankslip and the asset;installment_number;- the discounted contract
contractobject (number,issue_date,total_face_value,number_of_installments); - the
invoiceobject of duplicatas and CT-e.
Example
Excerpt of a discounted contract inserted in an assignment with bankslip:
{
"discounted_credit_right": {
"external_id": "parcela-958431587-01",
"face_value": 1231.21,
"maturity_date": "2025-12-10",
"installment_number": 1,
"participant_control_number": "CT958431587P01",
"order_number": "2023000958431587",
"delay": {
"fine": { "fine_type": "percentage", "percentage_value": 0.02 },
"interest": {
"method": "pre_fixed",
"pre_fixed": { "monthly_rate": 0.01, "calendar_base": "calendar_360" }
}
}
}
}
The bankslip registered at QI SCD looks like this:
| Bankslip field | Value | Why |
|---|---|---|
| Amount | R$ 1,231.21 | face_value |
| Due date | 2025-12-10 | maturity_date |
| Participant control number | CT958431587P01 | participant_control_number, as sent (letters and digits only) |
| Document number | 0958431587 | the last 10 characters of order_number |
| Fine | 2% | fine.percentage_value of 0.02 |
| Late interest | R$ 0.41 per day of delay | 1% per month × 12 ÷ 360 days × R$ 1,231.21 |
Neither external_id, nor installment_number, nor the contract object appear on the bankslip. To find the asset from the bankslip, use the participant control number.
Checking the bankslip
Query the registered bankslip in Retrieving Bankslip and Duplicate Copy. The response carries both control numbers:
external_participant_control_number— the value exactly as you sent it;participant_control_number— the value after character cleanup, which is what is on the bankslip.
For registration, payment and write-off notices, see the bankslip webhooks.