Business scenario
Each mch_id (an institution's merchant ID or direct-connected merchant ID) has two available fund pools: CNY pool and settlement currency pool. Users of WeChat Cross-Border Pay are mainly Chinese users with a Chinese Mainland ID card, so transaction funds on the "T" day are stored as CNY in the CNY pool.
On the "T+1" day, all funds in the CNY pool will be exchanged to foreign currency funds for settlement and are stored in the settlement currency pool. This operation will be performed every day and is not affected by the total transaction amount on the "T" day. Once the total funds in the settlement currency pool reaches up to 800 USD, WeChat Pay will initiate a payment to the recipient account of the institution or direct-connected merchant.
As refund requires CNY, only funds in the CNY pool can be used for the refund. Therefore, a refund can be initiated only if the institution or direct-connected merchant has new transactions every day.
Solution
If a refund request returns with NOT ENOUGH, it means that there’s insufficient balance in the current account. In this case, a retry is recommended after a period of time. The retry interval needs to be determined based on the daily transaction amount and current refund amount.
For the institution, the API will be provided for a sub-merchant after secondary encapsulation, so the retry logic is recommended to be encapsulated on the institution layer. In this case, after the sub-merchant initiates a refund request, the institution will perform retries.
Business scenario
WeChat refund results are synced in an async manner. Here we provide two APIs: Submit Refund API and Query Refund API. The result returned by the Submit Refund API only indicates whether the refund request has been accepted. Since the refund process depends on the paying bank, the final refund result must be confirmed via the Query Refund API.
Solution
After a refund request is submitted, the institution/merchant needs to query the refund result in a round-robin manner within a period of time. Refer to the following refund processing rules for details:
If the current order is paid with WeChat Balance or Mini Fund, the refund will be processed within 20 minutes, usually 1 minute.
If the current order is paid using a linked bank card, the refund will be processed within 5 business days. For general banks, the refund can be processed on the same day; while for some local banks, it may take up to 5 business days to process the refund request.
The intuition/merchant is advised to set the period of time for querying the refund result to 1 minute, 20 minutes, 1 hour, 2 hours, and 24 hours, until the fifth business day. Generally, query within 24 hours can cover 99% of refund requests.
Note: For POS terminals and online apps with frontend display, it is advised that the business acceptance result be synced directly to the frontend after a refund is initiated. Especially for offline payment scenarios, it is nearly impossible for users to wait for the final refund result while in store. In this case, it is advised that the users be notified of the acceptance result and have them wait to receive the refund result delivered by WeChat Pay later.
Business scenario
amount, and order amount to ensure that the total refund amount does not exceed the transaction amount. In partial refund scenarios, the institution/merchant is not advised to change the refund order number for a retry when the refund acceptance result is unclear.
Solution
WeChat Pay will consider different refund order numbers as different refund requests, resulting in duplicate refund operations for the same transaction. In this case, if an unclear refund result is received, use the original refund order number to try again. DO NOT change the order number.