Credit Split Update
This endpoint allows updating the credit split (split payment) of a previously issued bank slip. The new rules fully replace the existing ones and apply to the next settlement of the bank slip.
- The bank slip must be in
registeredstatus and not yet paid. - The sum of
beneficiary_settlement_percentageand the percentages in each item ofsplit_payment_rulesmust be exactly 100. - The payload replaces all existing split rules (it is not incremental).
- The split applies to all settlement flows of the bank slip (SILOC, STR, notary office and Pix QR Code), including bank slips with QR Code already issued — in this case, the rules are also automatically updated on the QR Code.
- The accounts in the split rules must be open and registered with QI Tech (QI Tech will look them up by the
document_number,account_numberandaccount_digitprovided).
Request
Path parameters
| Field | Type | Description | Characters |
|---|---|---|---|
account_key | uuidv4 | Unique identification key of the account in which the bank slip was issued | 36 |
requester_profile_key | uuidv4 | Unique identification key of the wallet | 36 |
bank_slip_key | uuidv4 | Unique identification key of the bank slip | 36 |
Request Body
{
"beneficiary_settlement_percentage": 70,
"split_payment_rules": [
{
"percentage": 20,
"document_number": "12345678901",
"account_owner_name": "John Smith",
"account_number": "1234567",
"account_digit": "8"
},
{
"percentage": 10,
"document_number": "10987654321",
"account_owner_name": "Mary Johnson",
"account_number": "7654321",
"account_digit": "0"
}
]
}
Request Body Params
| Field | Type | Description | Characters |
|---|---|---|---|
beneficiary_settlement_percentage * | float | Percentage of the settled amount allocated to the bank slip's beneficiary. Accepts values from 0 to 100. | - |
beneficiary_max_amount | float | Maximum amount the beneficiary receives at settlement. When the paid amount exceeds this limit, the surplus is fully directed to the first rule of the split_payment_rules array. Accepts values greater than 0 and less than or equal to the bank slip amount. | - |
split_payment_rules * | object array | List of split rules. Minimum 1, maximum 10 rules. | split_payment_rule Object |
Objeto split_payment_rule
| Field | Type | Description | Characters |
|---|---|---|---|
percentage * | float | Percentage of the settled amount allocated to this account. Accepts values from 0 to 100. Use 0 when this rule is meant exclusively to receive the surplus from beneficiary_max_amount. | - |
document_number * | string | CPF/CNPJ of the destination account holder. | 11 or 14 |
account_owner_name * | string | Name of the destination account holder. | 100 |
account_number * | string | Destination account number. | 20 |
account_digit * | string | Destination account check digit. | 2 |
Use case: directing late fees and interest to a separate account
How can I configure the split so that interest and late fees that exceed the bank slip's face value are directed to a different account?
This scenario is common for platforms that issue bank slips on behalf of third parties (schools, condominiums, marketplaces), where the bank slip's owner should always receive the face value and the platform receives the additional interest/late fee in case of overdue payment.
It is configured by combining beneficiary_max_amount with a split rule with percentage = 0:
{
"beneficiary_settlement_percentage": 100,
"beneficiary_max_amount": 1000.00,
"split_payment_rules": [
{
"percentage": 0,
"document_number": "12345678000199",
"account_owner_name": "Billing Platform",
"account_number": "1234567",
"account_digit": "8"
}
]
}
How the calculation works considering a bank slip of R$ 1,000.00:
| Scenario | Paid amount | Beneficiary receives | Platform receives |
|---|---|---|---|
| Paid on time | R$ 1,000.00 | R$ 1,000.00 | R$ 0.00 (no settlement generated) |
| Paid late (with R$ 100.00 interest/fee) | R$ 1,100.00 | R$ 1,000.00 | R$ 100.00 |
| Partial late payment | R$ 950.00 | R$ 950.00 | R$ 0.00 |
The rule is: the beneficiary receives at most beneficiary_max_amount; any amount paid above this is fully directed to the first rule in split_payment_rules.
beneficiary_max_amountmust be greater than 0 and less than or equal to the bank slip amount (amount).- When any rule has
percentage = 0, thebeneficiary_max_amountfield is required. - Only one rule in
split_payment_rulesmay havepercentage = 0per bank slip (the surplus recipient).
Response
Response Body
{}
Error Response
Response Body: Error
{
"title": "title",
"description": "description in English",
"translation": "descrição em portugues",
"code": "code",
"extra_fields": {}
}
HTTP Codestatus | QI Codecode | Titletitle | Description (eng)description | Description (pt-br)translation |
|---|---|---|---|---|
| 400 | QIT000001 | Bad Request | Schema Error | Schema Inválido |
| 404 | BKS000029 | Not Found | Bank slip not found for the given key ({bank_slip_key}). | Boleto não encontrado para a chave fornecida ({bank_slip_key}). |
| 400 | BKS000032 | Bad Request | Bank slip must be in 'registered' status. | O boleto deve possuir o status 'registered'. |
| 422 | BKS000157 | Unprocessable Entity | Could not find an account matching the provided split payment account data. | Não foi possível encontrar uma conta com os dados informados na regra de split payment. |
| 400 | BKS000158 | Bad Request | The beneficiary_max_amount must be greater than 0 and not greater than the bank slip amount. | O beneficiary_max_amount deve ser maior que 0 e não pode ser maior que o valor do boleto. |
| 400 | BKS000159 | Bad Request | Split payment rules with percentage equal to 0 require beneficiary_max_amount to be set. | Regras de split payment com percentual igual a 0 exigem o campo beneficiary_max_amount preenchido. |
| 400 | BKS000160 | Bad Request | Only one split payment rule with percentage equal to 0 is allowed. | É permitido apenas uma regra de split payment com percentual igual a 0. |