Skip to main content

What is USD Wrapping?

USD Wrapping is HaiPay’s cross-currency payment capability: merchants price and settle in USD, while end users pay in their local currency (e.g., IDR, MYR, THB).
Two core concepts:
  • Presentment Currency: The currency the end user sees and pays in at checkout. With USD Wrapping, the presentment currency is USD.
  • Settlement Currency: The currency the merchant actually receives in their account. With USD Wrapping, the settlement currency is also USD.
The payment is processed through local payment rails behind the scenes, but both the merchant and the end user see the transaction denominated in USD throughout.

Business value

  • One-stop USD collection and withdrawal for merchants — no need to hold accounts in multiple local currencies
  • End users see USD pricing — lowers the barrier for cross-border shoppers and eliminates mental currency conversion

How it works

Supported regions and payment methods

USD Wrapping covers multiple regions, each providing corresponding USD bank codes. Below is a reference list of supported regions (refer to each region’s documentation for the definitive list):
For the full list, refer to each region’s payment method documentation.

Collection

Flow overview

Integration steps

Step 1: Obtain the appId for USD

In the merchant portal under Business Management → Payment Product Configuration, obtain the appId and key pair for USD.
The USD appId is separate from local currency appIds — do not mix them. Using the wrong appId will return error code 4011.

Step 2: Select the USD payment method for the target region

Based on the end user’s region, select the corresponding USD payment code (inBankCode). USD payment codes are typically formed by appending a _USD suffix to the local currency code (e.g., ID_DANA_USD, TH_TM_USD). Some bank codes do not include a region prefix (e.g., TNG_USD, PAYNOW_USD):

Step 3: Call the collection API

Use the USD endpoint /usd/collect/apply to create a collection order. Pass the amount in USD.

Request example

URL: POST /usd/collect/apply
Key fields:

Response example

Exchange rate fields in async notifications

When a collection involves USD Wrapping currency conversion, the async notification (webhook) will include the following additional fields:
By comparing amount (USD amount) with originalAmount (local currency amount), merchants can calculate the effective exchange rate applied to the transaction.

FAQ

Each region’s payment method documentation lists the USD payment codes (typically with a _USD suffix). You can also call the Get Merchant Payment Configuration API to query the payment methods currently enabled for your account.
The exchange rate is determined by HaiPay at the time of order creation. Merchants can preview the exchange rate before placing an order via the /common/quote/v1/exchange-rate API, but the actual rate is the one applied at order creation time.
USD Wrapping covers a broader range of payment methods for collections. Payout support for USD Wrapping is more limited — refer to each region’s documentation for specifics.
Local currency amount paid by the end user = USD amount submitted by the merchant × exchange rate at order creation time. Merchants can retrieve the actual local currency amount paid via the originalAmount field in the async notification.
Yes. After enabling USD Wrapping, use the /global/cashier/collect/apply API and set the currency parameter to USD.
Last modified on July 30, 2026