Accept Payments
Learn how to accept payments for your business. Whether you're building a website, mobile app, or subscription service, we have you covered.
Payment Typesโ
๐ณ Online Paymentsโ
Accept payments on your website with credit cards, digital wallets, and alternative payment methods.
Best for: E-commerce sites, SaaS products, service businesses
Features:
- Credit and debit cards (Visa, Mastercard, JCB, Amex)
- Digital wallets (TrueMoney, GrabPay, Touch 'n Go, etc.)
- Bank transfers and QR payments
- 3D Secure authentication
- Save cards for future use
Get Started with Online Payments
Learn how to accept card payments, implement 3D Secure, and save cards for returning customers.
View Guide โ๐ฑ Mobile Paymentsโ
Native payment integration for iOS, Android, Flutter, and React Native apps.
Best for: Mobile apps, in-app purchases, mobile commerce
Features:
- Native UI components
- Biometric authentication
- Touch ID / Face ID support
- Deep linking
- Optimized for mobile UX
Get Started with Mobile Payments
Integrate payments into your mobile app with our native SDKs.
View Guide โ๐ Recurring Paymentsโ
Set up subscription billing and recurring charges for your customers.
Best for: Subscriptions, membership sites, SaaS, recurring services
Features:
- Save customer payment methods
- Automated recurring charges
- Flexible scheduling
- Subscription management
- Retry logic for failed payments
Get Started with Recurring Payments
Learn how to save cards and charge customers on a recurring basis.
View Guide โQuick Comparisonโ
| Feature | Online | Mobile | Recurring |
|---|---|---|---|
| Use Case | Websites | Mobile Apps | Subscriptions |
| Integration | Omise.js or API | Native SDKs | API + Customers |
| Payment Methods | All methods | All methods | Cards primarily |
| User Experience | Browser-based | Native UI | Automated |
| Time to Integrate | 2-4 hours | 1-2 days | 1-2 days |
Common Payment Scenariosโ
One-Time Purchaseโ
Scenario: Customer buys a product once
Recommended Flow:
- Customer enters card details
- Create token (client-side)
- Create charge (server-side)
- Show confirmation
Best Method: Omise.js for web, SDKs for mobile
Subscription Serviceโ
Scenario: Monthly/yearly recurring payments
Recommended Flow:
- Customer enters card details
- Create token
- Create customer with card
- Charge customer monthly
Best Method: Customer API + Schedules
Pre-Authorizationโ
Scenario: Reserve funds now, charge later (hotels, rentals)
Recommended Flow:
- Create charge with
capture: false - Hold authorized amount (up to 7 days)
- Capture when ready to charge
- Void to release hold
Best Method: Pre-authorization API
Multi-Currency Salesโ
Scenario: Accept payments in different currencies
Recommended Flow:
- Detect customer currency/region
- Display prices in local currency
- Create charge in that currency
- Settle to your base currency
Best Method: Multi-currency API
Payment Flow Overviewโ
Standard Card Paymentโ
Alternative Payment Methodsโ
Choose Your Integration Methodโ
By Technical Levelโ
No Code โ Use E-Commerce Plugins
Low Code โ Use Omise.js
Full Control โ Use REST API
By Platformโ
Website โ Online Payments
iOS App โ iOS SDK
Android App โ Android SDK
Flutter โ Flutter SDK
React Native โ React Native Guide
Not sure? Take our Integration Quiz โ
Payment Methodsโ
Omise supports 40+ payment methods across Southeast Asia and Japan:
Cardsโ
- Credit/Debit cards (Visa, Mastercard, JCB, Amex)
- Apple Pay
- Google Pay
Digital Walletsโ
- TrueMoney, GrabPay, Touch 'n Go
- Rabbit LINE Pay, ShopeePay
- Alipay, WeChat Pay, PayPay
- And more...
Bankingโ
- Mobile banking (Thai banks, Malaysia banks)
- Internet banking
- Direct debit
QR Paymentsโ
- PromptPay (Thailand)
- PayNow (Singapore)
- DuitNow QR (Malaysia)
Buy Now Pay Laterโ
- Installments
- Atome
Security & Complianceโ
PCI Complianceโ
When you use Omise properly, your PCI compliance burden is minimized:
โ Omise.js / SDKs: Card data never touches your server โ Tokenization: Sensitive data converted to tokens โ HTTPS: All communications encrypted โ Vault Isolation: Card data stays in certified vault
3D Secureโ
Add an extra layer of security with 3D Secure authentication:
- Reduces fraud
- Shifts liability to issuer
- Required for some card types
- Supports both 3DS1 and 3DS2
Advanced Featuresโ
Save Cards for Future Useโ
Store customer payment methods securely:
// Create customer with card
const customer = await omise.customers.create({
email: 'customer@example.com',
card: token
});
// Charge later without new card entry
await omise.charges.create({
amount: 100000,
currency: 'thb',
customer: customer.id
});
Pre-Authorization & Captureโ
Reserve funds now, capture later:
// Authorize only (don't capture)
const charge = await omise.charges.create({
amount: 100000,
currency: 'thb',
card: token,
capture: false
});
// Capture later (within 7 days)
await omise.charges.capture(charge.id);
Multi-Currency Supportโ
Accept payments in multiple currencies:
- Charge in customer's local currency
- Settle to your base currency
- Automatic currency conversion
- Transparent exchange rates
Learn about Multi-Currency โ
Testing Your Integrationโ
Before going live, thoroughly test your payment integration:
Test Cardsโ
Use these test card numbers:
| Card Number | Brand | Result |
|---|---|---|
4242 4242 4242 4242 | Visa | Success |
5555 5555 5555 4444 | Mastercard | Success |
4000 0000 0000 0002 | Visa | Insufficient funds |
Testing Checklistโ
- Successful payments
- Declined payments
- Network errors
- Refunds
- Webhooks
- 3D Secure (if enabled)
- All payment methods you support
Common Questionsโ
Which payment methods should I accept?
It depends on your target market:
Thailand: Credit cards + PromptPay + TrueMoney + Mobile banking Japan: Credit cards + Konbini + Pay-easy + PayPay Singapore: Credit cards + PayNow + GrabPay Malaysia: Credit cards + FPX + Touch 'n Go
Do I need to save cards for recurring payments?
Yes! For recurring payments, you need to:
- Create a Customer object
- Attach a card to the customer
- Charge the customer (not the token) for each billing cycle
Tokens are single-use only. Customer objects let you charge repeatedly.
How do I handle failed payments?
Failed payments return error codes explaining why:
insufficient_fund- Not enough balancestolen_or_lost_card- Card reported stolenpayment_rejected- Issuer declined
Show clear error messages to customers and let them retry with a different payment method.
Can I charge customers without their card details?
Yes, if you've saved their card previously:
- Customer provides card once
- You create a Customer object and save the card
- For future payments, charge the customer ID
- No need to re-enter card details
This is essential for subscriptions and recurring billing.
What's the difference between authorization and capture?
- Authorization: Reserve funds on the card (hold)
- Capture: Actually transfer the funds
Use authorization (don't capture) when:
- You need to verify availability before shipping
- Running a hotel (charge at checkout)
- Custom shipping calculations needed
You can authorize now and capture up to 7 days later.
How do I accept international payments?
Omise supports multi-currency payments:
- Create charges in the customer's currency (USD, EUR, etc.)
- Funds settle to your base currency automatically
- Exchange rate applied at time of charge
- Show prices in customer's local currency for better conversion
Next Stepsโ
Need help choosing? Check our Integration Path Guide or contact support@omise.co.