Multi-Currency
Abacus Tax Engine accepts transactions in any ISO 4217 currency. Tax is always calculated in the transaction currency - the currency you submit. For reporting purposes, amounts are also converted to USD.
For field definitions, see the Transactions API Reference.
How Currency is Submitted
Include a currency_details object in your transaction with the ISO 4217 currency code. If you do not provide an exchange rate, Abacus Tax Engine fetches the current market rate automatically. If your system has an authoritative rate - for example, from your ERP or the rate locked in at payment time - you can provide it in manual_exchange_rate and it will be used instead.
How Tax is Calculated
Tax determination uses the submitted currency throughout. Jurisdiction rates are applied to line item amounts as submitted - there is no currency conversion before tax is calculated. The USD figures in the response are a parallel representation for reporting, not inputs to the tax calculation.
Exchange Rate Sourcing
When you provide a manual_exchange_rate, the response reflects exchange_rate_info.source: "client" to confirm your rate was used. When Abacus Tax Engine fetches the rate automatically, source is "complyt".
is_exchange_rate_estimated indicates whether the rate is a cached daily estimate rather than a real-time rate. This can occur when live market data is temporarily unavailable.
USD Reporting Fields
For non-USD transactions, the response includes USD-converted equivalents for the key monetary totals inside currency_details.exchange_rate_info. These are provided for reporting and reconciliation - the authoritative tax figure is always in the transaction currency.
USD Transactions
For USD transactions, currency_details can be omitted entirely. When included with currency: "USD", the exchange_rate_info field in the response will be null - no conversion is needed.