We have 2 different types of 'on-the-fly' currency conversions we see in Paypal & the way that makes sense to handle one does not, seem to make sense for the other.
Type 1 - Currency Conversion is converting transaction to Settlement Currency (BRL->USD)
Type 2 - Currency Conversion is a balance transfer (moving funds to where they are needed, disassociated with the transaction it is linked to in the file)
When we get Paypal Settlement reports we get information about the balance & balance movements for 21 settlement currencies. The one currency that appears in the report that we do not get balance information for is BRL
Instead what we see for BRL is that every time there is a BRL transaction there is an immediate transaction converting it to USD and these transactions make up part of the USD batch total. The transfers are directly tied to the initial transaction and a final USD amount can be calculated for the transaction and the fee (this is also what Gravy does in their reconciliation report.)
It looks like this
| Donation | 50 | 50 |
| Transfer to USD | -50 | 0 |
| Donation | 10 | 10 |
| Transfer to USD | -10 | 0 |
By looking at the corresponsing transfers into USD we calculate the final USD amount and add them to the USD batch
HOWEVER, there is a second type of currency conversion that looks the same but it affects a currency we get settlement information for and create a settlement batch for. For example on 2025/12/01 our TWD account had been reset to 0.
| Amount | Running balance | |
| Opening Balance | 0 | 0 |
| Donation | 156 | 156 |
| Fee | - 19 | 137 |
| Chargeback | -1111 | -974 |
| Chargeback fee | 50 | -924 |
| Transfer from USD Account | 92400 | 0 |
| Donation | 312 | 312 |
| Fee | -24 | 288 |
Settled to Bank 288
In this case the transfer amount has no bearing on the Chargeback that it is tied to & it has more in common with the T0201 transfers to the USD account that happen on the last day of each month. These are considered when calculating the batch total not the payouts.
3 Options
- Figure out why BRL is different, make it the same as the others and treat currency conversions like balance transfers in all cases
- Figure out which is which when processing the file & handle appropriately - we can use the settlement currencies from the footer to tell the difference
- Treat BRL as if it were like the others. The issue here is that we lose information. Because Paypal converts BRL to USD we know exactly the final exchange rate - as opposed to the one from Intacct. From an amount point of view this is not material but it might make it harder to validate & validation issues can be expected to cause work (it's easier to deal with things that add up than things that nearly do)
- it *might* be able to differentiate between the 2 types based on the reference - checking on this
I do need to check in with Julie on this as she had expected to see BRL in Intacct. Also, if we DID make BRL like all the others ... is it really the ONLY one that is different or just the only one that has happened in the past 4-5 months? (I've been processing PayPal files back to 1 Oct to flush out the anomalies)
Transaction currently messed up https://civicrm.wikimedia.org/civicrm/contact/view/contribution?reset=1&action=view&id=133996632
Batch paypal_20251202_USD