Valores escalados
Para manejar transacciones con diferentes niveles de precisión, Fee Engine utiliza un formato de escala para representar valores monetarios. Este enfoque garantiza consistencia entre monedas fiat y criptomonedas por igual. La fórmula es sencilla:Ejemplo: comprar un café (BRL)
Un café comprado por R$ 5.50 se representa en la API comoBRL 550|2:
Ejemplo: transferir Bitcoin (BTC)
Una transferencia de 0.00123456 BTC aparece comoBTC 123456|8:
Reglas de cálculo de tarifas
Cada tarifa utiliza unapplicationRule para definir cómo se calcula. Puedes elegir entre tres tipos de reglas:
Dos campos adicionales afectan el cálculo de tarifas:
- El campo
isDeductibleFromdefine cómo se realizará el cálculo en relación con el camporeferenceAmount, lo que significa que es posible especificar si la tarifa debe deducirse del valor inicial o neto de la transacción. prioritydetermina el orden en que se aplica cada tarifa.
maxBetweenTypes
Aplica el valor mayor entre una tarifa fija y una basada en porcentaje. Utiliza los camposreferenceAmount e isDeductibleFrom para determinar el resultado.
Ejemplo
- Valor de tarifa fija: R$ 5.
- Tarifa porcentual: 2%.
- Monto de referencia: R$ 1,000.
| Campo | Valor Bruto | Escala | Valor Escalado |
|---|---|---|---|
value (Flat) | 5.00 | 2 | 500 |
value (Percent) | 0.02 | 2 | 2 |
referenceAmount | 1,000.00 | 2 | 100000 |
flatFee
Aplica un monto de tarifa fija a la transacción, dependiendo dereferenceAmount e isDeductibleFrom.
Ejemplo
- Valor fijo: R$ 15.
- Monto de referencia: R$ 115.
- Escala: 2.
isDeductibleFrom | Fórmula | Tarifa Total |
|---|---|---|
false | referenceAmount + value | R$ 130.00 |
true | referenceAmount - value | R$ 100.00 |
| Campo | Valor Bruto | Escala | Valor Escalado |
|---|---|---|---|
value | 15.00 | 2 | 1500 |
referenceAmount | 115.00 | 2 | 11500 |
TotalFee | 130.00 / 100.00 | 2 | 13000 / 10000 |
percentual
Aplica una tarifa como porcentaje del monto de referencia. Ejemplo- Valor: 30%.
- Monto de referencia: R$ 389.50.
- Escala: 2.
isDeductibleFrom | Fórmula | Tarifa Total |
|---|---|---|
false | referenceAmount * value | R$ 116.85 |
true | referenceAmount - (referenceAmount * value) | R$ 272.65 |
| Campo | Valor Bruto | Escala | Valor Escalado |
|---|---|---|---|
value | 30 | 2 | 0.30 |
referenceAmount | 389.50 | 2 | 38950 |
TotalFee | 116.85 / 272.65 | 2 | 11685 / 27265 |
División de tarifas
Cuando una transacción involucra múltiples cuentas de origen, las tarifas se dividen proporcionalmente entre ellas.Ejemplo
- Monto total: R$ 4,000.00.
- Tarifa fija: R$ 15.00.
- Impuesto: 4%.
isDeductibleFrom: false.
- @account1: R$ 1,000.
- @account2: R$ 1,000.
- @account3: R$ 1,600.
- @account4: R$ 400.
Porcentaje de participación
Fórmula: (Monto de Cuenta ÷ Monto Total) × 100- @account1: 25%.
- @account2: 25%.
- @account3: 40%.
- @account4: 10%.
División de tarifa fija
| Cuenta | % | Porción de Tarifa | Total con Tarifa |
|---|---|---|---|
| @account1 | 25% | R$ 3.75 | R$ 1,003.75 |
| @account2 | 25% | R$ 3.75 | R$ 1,003.75 |
| @account3 | 40% | R$ 6.00 | R$ 1,606.00 |
| @account4 | 10% | R$ 1.50 | R$ 401.50 |
Impuesto proporcional
| Cuenta | Porción de Impuesto | Total con Impuesto |
|---|---|---|
| @account1 | R$ 40.00 | R$ 1,040.00 |
| @account2 | R$ 40.00 | R$ 1,040.00 |
| @account3 | R$ 64.00 | R$ 1,664.00 |
| @account4 | R$ 16.00 | R$ 416.00 |
Monto final por Cuenta
| Cuenta | Principal | Porción de Tarifa | Porción de Impuesto | Total Final |
|---|---|---|---|---|
| @account1 | R$ 1,000 | R$ 3.75 | R$ 40.00 | R$ 1,043.75 |
| @account2 | R$ 1,000 | R$ 3.75 | R$ 40.00 | R$ 1,043.75 |
| @account3 | R$ 1,600 | R$ 6.00 | R$ 64.00 | R$ 1,670.00 |
| @account4 | R$ 400 | R$ 1.50 | R$ 16.00 | R$ 417.50 |
Validación de división de tarifas
Para garantizar la exactitud:- El porcentaje de participación debe totalizar 100%.
- La división de tarifas debe igualar la tarifa fija original.
- El impuesto debe totalizar el 4% de la transacción.
- Total final = monto original + tarifas + impuesto → R 4,175.00.
Exenciones de tarifas: reglas y jerarquía
Por monto de transacción
UsaminimumAmount y maximumAmount para definir cuándo las tarifas deben aplicarse. Por ejemplo: Si el rango es R 301 no activará tarifas.
Por cuenta
El sistema verificawaivedAccounts. Si el origen está listado, está exento de tarifas.
Ejemplo mixto: exenciones de tarifas y división de tarifas
Veamos un ejemplo de un paquete que incluye cuentas con exenciones de tarifas y requiere dividir las tarifas proporcionalmente.Escenario
Estamos procesando una transacción de R$ 4,000, que incluye:- Una tarifa fija de R$ 16.
- Un impuesto IOF del 6% a deducir.
División en el lado del origen
| Cuenta de Origen | % | Valor Proporcional |
|---|---|---|
| @account1 | 15% | R$ 600 |
| @account2 | 35% | R$ 1,400 |
| @account3 | 40% | R$ 1,600 |
| @account4 | 10% | R$ 400 |
División en el lado del destino
| Cuenta de Destion | % |
|---|---|
| @donation1 | 25% |
| @donation2 | 25% |
| @donation3 | 25% |
| @donation4 | 25% |
- El IOF se configura con
"isDeductibleFrom": true, lo que significa que se deducirá del monto a distribuir. Su “priority”: 1 lo convierte en la primera tarifa a aplicar. - La Tarifa Administrativa tiene
"isDeductibleFrom": false, lo que significa que se agrega al monto de la transacción. Su"priority": 2significa que se aplica después del IOF.
Desglose de los cálculos de tarifas
| Cuenta de Origen | % | Valor Proporcional | Tarifa Admin | Monto de Transferencia Final |
|---|---|---|---|---|
| @account1 | 15% | R$ 600 | Exento | R$ 600 |
| @account2 | 35% | R$ 1,400 | Exento | R$ 1,400 |
| @account3 | 40% | R$ 1,600 | R$ 12.80 | R$ 1,612.80 |
| @account4 | 10% | R$ 400 | R$ 3.20 | R$ 403.20 |
- Total sujeto a tarifa: R 400 = R$ 2,000.
- Porción de
@account1: 1,600 / 2,000 = 80% → 16 × 0.8 = R$ 12.80. - Porción de
@account2: 400 / 2,000 = 20% → 16 × 0.2 = R$ 3.20.
¿Y qué pasa con el IOF?
Dado que el IOF es una deducción, se resta de cada cuenta de destino proporcionalmente a su porción.| Cuenta de Destino | % | Valor Bruto | IOF (6%) | Valor Neto Recibido |
|---|---|---|---|---|
| @donation1 | 25% | R$ 1,000 | R$ 60 | R$ 940 |
| @donation2 | 25% | R$ 1,000 | R$ 60 | R$ 940 |
| @donation3 | 25% | R$ 1,000 | R$ 60 | R$ 940 |
| @donation4 | 25% | R$ 1,000 | R$ 60 | R$ 940 |

