Discount, interest and fine simulator
Tweak the modality, value, due date, discount, interest and fine to
preview — day by day — how much a customer pays across the lifetime of
a Pix charge with due date (OVERDUE / COBV). The calculations run
100% in your browser — nothing is sent to the Woovi API and no
charge is created.
The form labels below are currently in pt-BR. Localizing the component strings is tracked as a follow-up.
Discount modalities
Woovi exposes six modalities, aligned with the BACEN COBV standard:
FIXED_VALUE_UNTIL_SPECIFIED_DATE— fixed cents off, valid until a specified date. Accepts multiple tiers (e.g. R$1.00 off if paid 5 days early; R$0.50 off if paid 10 days early).PERCENTAGE_UNTIL_SPECIFIED_DATE— same idea in percentage (basis points).VALUE_PER_RUNNING_DAY_ADVANCE— cents per running (calendar) day before the due date.VALUE_PER_BUSINESS_DAY_ADVANCE— cents per business day (skips weekends and BR banking holidays).PERCENTAGE_PER_RUNNING_DAY_ADVANCE— basis points per running day before the due date.PERCENTAGE_PER_BUSINESS_DAY_ADVANCE— basis points per business day.
How the math works
- Discount (
discountSettings): only applied before the due date (dayIndex < daysForDueDate). On the due date and later the discount is zero. - Interest (
interests.value): basis points per running day, only after the due date. E.g.100= 1.00% per day. - Fine (
fines.value): applied once after the due date.type: 'FIXED'in cents;type: 'PERCENTAGE'in basis points over the principal. daysAfterDueDate: defines the simulation window after the due date — not an expiration rule. After this limit, the screen simply stops generating rows.
Unit convention
To avoid floating-point pitfalls, Woovi (and BACEN) use two integer units:
- Cents —
R$1.00 = 100. Applies tochargeValue,valueof modalities 3/4, entries ofdiscountFixedDatefor modality 1, and fines withtype: 'FIXED'. - Basis points —
1.00% = 100. Applies tovalueof modalities 5/6, entries of modality 2,interests.value, and fines withtype: 'PERCENTAGE'.
The screen shows a readable preview next to each field (R$X.XX or
X.XX%) so you don't have to do the math yourself.
Export to the API
- Copiar JSON returns the envelope
{ modality, modalityNumber, input, rows }— same format emitted by the--outflag of thesimulateChargeDiscount.tsscript in the Woovi monorepo. - Copiar como cURL assembles a
POST /api/v1/chargeready to run. Replace<APP_ID>with your AppID and<CORRELATION_ID>with a unique identifier before executing.
daily vs summary mode
By default the schedule shows one row per day (daily). Toggle
Summary mode to keep only relevant milestones: creation day, days
where the discount tier changes, the due date itself, the first day
after the due date, and the last simulated day.