Pricing Templates
Access prerequisites
- Permission (module):
creditConfigManage(to create/edit). Read access granted byviewCredits. - License/Feature:
CREDIT_INVESTMENTSenabled in the tenant license (Vault). - Menu container: TOKENIZATION → group Tokenized Credit
What it is / when to use
The Pricing Template defines spreads, fees, and terms that the pricing engine uses to calculate the discount, fees, and net disbursement of a receivables anticipation operation. It is the credit "price table": from it the system derives the period discount rate and how much the originator actually receives.
Use this screen to standardize pricing by product/risk, instead of entering rates manually for each operation. Each template can also adjust the spread by risk score (e.g.: AAA cheaper, D more expensive).
Prerequisites
- Permission:
creditConfigManageregistered for the role (double permission — CPM enum in the backend + dynamic module in the DB). - License/Feature:
CREDIT_INVESTMENTSenabled; otherwise the group does not appear in the menu. - Dependencies: none to create the template. It is consumed later when quoting/creating deals (the template is referenced by
pricingTemplateId).
Step by step
- Go to Tokenized Credit → Pricing Templates.
- Filter by Active if necessary.
- Click Create.
- Fill in Name, Base Spread, Administrative Fee, Reserve %, Minimum Term, and Maximum Term (in days).
- Optionally, in the spread by score block, add rows associating a score (AAA, AA, A, BBB, BB, B, CCC, D, or LOW/MEDIUM/HIGH) with an additional spread.
- Click Save.
Fields
| Field | What it is | Required? | System/backend effect |
|---|---|---|---|
| Name | Template identifier | Yes | Stored in name; used in the listing and in the selection when quoting deals. |
| Base Spread | Spread in % p.a. added to the base rate | Yes (default 0) | Stored in baseSpread. Enters the discount rate formula: annualRate = baseRate + spread + riskAdjustment, applied pro-rata by term (× days/365). |
| Administrative Fee | Fixed fee in % on the gross value | Yes (default 0) | Stored in adminFee. Calculates feesAmount = grossValue × adminFee/100 — flat fee, not annualized. |
| Reserve % | Percentage retained as reserve | Yes (default 0) | Stored in reservePercentage. Guarantee/coverage reserve associated with the operation. |
| Minimum Term (days) | Minimum accepted average term | Yes (default 0) | Stored in minTermDays. In pricing, if the weighted average term of the receivables falls below the minimum, the calculation is rejected with an error. |
| Maximum Term (days) | Maximum accepted average term | Yes (default 0) | Stored in maxTermDays. If the weighted average term exceeds the maximum, the calculation is rejected. |
| Spread by Score → Score | Risk classification (AAA…D, or LOW/MEDIUM/HIGH) | No | Key of the spreadByScore map. Allows risk adjustment by rating. |
| Spread by Score → Spread | Additional spread for that score, in % p.a. | Conditional | Value of the spreadByScore map. The pricing engine uses the adjustment corresponding to the originator's risk profile as riskAdjustment in the formula. If the profile is not in the map, the adjustment is 0. |
| Active | Enables/disables the template | Yes (default Yes) | Stored in active; inactive templates must not be used in new quotes. |
| Version | Version number | No (default 1) | Stored in version; tracks price revisions. |
How the template is applied (engine view)
When quoting/pricing an operation, the pricing engine:
- Sums the gross value of the receivables.
- Calculates the weighted average term (each receivable is weighted by its share of the gross value) and validates it against
minTermDays/maxTermDays. - Obtains the base rate (CDI/Selic) from the tenant configuration — if not present, uses 12% p.a. as default.
- Applies the risk adjustment from
spreadByScoreaccording to the originator's profile. discountRate = (baseRate + baseSpread + riskAdjustment) × (days/365).discount = gross × discountRate/100;fees = gross × adminFee/100;net = gross − discount − fees.
Actions and modals
- Create / Update: saves the template via
createPricingTemplate/updatePricingTemplate. Button visible only withcreditConfigManage. - Add / Remove spread row: manipulate the
spreadByScoremap (generated automatically — you do not edit the JSON manually). - Edit: loads the template and rebuilds the spread rows from the saved
spreadByScore.
Since this is configuration that defines price, saving may require step-up (password + MFA) depending on the environment.
Business rules / cautions
Attention
- Average term outside the range rejects the calculation. If the weighted average term of the receivables falls below
minTermDaysor abovemaxTermDays, pricing fails — adjust the range or the receivables. - Default base rate is 12% p.a. If the tenant does not have the base rate configured, the engine assumes 12% p.a. and logs a warning. Do not rely on the default in production: configure the actual base rate.
adminFeeis flat,baseSpreadis annualized. The administrative fee is applied directly on the gross; the spread is annualized and pro-rated by term. Do not confuse the two when calibrating the price.- Missing score = 0 adjustment. If the originator's risk profile has no row in
spreadByScore, the risk adjustment is zero — this may underprice high risk.
- Financial values: the percentages and derived amounts (discount, fees, net) are treated as BigNumber in the credit domain — do not round manually; check decimal places.
Examples
Scenario 1 — Standard receivables anticipation template
- Name: "Invoices 30-90d". Base Spread: 6 (% p.a.). Admin Fee: 1 (%). Reserve %: 5. Min./Max. Term: 30 / 90.
- No score adjustments.
- Save.
Result for a batch of R$ 100,000 with a 60-day average term and 12% p.a. base rate: annual rate = 12 + 6 + 0 = 18%; period rate = 18 × 60/365 ≈ 2.96%; discount ≈ R$ 2,959; fees = 1% = R$ 1,000; net ≈ R$ 96,041.
Scenario 2 — Pricing with rating adjustment
- Name: "Variable Risk Pool". Base Spread: 4. Admin Fee: 0.5. Min./Max. Term: 15 / 180.
- Spread by score:
AAA→ 0BBB→ 2D→ 8
- Save.
Result: a BBB-rated originator receives annual rate = base + 4 + 2; the same batch for a D-rated originator pays base + 4 + 8 — higher risk is automatically more expensive.
Scenario 3 — Short-term template (card/scheduled PIX)
- Name: "Ultra Short Term". Base Spread: 3. Admin Fee: 0. Min./Max. Term: 1 / 30.
- Save.
Result: operations with an average term above 30 days are rejected by this template (exceeds maxTermDays), forcing the use of another template for longer terms.