Overview
The Exchange Rate Update flow writes the actual exchange rate Stripe used to settle a payment onto the matching NetSuite transaction. When a Stripe charge or refund settles in a currency different from the presentment currency, Stripe records the rate on its balance transaction. NetSuite has no native way to retrieve it, so PayPack bridges the gap and removes manual FX reconciliation for multi-currency Stripe transactions.
Supported record types: Invoice, Credit Memo, Customer Payment, Customer Refund
Import method: Batch Import only. Unlike other Data Orchestration flows, there is no On-Demand or Real-Time option.
The flow is driven by a saved search, not a date. It processes every transaction that has a Stripe Balance Transaction ID and an empty exchange rate. Once a rate is written, the record drops out of the search, and any record that fails is retried on the next run.
Note: If Stripe returns no exchange rate (the presentment and settlement currencies are the same), PayPack writes 1 to the record so it is marked as processed.
Prerequisites
Before enabling the flow, confirm the following:
- The Stripe Balance Transaction ID and Stripe Exchange Rate custom body fields exist on the transaction types you want to update.
- S2NS-ExchangeRate has been added to the flow name list, so status log entries are created without errors.
Configuration Settings
All exchange rate settings are located under the Exchange Rates subtab within the Data Orchestration tab. Under this subtab, the Exchange Rate Update Settings field group contains all configuration fields.
Note: Click any field label in the Exchange Rate Update Settings field group to see a description of its purpose and usage.
Field Descriptions
- Enable Exchange Rates Update Flow: Check to enable updating NetSuite transactions with Stripe exchange rates. Uncheck to stop all updates.
- Saved Search for Exchange Rate Update (From Stripe): The NetSuite saved search that returns the transactions to be updated. The search must target records that have a Stripe Balance Transaction ID and an empty exchange rate.
“PayPack Data Orchestration Exchange Rate Update“ saved search is included in the bundle/SuiteApp. Make a copy of this saved search and add any additional criteria OR create your own saved search, ensuring that the sample criteria and results (below) are included.
Sample Saved Search Criteria
Saved Search Results (custom labels will need to match exactly)
How It Works
Each time the flow runs, PayPack does the following:
- Loads the configured saved search and reads each result row.
- Retrieves the matching balance transaction from Stripe using the stored Balance Transaction ID and reads its exchange rate.
- Identifies the NetSuite record type from the search result (Invoice, Credit Memo, Customer Payment, or Customer Refund).
- Writes the rate to the Stripe Exchange Rate field on the transaction. If Stripe returns no rate, 1 is written.
- Logs the result of every processed record, whether it succeeded or failed.
Setting the schedule and configuring multiple Stripe Accounts
The batch (Map/Reduce) script (PayPack_S2NS_ExchangeRate_Update_MR.js) runs against one Stripe account at a time. Single-account setups need no extra configuration. If you use multiple Stripe accounts:
- Create a separate script deployment for each Stripe account, if applicable.
- On each deployment, set the Stripe Account Id parameter to the internal ID of the relevant PayPack Stripe Account Configuration record.