This article completes: Allow foreign customers to pay with PayPal or international credit cards at checkout.
Both accept payments in New Taiwan Dollars (TWD), and PayPal/Stripe will convert the currency based on the customer's currency at the time of payment. For domestic credit cards, ATM, and convenience store codes, see How to Set Up Payment and Invoices; for overseas shipping costs, see How to Set Up International Shipping Rates.
Choose one first
| PayPal | Stripe (International Credit Card) | |
|---|---|---|
| Who Can Apply | Both Taiwanese companies and individuals can apply for a PayPal merchant account. | Only companies registered in Stripe-supported countries (e.g., USA, Japan, Singapore, Hong Kong). Taiwanese companies cannot apply at this time. |
| How Customers Pay | Using PayPal account balance or linked credit card. | Directly enter Visa, Mastercard, AMEX, etc., without needing an account. |
| Checkout Page Display | PayPal | International Credit Card |
If only a Taiwanese company, please use PayPal or domestic payment methods (Green World, Neweb, PAYUNi) for credit cards. Both can be enabled simultaneously, and each will appear as an option on the checkout page.
Prerequisites
- An e-commerce online purchase has been set up, and the platform has enabled international online payments. If not enabled, the PayPal and Stripe tabs in the payment section will display "Not enabled by platform"; please contact the platform.
- Only the site owner can edit fields like Key and Secret. If you cannot see the fields or save, please use the site owner's account.
- A PayPal merchant account or Stripe account has been applied for. Do not paste the keys into chat software or other public places.
Path
E-commerce → Store Settings → Payment tab (/admin/commerce/store).
Scroll down to find the PayPal (International Payment) or Stripe (International Credit Card) card, and save after setting.
Set up PayPal
- Turn on the PayPal (International Payment) switch.
- Select Environment as Sandbox (Testing) first.
- Go to PayPal Developer Dashboard → Apps & Credentials to create a REST App, and paste the Client ID and Client Secret into the corresponding fields. The credentials for sandbox and production environments are different.
- Click Save at the bottom. The Webhook URL will appear on the card.
- Return to the PayPal App's Webhooks, add this URL, and subscribe to the events listed on the card (Checkout order approved, Payment capture completed/pending/denied/declined/refunded).
- Paste the Webhook ID displayed by PayPal back into the card, and save it again.
The checkout page will only display PayPal after filling in Client ID, Client Secret, and Webhook ID.
Set up Stripe
- Turn on the Stripe (International Credit Card) switch. The yellow prompt at the top of the card will remind you of the application conditions again.
- Select Sandbox (Testing) for the Environment first.
- Go to Stripe Dashboard → Developers → API keys to copy the Secret key, and paste it into Secret Key. Test environment keys start with
sk_test_, while production environment keys start withsk_live_; you can also use a Restricted key with limited permissions (starting withrk_). - Click Save at the bottom. The Webhook URL will appear on the card.
- Go to Stripe Dashboard → Developers → Webhooks to add an endpoint, paste this Webhook URL, and check the four events listed on the card:
checkout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,refund.created. - On that endpoint page, click Reveal to obtain the Signing secret (starting with
whsec_), paste it into Webhook Signing Secret, and save again.
The Secret Key and Webhook Signing Secret must be filled in correctly, and the keys must match the environment for the 'International Credit Card' to appear on the checkout page.
The system will check when saving:
- If the keys and environment do not match (for example, if the environment is set to live but
sk_test_is pasted), saving will not be possible. If you want to change the environment to live later, please also switch to thesk_live_key. - Saving will not be possible if the Signing secret does not start with
whsec_.
How customers can pay.
- Customers select PayPal or International Credit Card on the checkout page and submit the order.
- The page will redirect to the payment page of PayPal or Stripe.
- After payment is completed, return to the order completion page, and the order status will change to paid.
If customers click back or close the window on the payment page, no charges will be made, and the order will remain pending payment.
Testing (must do)
- Both environments should first use Sandbox.
- PayPal uses a PayPal sandbox buyer account for payment; Stripe uses the test card numbers provided in the Stripe documentation for payment.
- In the backend, Orders should change to paid, and the event log should show payment success.
- After confirming everything is correct, change the environment to Production and replace it with the official certificate (the Stripe Webhook must also be added again in the production environment, as the Signing secret will be different), then proceed with a small real order verification.
Refund
Go to Orders to open the order, and use the refund function. You can refund in full or partially, and also in multiple transactions, totaling no more than the payment amount. Refunds will be sent directly to PayPal/Stripe; credit card refunds usually take a few business days to reflect back to the customer's account.
When you process a refund yourself in the PayPal or Stripe backend, the order event record will have an additional entry for "Payment Backend Refund Notification" for easier reconciliation.
Unsupported situations
- POS Cash Register payment links will not use PayPal or Stripe.
- When the shopping cart contains frozen or refrigerated items, payment can only be made using PAYUNi, and PayPal or international credit cards will not appear.
Common issues
| Status | What to do |
|---|---|
| Checkout page does not have PayPal | The switch is off, not saved, or Client ID / Client Secret / Webhook ID is missing. |
| Checkout page does not have international credit cards | The switch is off, not saved, Signing secret is not filled, or the key and environment do not match. |
| Error "Stripe Secret Key does not match the environment" when saving | Use sk_test_ / rk_test_ for the test environment, and sk_live_ / rk_live_ for the live environment. |
| Order remains pending payment after payment | Webhook not added, wrong URL pasted, or Webhook created in the test environment is used for live payments. |
| Taiwanese company wants to apply for Stripe | Currently unable to apply. Please use PayPal or domestic credit card payment. |