Pay Locally, Anywhere
Support Malaysian businesses and creators with local payment methods. Lower fees, instant transfers, and familiar payment options.
DuitNow
Touch 'n Go eWallet
Visa / MastercardWhy Pay Locally?
Malaysian payment methods offer real advantages over international processors
Lower Fees
Local payment methods often have lower transaction fees than international processors
Instant Transfers
DuitNow payments are instant - no waiting for funds to clear
Support Local
Help Malaysian creators and businesses thrive with direct payments
Mobile-First
Optimized for mobile with app deep linking on iOS and Android
How It Works
Simple steps to make a payment
Choose Payment Method
Select from DuitNow Transfer, DuitNow QR, Touch 'n Go eWallet, or Credit/Debit Card
Follow Instructions
For DuitNow, copy the account details or scan the QR code. For eWallet, tap to open the app directly
Complete Payment
Confirm the payment in your banking app or eWallet. Transfers are instant with DuitNow!
Supported Banking Apps
DuitNow QR works with all major Malaysian banking apps including Maybank, CIMB, Public Bank, RHB, Hong Leong, AmBank, Bank Islam, and many more. International visitors can also pay using apps from Singapore, Thailand, Indonesia, China, and other countries.












+ moreSupported Payment Methods
Everything Malaysians use to pay online

DuitNow Transfer & QR
Instant bank transfers and QR payments supported by all Malaysian banks

Touch 'n Go eWallet
Deep linking to TNG app for seamless mobile payments

Visa & Mastercard
International card payments via Stripe integration

International Support
Payment apps from China, Indonesia, Singapore, Thailand & more
For Developers
Open source React component library - easy to integrate into your projects
Available Components
Ready-to-use React components
-
PaymentButton- Trigger payment modal -
PaymentModal- Full payment flow -
DuitNowTransfer- Bank transfer UI -
DuitNowQR- QR code display -
TNGEWallet- TNG deep linking -
StripePayment- Card payments
Key Features
Built for production use
- TypeScript with full type definitions
- Mobile-friendly with app deep linking
- Feature flags for payment methods
- Stripe integration for cards
- Customizable styling
- International payment apps support
Basic Usage
import { PaymentButton, PaymentModal } from 'malaysian-payment-gateway';
function App() {
const [showModal, setShowModal] = useState(false);
return (
<div>
<PaymentButton onClick={() => setShowModal(true)} />
{showModal && (
<PaymentModal onClose={() => setShowModal(false)} />
)}
</div>
);
}How It Works (Technical)
DuitNow & eWallet
Uses deep linking to open banking apps directly on mobile devices. On desktop, displays QR codes or account details for manual transfer. Handles iOS and Android URL schemes automatically.
Stripe Integration
Two-step flow: amount selection → payment processing. Requires backend endpoints for creating PaymentIntents. Supports Apple Pay/Google Pay via Payment Request API.
Quick Install:
git clone https://github.com/hithereiamaliff/malaysianpaymentgateway.gitSee It In Action
The payment gateway is live on my personal site. Try it out or support my work - every contribution helps me build more useful tools like this!
Support My Work
If you find this payment gateway useful, consider supporting my work. You can donate one-off, subscribe to the Malaysia Transit API, or join my upcoming newsletter.
Support My Work