Bank redirects

FPX payments

Learn about FPX, a common payment method in Malaysia.

Financial Process Exchange (FPX) is a Malaysia-based payment method that allows customers to complete transactions online using their bank credentials. Bank Negara Malaysia (BNM), the Central Bank of Malaysia, and eleven other major Malaysian financial institutions are members of the PayNet Group, which owns and operates FPX. It is one of the most popular online payment methods in Malaysia, with nearly 90 million transactions in 2018 according to BNM.

In order to pay with FPX, customers are redirected to their online banking environment where they have to perform two-step authorization. The exact customer experience will vary depending on their bank. The FPX payment flow is well understood and intuitive to Malaysian customers.

Customer locations
Presentment currency
Payment confirmation
Payment method family
Authenticated bank debit
Recurring payments
Payout timing
5 business days
Connect support
Dispute support
Refunds / Partial refunds
Stripe accounts in the following countries can accept FPX payments with local currency settlement.

Payment flow

1. Customer selects FPX at checkout

2. Chooses bank and gets redirected

3. Customer enters account credentials

4. Customer completes authorization process

5. Customer gets notification that payment is complete

(Optional) Customer returns back to business’s site for payment confirmation

Getting started

Check out the FPX sample, view the sample code on GitHub, or get started with accepting FPX payments.

Disputed payments

The risk of fraud or unrecognized payments is low because the customer must authenticate the payment with their bank. As a result, you won’t have disputes that turn into chargebacks, with funds withdrawn from your Stripe account.


FPX payments can be refunded up to 60 days after the original payment. Refunds for FPX payments are asynchronous and take approximately 1 week to complete. We will notify you of the final refund status using the charge.refund.updated webhook event. When a refund succeeds, the Refund object’s status transitions to succeeded. A refund can fail if the customer’s bank is unable to process it correctly (e.g. the bank account is closed). In the rare instance that a refund fails, the Refund object’s status will transition to failed and we will return the amount to your Stripe balance. You will then need to arrange an alternative way of providing your customer with a refund.