Malaysia
Learn about the dLocal supported payment methods in Malaysia.
Market specifications
Take a look of all the payment methods available.
Country reference Cards supported APM supportedCards
Find all the information about the card supported capabilities.
Capabilities Process Card PaymentsAlternative Payments
Learn how to integrate cash, bank transfer or wallet payment.
7-eleven Maybank FPX Boost GrabPay Maybank QR Touch 'n Go Touch 'n Go Recurring Shopeepay DuitNowQR AtomeMarket specifications
Do you want to know more information about Malaysia's market? Go to the Accelerate Growth in Asia’s Leading eCommerce Hubs article.
Country reference
country code | currency code | amount decimals | document name | document format | document required? |
|---|---|---|---|---|---|
MY | MYR | 2 | NRIC | 12 digits | Yes |
Cards supported
payment_method_id | Brand ID | Name | payment_method_type | Details | Allowed Flows | Logo |
|---|---|---|---|---|---|---|
CARD | VI | Visa | CARD | Credit Card | DIRECT REDIRECT | |
CARD | VD | Visa Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | MC | Mastercard | CARD | Credit Card | DIRECT REDIRECT | |
CARD | MD | Mastercard Debit | CARD | Debit Card | DIRECT REDIRECT |
To offer all the card options that may be available in your integration, send the
payment_method_idasCARD.
Alternative Payment Method supported
payment_method_id | Name | payment_method_type | Details | Allowed Flows | Logo |
|---|---|---|---|---|---|
SL | 7-eleven | TICKET | Cash Payments | REDIRECT | ![]() |
FP | Maybank | BANK_TRANSFER | Bank Transfer | REDIRECT | ![]() |
IO | FPX | BANK_TRANSFER | Bank Transfer | REDIRECT | ![]() |
YB | Boost | WALLET | Wallet | DIRECT REDIRECT | ![]() |
GY | GrabPay | WALLET | Wallet | DIRECT REDIRECT | ![]() |
MB | Maybank QR | WALLET | Wallet | DIRECT REDIRECT | ![]() |
TG | Touch 'n Go | WALLET | Wallet | REDIRECT | ![]() |
TF | Touch 'n Go Recurring | TICKET | Wallet | DIRECT REDIRECT | ![]() |
SO | Shopeepay | WALLET | Wallet | REDIRECT | ![]() |
DQ | DuitNowQR | WALLET | Wallet | REDIRECT | ![]() |
TA | Atome | TICKET | Installment Plan | REDIRECT |
Cards
Capabilities
| Visa Credit | Visa Debit | Mastercard Credit | Mastercard Debit | |
|---|---|---|---|---|
| Minimum amount | 5 MYR | 5 MYR | 5 MYR | 5 MYR |
| Refunds | Yes | Yes | Yes | Yes |
| Recurring | Yes | Yes | Yes | Yes |
| Chargeback option | Yes | Yes | Yes | Yes |
| Chargeback Dispute option | Yes | Yes | Yes | Yes |
| Descriptor | Merchant name | Merchant name | Merchant name | Merchant name |
How to process Card Payments?
Learn how to process payments with credit and debit cards with dLocal in our Card Payments section.
Alternative Payment Method
7-eleven
7-Eleven is a Cash payment method from the biggest convenience store chain in Malaysia.
It allows customers to make online purchases and pay using cash. With stores around the country, it has a wide coverage, reaching hundreds of customers per day.
Capabilities
| 7-eleven | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 2 days |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | SL ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 20,
"currency": "MYR",
"country": "MY",
"payment_method_id": "SL",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-069886a5-bde5-hy653-bae9-cb33e54f2397",
"amount": 20,
"currency": "MYR",
"payment_method_id": "SL",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:04:26.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-3ab38f30-e279-h671-b47f-f31fa4ee0f99"
}Example ticket

Example 7-eleven built with the information in the example above.
Maybank
Bank transfers are the most-used e-commerce payment method in Malaysia, with half of the e-commerce payment market.
Capabilities
| Maybank | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 35 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic Maybank redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | FP ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "FP",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-c732e5b4-24b3-46a6-5433-cd86c70f6f35",
"amount": 50,
"currency": "MYR",
"payment_method_id": "FP",
"payment_method_type": "BANK_TRANSFER",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:29:03.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-872d8b37-la73-465a-a2cf-d3248c61c350"
}FPX
FPX is a reliable internet-based payment gateway that allows real-time payments for online purchases hassle-free or bill payments using your Savings / Current account or even Credit Card.
FPX is operated by Payments Network Malaysia Sdn Bhd (PayNet)
Capabilities
| FPX | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 35 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic FPX redirect flow. The specifics of the flow can change depending on the bank selected to complete the transaction.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | IO ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "IO",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-101d40ab-g5ty-4735-8c97-a21c9427db91",
"amount": 50,
"currency": "MYR",
"payment_method_id": "IO",
"payment_method_type": "BANK_TRANSFER",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:49:37.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-continue/M-723a51dd-901w-4522-8905-453eaad7149a"
}Boost
Wallets are very popular in Malaysia, which is leading its Southeast Asian neighboring countries in terms of the usage of digital wallets.
In terms of competition, among the top e-wallets are Boost, Touch 'n Go, Maybank QR, ShopeePay, and GrabPay. All these wallets are constantly rising in popularity.
Capabilities
| Boost | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
UX Flow
QR code flow

The screenshots illustrate a generic Boost redirect flow on a browser through QR code.
Payment in-app flow

The screenshots illustrate a generic Boost redirect flow on mobile choosing the Tap and Pay option to complete the payment in-app.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | YB ID of the selected payment method. | Yes |
payment_method_flow | String | DIRECT or REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "YB",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-b3721a18-7ff1-487c-fr43-d4637fc3a94d",
"amount": 50,
"currency": "MYR",
"payment_method_id": "YB",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:51:05.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-3ecd987f-7a7d-4e32-a0ba-5aebabba732d"
}GrabPay
Wallets are very popular in Malaysia, which is leading its Southeast Asian neighboring countries in terms of the usage of digital wallets.
In terms of competition, among the top e-wallets are Boost, Touch 'n Go, Maybank QR, ShopeePay, and GrabPay. All these wallets are constantly rising in popularity.
Capabilities
| GrabPay | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
UX Flow

The screenshots illustrate a generic GrabPay redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | GY ID of the selected payment method. | Yes |
payment_method_flow | String | DIRECT or REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "GY",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-ae9209f1-2f8e-4801-gfd3-4117cd888ce8",
"amount": 50,
"currency": "MYR",
"payment_method_id": "GY",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:53:00.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-10b9a53f-3421-4373-bcd6-fe65304ee445"
}Maybank QR
Wallets are very popular in Malaysia, which is leading its Southeast Asian neighboring countries in terms of the usage of digital wallets.
In terms of competition, among the top e-wallets are Boost, Touch 'n Go, Maybank QR, ShopeePay, and GrabPay. All these wallets are constantly rising in popularity.
Capabilities
| Maybank QR | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
UX Flow

The screenshots illustrate a generic Maybank QR Pay redirect flow through a QR code.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | MB ID of the selected payment method. | Yes |
payment_method_flow | String | DIRECT or REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "MB",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789876",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-f9c65093-yt65-4c1f-bb29-b2fdaec47ccb",
"amount": 50,
"currency": "MYR",
"payment_method_id": "MB",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-03-10T13:15:40.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-c9c43cac-e86b-4f31-6t65-57929d695b88"
}Touch 'n Go
Wallets are very popular in Malaysia, which is leading its Southeast Asian neighboring countries in terms of the usage of digital wallets.
In terms of competition, among the top e-wallets are Boost, Touch 'n Go, Maybank QR, ShopeePay, and GrabPay. All these wallets are constantly rising in popularity.
Capabilities
| Touch 'n Go | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow
QR code flow

The screenshots illustrate a generic Touch 'n Go redirect flow through a QR code available for web and desktop views.
Wallet flow

The screenshots illustrate a generic Touch 'n Go wallet redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | TG ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "TG",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}
{
"id": "R-4-4678d8f3-bc63-5rt4-bb68-72f3d52d7ce9",
"amount": 50,
"currency": "MYR",
"payment_method_id": "TG",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-01-30T15:56:10.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-c5731556-6554-408e-ad02-80d68d1c586c"
}Touch 'n Go Recurring
For recurring payments with Touch 'n GO, Customers only need to complete a verification once during the enrollment process, which grants the merchant authorization to execute subsequent payments on demand.
Capabilities
| Touch 'n Go | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 15 minutes |
| Notification delay | Immediate |
| Refunds | Yes. Full and partial. |
| Flow | Enrollment REDIRECTRecurring payment DIRECT |
One-time user enrollment
| Property | Type | Description | Mandatory? |
|---|---|---|---|
external_id | String | An identifier used by the merchant to identify the enrollment in their system. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
type | String | Possible options include:
| Yes |
payment_method_id | String | TF ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | No |
payer.email | String | Email of the payer. | No |
payer.phone | String | User's phone number. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external id of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a enrollment to the notification_url specified by the merchant. | Yes |
callback_url | String | The payer will be redirected to the merchant’s website after completing the enrollment via the callback_urlspecified by the merchant | Yes |
Examples
{
"external_id": "fwbExmQQ7",
"currency": "MYR",
"country": "MY",
"type": "ON_DEMAND",
"description": "Monthly subscription",
"payment_method_id": "TF",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"phone": "628432003239",
"email": "[email protected]"
},
"notification_url": "http://merchantsite.com/notifications",
"callback_url": "http://merchantsite.com/callback"
}{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "3a39633d-e6fc-4bc2-96d1-51613b13858a",
"description": "Monthly subscription",
"status": "PENDING",
"status_code": "100",
"status_details": "The enrollment is pending.",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/N-ec90b256-c2b7-4cd4-af36-265499ae3ca9",
"payment_method_id": "TF",
"payment_method_flow": "REDIRECT",
"payment_method_type": "TICKET"
}{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "fwbExmQQ7",
"currency": "MYR",
"country": "MY",
"type": "ON_DEMAND",
"payment_method_id": "TF",
"payment_method_flow": "REDIRECT",
"created_date": "2025-09-10T20:37:20.000+0000",
"status": "ACTIVE",
"status_detail": "The enrollment is active.",
"status_code": "200",
"notification_url": "http://merchantsite.com/notifications"
}Recurring payments
| Property | Type | Description | Mandatory? |
|---|---|---|---|
payment_method_flow | String | DIRECT | Yes |
enrollment.id | String | Enrollment id of the initial customer authorization. | Yes |
Examples
{
"external_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"amount": 15000,
"currency": "MYR",
"country": "MY",
"payment_method_id": "TF",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Jane Doe",
"phone": "628432003239",
"email": "[email protected]"
},
"enrollment": {
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b"
},
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}{
"id": "D-4-x1kj5e7i-hh7ver365l35h6-bg7h5snqee44",
"amount": 15000,
"currency": "MYR",
"payment_method_id": "TF",
"payment_method_type": "TICKET",
"payment_method_flow": "DIRECT",
"country": "MY",
"created_date": "2025-12-05T10:50:26.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}{
"id": "D-4-x1kj5e7i-hh7ver365l35h6-bg7h5snqee44",
"amount": 15000,
"status": "PAID",
"status_detail": "The payment is paid",
"status_code": "200",
"currency": "MYR",
"country": "MY",
"payment_method_id": "TF",
"payment_method_flow": "DIRECT",
"notification_url": "http://merchantsite.com/notifications",
"created_date": "2025-12-05T10:51:20.000+0000"
}Enrollment with an initial payment
To create an enrollment with an initial payment use the same request as in a Recurring Payment including an enrollment object in the request body and changing the payment_method_flow to REDIRECT.
| Property | Type | Description | Mandatory? |
|---|---|---|---|
enrollment.external_id | String | An identifier used by the merchant to identify the enrollment in their system. | Yes |
enrollment.type | String | ON_DEMAND: For future recurring payments initiated by the customer or merchant on demand, rather than on a fixed schedule. | Yes |
enrollment.notification_url | String | Notifications will be sent in every change of status of a enrollment to the enrollment.notification_url specified by the merchant. | Yes |
enrollment.callback_url | String | The payer will be redirected to the merchant’s website after completing the enrollment via the enrollment.callback_urlspecified by the merchant | Yes |
payment_method_flow | String | REDIRECT | Yes |
Examples
{
"enrollment": {
"external_id": "fwbExmQQ7",
"type": "ON_DEMAND",
"description": "Monthly subscription",
"notification_url": "http://www.merchantsite.com/notifications",
"callback_url": "http://merchantsite.com/enrollment_callback"
},
"external_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"amount": 15000,
"currency": "MYR",
"country": "MY",
"payment_method_id": "TF",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"phone": "628432003239",
"email": "[email protected]"
},
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}{
"enrollment": {
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "3a39633d-e6fc-4bc2-96d1-51613b13858a",
"description": "Monthly subscription",
"status": "PENDING",
"status_code": "100",
"status_details": "The enrollment is pending.",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/N-ec90b256-c2b7-4cd4-af36-265"
},
"id": "D-4-x1kj5e7i-hh7ver365l35h6-bg7h5snqee44",
"amount": 15000,
"currency": "MYR",
"payment_method_id": "TF",
"payment_method_type": "TICKET",
"payment_method_flow": "DIRECT",
"country": "MY",
"created_date": "2025-12-05T10:50:26.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "fwbExmQQ7",
"currency": "MYR",
"country": "MY",
"type": "ON_DEMAND",
"payment_method_id": "TF",
"payment_method_flow": "REDIRECT",
"created_date": "2025-09-10T20:37:20.000+0000",
"status": "ACTIVE",
"status_detail": "The enrollment is active.",
"status_code": "200",
"notification_url": "http://merchantsite.com/notifications"
}{
"id": "D-4-x1kj5e7i-hh7ver365l35h6-bg7h5snqee44",
"amount": 15000,
"status": "PAID",
"status_detail": "The payment is paid",
"status_code": "200",
"currency": "MYR",
"country": "MY",
"payment_method_id": "TF",
"payment_method_flow": "DIRECT",
"notification_url": "http://merchantsite.com/notifications",
"created_date": "2025-12-05T10:51:20.000+0000"
}Shopeepay
Wallets are very popular in Malaysia, which is leading its Southeast Asian neighboring countries in terms of the usage of digital wallets.
In terms of competition, among the top e-wallets are Boost, Touch 'n Go, Maybank QR, ShopeePay, and GrabPay. All these wallets are constantly rising in popularity.
Capabilities
| Shopeepay | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 90 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic ShopeePay redirect flow through a QR code.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | SO ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "SO",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-5461d8a7-f565-4328-6ytf-95e541640584",
"amount": 50,
"currency": "MYR",
"payment_method_id": "SO",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-02-17T18:09:42.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0w",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-862004ff-6013-thy6-8432-e30b2f388beb"
}
DuitNowQR
An interoperable QR standard that allows Malaysians to make payments and receive funds from any participating Bank and eWallet with just one QR code.
Capabilities
| DuitNowQR | |
|---|---|
| Min. amount | 5 MYR |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
UX Flow

The screenshots illustrate a generic DuitNowQR redirect flow through a QR code. The specifics of the flow can change depending on the payment method selected to complete the transaction.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | DQ ID of the selected payment method. | Yes |
payment_method_flow | String | DIRECT or REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "DQ",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+006286123456",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}{
"id": "R-4-d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"amount": 50,
"currency": "MYR",
"payment_method_id": "DQ",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2023-02-17T17:54:45.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0w",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-c650346a-c177-4d72-45tr-f4b98f6a2185"
}Direct
DuitNowQR can also be processed as a DIRECT payment method flow, returning the QR payload directly in the payment response instead of a redirect URL.
{
"amount": 50,
"currency": "MYR",
"country": "MY",
"payment_method_id": "DQ",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+006286123456",
"document": "123456789012",
"address": {
"country": "MY",
"state": "Malacca",
"city": "Malacca",
"zip_code": "8858",
"street": "Main St.",
"number": "540"
}
},
"order_id": "QR-DIRECT-EXAMPLE",
"description": "Tshirt",
"notification_url": "https://merchant.example.com/notifications"
}{
"id": "D-4-d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"amount": 50,
"currency": "MYR",
"payment_method_id": "DQ",
"payment_method_type": "TICKET",
"payment_method_flow": "DIRECT",
"country": "MY",
"bank_transfer": {},
"ticket": {
"type": "CUSTOM",
"expiration_date": "2023-02-17T18:24:45.000+0000",
"number": "DQ2302171754450001",
"id": "d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"barcode": "00020101021226370016A00000067701011201150107536000315080214KB0000016689500320API1675101655190221631690016A00000067701011301030040214KB0000016689500420API1675101655190221653034585405050.005802MY5907D Local6011Kuala Lumpur6304ABCD",
"provider_name": "provider-example",
"provider_logo": "https://static.dlocal.com/images/providers/DQ.png",
"provider_url": "https://provider-example.com/app/pay?ref=example",
"image_url": "https://pay.dlocal.com/gmf-apm/payments/example",
"amount": 50,
"currency": "MYR"
},
"created_date": "2023-02-17T17:54:45.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "QR-DIRECT-EXAMPLE",
"notification_url": "https://merchant.example.com/notifications"
}ticket.provider_url may be a payment-app deep link. Treat it as an optional app-entry point that can be offered alongside the QR code, not as a replacement for the ticket.barcode payload — the payer can always complete the payment by scanning the QR code even if the deep link is not used.
Atome
Atome’s BNPL in Malaysia allows consumers to make purchases and pay them in installments. It offers flexible payment plans, often interest-free if paid on time, and is designed to cater to local consumers and merchants.
Capabilities
| Atome | |
|---|---|
| Min. amount | 10 MYR |
| Max. expiration time supported | 12 hours |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic Atome redirect flow. The specifics of the flow can change depending on the payment method selected to complete the transaction.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged | Yes |
currency | String | MYRTransaction currency in ISO 4217. | Yes |
country | String | MY Transaction country in ISO 3166. | Yes |
payment_method_id | String | TA ID of the selected payment method. | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.phone | String | Phone number of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
description | String | Description of the items purchased. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
callback_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 150,
"currency": "MYR",
"country": "MY",
"payment_method_id": "TA",
"payment_method_flow": "REDIRECT",
"payer": {
"phone": "+80000000011"
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "https://merchantsite.com/notifications",
"callback_url": "https://merchantsite.com/callback"
}{
"id": "R-4-d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"amount": 150,
"currency": "MYR",
"payment_method_id": "TA",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "MY",
"created_date": "2025-11-12T12:34:56.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0w",
"description": "Tshirt",
"notification_url": "https://merchantsite.com/notifications",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments/E-4-32e1218f-b6ec-3f21-13d5-50v12ere2ca4"
}{
"id": "R-4-d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"amount": 150,
"status": "PAID",
"status_detail": "The payment was paid.",
"status_code": "200",
"currency": "MYR",
"country": "MY",
"payment_method_id": "TA",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012"
},
"order_id": "your-order-id-123",
"description": "Tshirt",
"notification_url": "https://merchantsite.com/notifications",
"created_date": "2025-11-12T12:34:56.000+0000"
}Updated 11 days ago









