Understanding Amounts
Understanding how amounts are handled throughout a transaction is essential — including how they're processed, how fees are applied, how currency conversion works, and most importantly, which values should be credited or debited to the customer’s balance.
{danger.fa-exclamation} IMPORTANT:
Transaction and session amounts may change during processing. More details are available in the Notification Amounts section.
During transaction processing, amounts may sometimes change especially in approved deposits. This typically occurs due to the behavior of certain PSPs.
For example, bank wire and crypto payments require customers to complete the transfer outside the PSP interface, which allows them to modify the amount and/or currency.
Amount-related values appear in multiple fields across notifications:
session.amount
and session.currency
represent the amount attempted — either submitted in a cashier login request or by the customer during a withdrawal. These are always in the base currency (same currency as you sent in the cashier login request).
session.processed_amount
and session.processed_currency
represent the total processed amount across all approved transactions during cashier session or via Direct API, in base currency.
transaction.amount
and transaction.currency
reflect what the customer submitted within the cashier. These may change in the final notification based on the amount received from the PSP. This is the value you should use to credit or debit the customer’s balance.
transaction.processed_amount
and transaction.processed_currency
show what the customer will see on their bank receipt or SMS. The currency here may differ if changed in the cashier or by the PSP. If a conversion occurs, transaction.conversion_rate
will indicate the rate used to convert from amount
to processed_amount
.
.currency
always matches the currency sent in the initial API call..amount
will always correspond to transaction.processed_amount
, either in the same currency or different - calculated according to the transaction.conversion_rate
..amount
, transaction.processed_amount
, and transaction.processed_currency
— may change by the time the transaction reaches its final status, depending on what is confirmed by the PSP..conversion_rate
may change..processed_currency
differs from transaction.currency
, you must treat transaction.currency
as the base for payout processing, though the actual process at PSP will be in the transactionprocessed_currency
.In some cases, the processing currency may differ from the one originally submitted. This can happen in the following scenarios:
Note:
Currency conversion at the Praxis side is never applied to refunds or to transactions processed via Direct API, unless the PSP itself performs the conversion.
If a withdrawal is requested in a currency different from the base, processing will occur in the customer-selected currency. This will be reflected in transaction.processed_amount
and transaction.processed_currency
.
If you are applying transaction fees, there are two main fee types to consider:
Fees can be calculated as a flat value or as a percentage of the transaction amount.
The examples below demonstrate the effect of a 7% fee on a $10 transaction (deposit or withdrawal).
transaction.amount
= 930 transaction.processed_amount
= 1000 fee
= 70transaction.amount
= 1000 transaction.processed_amount
= 1070 fee
= 70transaction.amount
= 1000 transaction.processed_amount
= 930 fee
= 70transaction.amount
= 1070 transaction.processed_amount
= 1000 fee
= 70