The golden rule
For Brazilian Real (BRL):
The conversion is fixed:
apiValue = displayValue × 10^decimals.
Two shapes you will encounter
Where money flows in a single direction (a payment-orderamount), the API uses a plain integer:
Amount object:
Either form represents the same idea — just at different levels of self-description.
The Asset shape
When the API exposes a wallet balance, it accompanies the Amount with an Asset descriptor:
asset.decimals is informational — always trust amount.decimals for the specific value at hand. In practice they will match.
Supported currencies
The Transactions Engine API currently supports:
For PIX operations,
currency is always BRL.
Three balances, not one
When you query a wallet balance, you receive three amounts:
When deciding whether a new outbound payment can be created, check
available, not amount.
Client-side handling
Use BigInt or arbitrary-precision integers
JavaScript:int64 is more than sufficient — BRL values up to ≈ 92 quadrillion fit.
Never multiply with floats
^\d+(\.\d{1,2})?$ (for BRL) and convert by digit manipulation, not multiplication.
Display formatting
Always format with the user’s locale on the client side:Next
Wallet balance
Endpoint that returns the three balances and the asset descriptor.
Payments overview
How payment orders consume
available and update balances.