Credit & Debit Cards
Accept Visa, Mastercard, and JCB credit and debit cards globally with built-in fraud protection and 3D Secure authentication.
Overviewโ
Payment method features, limits, user statistics, and fees are subject to change. Information is based on publicly available sources and may not reflect your specific merchant agreement. Always refer to official Omise documentation and your merchant dashboard for current, binding information.
Credit and debit card payments are the most widely used online payment method globally. Omise supports all major card networks with seamless checkout experiences.
Supported Card Networks:
- โ Visa - Credit and debit cards
- โ Mastercard - Credit and debit cards
- โ JCB - Credit cards (popular in Japan)
- โ Diners Club (select regions)
- โ Discover (select regions)
Key Features:
- ๐ Global acceptance - Works worldwide
- ๐ 3D Secure - Enhanced security with SCA
- ๐ณ Save cards - Tokenization for recurring payments
- ๐ก๏ธ Fraud protection - Built-in fraud detection
- ๐ฑ Mobile optimized - Works on all devices
- ๐ Refund support - Full and partial refunds
Supported Regionsโ
Cards work globally, with specific features by region:
| Feature | Thailand | Singapore | Malaysia | Japan | Global |
|---|---|---|---|---|---|
| Visa | โ | โ | โ | โ | โ |
| Mastercard | โ | โ | โ | โ | โ |
| JCB | โ | โ | โ | โ | โ |
| 3D Secure | โ | โ | โ | โ | โ |
| Save Cards | โ | โ | โ | โ | โ |
Quick Startโ
For detailed card payment implementation, see:
- Charging Cards - Complete guide
- Collecting Cards - Secure card collection
- 3D Secure - Strong Customer Authentication
- Saved Cards - Card tokenization
Implementationโ
Basic Card Chargeโ
- Node.js
- PHP
const omise = require('omise')({
publicKey: 'pkey_test_YOUR_PUBLIC_KEY',
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
// Step 1: Create card token (client-side with Omise.js)
// This is done securely in the browser
// Step 2: Create charge (server-side)
const charge = await omise.charges.create({
amount: 100000, // Amount in smallest unit
currency: 'THB',
card: 'tokn_test_...', // Token from step 1
description: 'Order #12345',
return_uri: 'https://yourdomain.com/payment/callback'
});
if (charge.authorize_uri) {
// 3D Secure required - redirect customer
res.redirect(charge.authorize_uri);
} else if (charge.status === 'successful') {
// Payment successful
res.redirect('/success');
}
<?php
$charge = OmiseCharge::create(array(
'amount' => 100000,
'currency' => 'THB',
'card' => 'tokn_test_...',
'description' => 'Order #12345',
'return_uri' => 'https://yourdomain.com/payment/callback'
));
if ($charge['authorize_uri']) {
header('Location: ' . $charge['authorize_uri']);
} else if ($charge['status'] === 'successful') {
header('Location: /success');
}
?>
Transaction Limitsโ
Typical limits (varies by merchant agreement):
| Transaction Type | Minimum | Maximum |
|---|---|---|
| Single Transaction | $0.50 USD | $50,000 USD |
| Per Card Per Day | - | $100,000 USD |
| Monthly Volume | - | Varies by merchant |
Featuresโ
3D Secure (SCA)โ
All card payments support 3D Secure 2.0 for Strong Customer Authentication:
- Visa: Visa Secure
- Mastercard: Mastercard Identity Check
- JCB: J/Secure
See 3D Secure Guide
Card Tokenizationโ
Save cards securely for:
- Recurring payments
- Subscription billing
- One-click checkout
Fraud Protectionโ
Built-in fraud detection:
- Velocity checks
- IP geolocation
- Card BIN validation
- Suspicious pattern detection
See Fraud Protection
Refund Supportโ
Full and partial refunds supported within 180 days:
// Full refund
await omise.charges.refund('chrg_test_...', {
amount: 100000
});
// Partial refund
await omise.charges.refund('chrg_test_...', {
amount: 50000
});
Best Practicesโ
- Always use HTTPS - Required for PCI compliance
- Use Omise.js - Never send card data to your server
- Enable 3D Secure - Reduces fraud and liability
- Validate client-side - Check card format before submission
- Handle declines gracefully - Show clear error messages
- Save cards securely - Use tokenization, never store raw card data
FAQโ
Which card types are supported?
Visa, Mastercard, and JCB credit and debit cards globally. Diners Club and Discover in select regions.
Is 3D Secure mandatory?
3D Secure is required for European cards (SCA regulation) and highly recommended for all transactions to reduce fraud.
Can I save cards for future payments?
Yes, use card tokenization to securely save cards for recurring payments and subscriptions.
How long can I refund card payments?
Full and partial refunds are supported within 180 days of the original transaction.
Related Resourcesโ
- Charging Cards - Full implementation guide
- Collecting Cards - Secure collection
- 3D Secure - Authentication setup
- Saved Cards - Tokenization
- Apple Pay - Mobile wallet alternative
- Google Pay - Mobile wallet alternative
Next Stepsโ
- Review Charging Cards guide
- Integrate Omise.js for secure card collection
- Implement 3D Secure authentication
- Test with test cards
- Set up fraud protection
- Go live