Philippines
Learn about the dLocal supported payment methods in Philippines.
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.
GCash GCash Recurring GrabPay Maya QR Ph Direct Debit Recurring Payments Static Virtual Account ShopeepayMarket specifications
Do you want to know more information about the Philippines' 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? |
|---|---|---|---|---|---|
PH | PHP | 2 | PSN | 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 | Credit Card | DIRECT REDIRECT | |
CARD | MC | Mastercard | CARD | Credit Card | DIRECT REDIRECT | |
CARD | MD | Mastercard Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | AE | American Express | CARD | Credit Card | DIRECT REDIRECT | |
CARD | JC | JCB | CARD | Credit Card | DIRECT REDIRECT | <img src="https://static.dlocal.com/images/providers/checkout/JC.svg" width="40px"> |
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 |
|---|---|---|---|---|---|
GC | GCash | TICKET | Wallet | REDIRECT | ![]() |
RG | GCash Recurring | WALLET | Wallet | REDIRECT | ![]() |
GY | GrabPay | TICKET | Wallet | REDIRECT | ![]() |
PM | Maya | TICKET | Wallet | REDIRECT | ![]() |
QR | QR Ph | QR | QR payments | REDIRECT | |
GW | Direct Debit | WALLET | Wallet | REDIRECT | ![]() |
XU | Recurring Payments | WALLET | Wallet | REDIRECT | ![]() |
VS | Static Virtual Account ( Via Instapay or PESONet) | BANK_TRANSFER | Bank Transfer | REDIRECT | ![]() |
SO | Shopeepay | TICKET | Wallet | REDIRECT | ![]() |
Cards
Capabilities
| Visa Credit | Mastercard Credit | Visa Debit | Mastercard Debit | American Express | JCB | |
|---|---|---|---|---|---|---|
| Refunds | Yes | Yes | Yes | Yes | Yes | Yes |
| Recurring | Yes | Yes | Yes | Yes | No | No |
| Chargeback option | Yes | Yes | Yes | Yes | Yes | Yes |
| Chargeback Dispute option | Yes | Yes | Yes | Yes | Yes | Yes |
| Descriptor | Merchant name | Merchant name | 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
GCash
GCash, the leading e-wallet in the Philippines, is a reloadable prepaid card co-branded with Mastercard that enables shoppers to pay via text message, mobile, or desktop. It supports both one-time and tokenized recurring payments.
Capabilities
| GCash | |
|---|---|
| Hard expiration | 15 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic GCash redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | GC 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. | No |
payer.document | String | Document of the payer. | No |
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. | Yes |
callback_url | String | The payer will be redirected to the merchant’s website after completing the payment via the callback_url specified by the merchant. | No |
Examples
{
"amount": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "GC",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012"
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/callback"
}{
"id": "R-4-39983e50-jhy1-47ed-96fe-d1aa9f799495",
"amount": 500,
"currency": "PHP",
"payment_method_id": "GC",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-01-30T19:33:43.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchant.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-0e0b5d31-2714-49a1-9987-e4b50d14397c"
}{
"id": "R-4-39983e50-jhy1-47ed-96fe-d1aa9f799495",
"amount": 500,
"status": "PAID",
"status_detail": "The payment was paid.",
"status_code": "200",
"currency": "PHP",
"country": "PH",
"payment_method_id": "GC",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"order_id": "232f0396-584d-4fc9-8c25-b86115602a68",
"description": "Tshirt",
"notification_url": "http://merchant.com/notification/new",
"callback_url": "http://merchantsite.com/callback",
"created_date": "2026-06-09T12:57:10.000+0000"
}
GCash Recurring
GCash Wallet’s recurring payments feature allows merchants to enroll users once and charge them on any schedule without any redirect after the initial authorization — ideal for subscriptions and SaaS billing.
Legacy integration noticeThe previous tokenized GCash flow using
wallet.save: trueandwallet.tokenonPOST /paymentsis still supported for existing merchants but is considered legacy. New integrations must use the Enrollment API flows described below. Maintaining an existing legacy integration? See Tokenized wallets: Legacy.
Capabilities
| GCash Recurring | |
|---|---|
| Min. amount | 1 PHP |
| Max. expiration time supported | 15 minutes |
| Notification delay | Immediate |
| Refunds | Yes. Full and Partial |
| Flow | Enrollment REDIRECTRecurring payments DIRECT |
UX Flow

The screenshots illustrate a generic GCash enrollment flow, describing the steps the customer follows on the GCash App to approve the enrollment
Request parameters
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 | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
type | String | ON_DEMAND: For future recurring payments initiated by the customer or merchant on demand, rather than on a fixed schedule. | Yes |
payment_method_id | String | RG 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. | No |
payer.phone | String | User's phone number. | No |
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 |
device.type | String | Device from which the user creates the transaction. Possible values: WEB and MOBILE_APP. | No |
notification_url | String | Notifications will be sent in every change of status of an 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_url specified by the merchant | Yes |
Examples
{
"external_id": "fwbExmQQ7",
"currency": "PHP",
"country": "PH",
"type": "ON_DEMAND",
"description": "Monthly subscription",
"payment_method_id": "RG",
"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": "fwbExmQQ7",
"description": "Monthly subscription",
"status": "PENDING",
"status_code": "100",
"status_detail": "The enrollment is pending.",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/N-ec90b256-c2b7-4cd4-af36-265499ae3ca9",
"payment_method_id": "RG",
"payment_method_flow": "REDIRECT",
"payment_method_type": "WALLET"
}{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "fwbExmQQ7",
"currency": "PHP",
"country": "PH",
"type": "ON_DEMAND",
"payment_method_id": "RG",
"payment_method_flow": "REDIRECT",
"created_date": "2025-09-10 T20:37:20.000+0000",
"status": "ACTIVE",
"status_detail": "The enrollment is active.",
"status_code": "200",
"notification_url": "http://merchantsite.com/notifications"
}Recurring payments
All standard payment fields apply. The payment_method_flow changes to DIRECT and the enrollment_id received on the enrollment request must be included.
| 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": "PHP",
"country": "PH",
"payment_method_id": "RG",
"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": "PHP",
"payment_method_id": "RG",
"payment_method_type": "WALLET",
"payment_method_flow": "DIRECT",
"country": "PH",
"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": "PHP",
"country": "PH",
"payment_method_id": "RG",
"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 | Yes |
enrollment.notification_url | String | Notifications will be sent in every change of status of an 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_url specified 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": "PHP",
"country": "PH",
"payment_method_id": "RG",
"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": "PHP",
"payment_method_id": "RG",
"payment_method_type": "WALLET",
"payment_method_flow": "DIRECT",
"country": "PH",
"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": "PHP",
"country": "PH",
"type": "ON_DEMAND",
"payment_method_id": "RG",
"payment_method_flow": "REDIRECT",
"created_date": "2025-09-10 T20: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": "PHP",
"country": "PH",
"payment_method_id": "RG",
"payment_method_flow": "DIRECT",
"notification_url": "http://merchantsite.com/notifications",
"created_date": "2025-12-05T10:51:20.000+0000"
}GrabPay
GrabPay (among the top 4 digital wallets) allows payments for rides, food deliveries, in-store purchases and online shopping, convenient and hassle-free. It supports both one-time and tokenized recurring payments.
Capabilities
| GrabPay | |
|---|---|
| Hard expiration | 15 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | 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 | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | GY 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": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "GY",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "PH",
"state": "Manila",
"city": "Manila",
"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-c90cc244-230b-4a87-jhaq-bb2f2c6cacc8",
"amount": 500,
"currency": "PHP",
"payment_method_id": "GY",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-01-30T19:35:43.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchant.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-e795ab1d-9597-4afd-7uy6-296ee820e72a"
}Maya
Maya is also a very popular e-wallet, with millions of users. It supports both one-time and tokenized recurring payments.
Capabilities
| Maya | |
|---|---|
| Hard expiration | 30 minutes |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow

The screenshots illustrate a generic Maya redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | PM 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": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "PM",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012",
"address": {
"country": "PH",
"state": "Manila",
"city": "Manila",
"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-f700d58b-hj76-4dbd-85df-cb8b10060418",
"amount": 500,
"currency": "PHP",
"payment_method_id": "PM",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-01-30T19:38:40.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchant.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-4b94635e-5070-7uyt-8179-3ac2f3787c61"
}QR Ph
QR Ph is the national QR code standard in the Philippines to make payments and receive funds from any participating Bank and eWallet with just one QR code.
Capabilities
| QR Ph | |
|---|---|
| Min. amount | 5 PHP |
| Max. expiration time supported | 5 minutes |
| Notification delay | Immediate |
| Refunds | Yes. Full and partial. |
| Flow | REDIRECT |
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | QR 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. | No |
payer.document | String | Document of the payer. | No |
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 |
callback_url | String | The payer will be redirected to the merchant’s website after completing the payment via the callback_url specified by the merchant | No |
Examples
{
"amount": 50,
"currency": "PHP",
"country": "PH",
"payment_method_id": "QR",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012"
},
"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": "PHP",
"payment_method_id": "QR",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2026-02-17T17:54:45.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-c650346a-c177-4d72-45tr-f4b98f6a2185"
}{
"id": "R-4-d7c221a9-ab7b-48c9-4r56-c72e7d869d86",
"amount": 50,
"status": "PAID",
"status_detail": "The payment was paid.",
"status_code": "200",
"currency": "PHP",
"country": "PH",
"payment_method_id": "QR",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "123456789012"
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page",
"created_date": "2026-02-17T17:54:46.000+0000"
}Example ticket
QR Ph UI built with the information in the example above.
Direct Debit
Direct Debit is a payment method where end users can register their debit cards or online bank login with a merchant or marketplace to pay for their purchases by making one-time payments.
The recurring option is also available: After a one-time authorization, merchants can pull funds directly from an end user’s bank account.
Capabilities
| Direct Debit | |
|---|---|
| Max. expiration time supported | Depends on the provider. |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow
The recurring payments option will not require any user interaction besides initial authorization.

The screenshots illustrate a generic Direct Debit redirect flow.
Request parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | GW 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 |
payer.phone | String | User's phone number. | Yes |
wallet.name | String | Name of the payer's wallet. | No |
wallet.save | Boolean | Determines whether you want to receive a wallet token for future payments. | No |
wallet.capture | Boolean | Determines if you want to capture the payment funds or not. | No |
wallet.verify | Boolean | Used if you want to enroll the wallet and a token. | No |
wallet.username | String | Username of the payer's wallet account. | Yes |
wallet.email | String | Email of the payer's wallet account. | Yes |
wallet.token | String | Token of a previous payment from the same wallet. | For recurring payments, 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": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "GW",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+628050976593",
"document": "123456789012",
"address": {
"country": "PH",
"state": "Manila",
"city": "Manila",
"zip_code": "88058",
"street": "Main St.",
"number": "5940"
}
},
"wallet": {
"name": "Jane Doe",
"save": true,
"capture": true,
"verify": false,
"username": "Jane2002",
"email": "[email protected]",
"expiration": 60,
"label": "label",
"state": "state",
"token": ""
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"callback_url": "http://merchantsite.com/notification/new",
"notification_url": "http://merchantsite.com/success_page"
}{
"id": "F-4-44b12e48-d414-f5r5-8a86-91c7bcfca86b",
"amount": 500,
"currency": "PHP",
"payment_method_id": "GW",
"payment_method_type": "WALLET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-02-15T14:32:37.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchant.com/success_page",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-3b84b016-9o0s-4ba1-9cf7-3d53423f89f8"
}Recurring Payments
Direct Debit product enables merchants to provide seamless payment flows for their customers and true auto-debit (subsequent payments without OTP) for recurring payments using wallets or bank accounts, reducing drop-off rates from customers.
Capabilities
| Recurring Payments | |
|---|---|
| Max. expiration time supported | Depends on the provider. |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
| Supported wallets | GrabPay, ShopeePay, PayMaya, BPI, Union Bank. |
UX Flow
One-time authorization flow

The screenshots illustrate a generic Recurring Payment 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 | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH Transaction country in ISO 3166. | Yes |
payment_method_id | String | XU 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 |
payer.phone | String | User's phone number. | Yes |
wallet.name | String | Name of the payer's wallet. | No |
wallet.save | Boolean | Determines whether you want to receive a wallet token for future payments. | No |
wallet.capture | Boolean | Determines if you want to capture the payment funds or not. | No |
wallet.username | String | Username of the payer's wallet account. | Yes |
wallet.email | String | Email of the payer's wallet account. | Yes |
wallet.token | String | Token of a previous payment from the same wallet. | For Recurring Payments, 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": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "XU",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+638050976593",
"document": "123456789012",
"address": {
"country": "PH",
"state": "Manila",
"city": "Manila",
"zip_code": "88058",
"street": "Main St.",
"number": "5940"
}
},
"wallet": {
"name": "Jane Doe",
"save": true,
"capture": true,
"username": "Jane2002",
"email": "[email protected]",
"expiration": 60,
"label": "label",
"state": "state",
"token": ""
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"callback_url": "http://merchantsite.com/notification/new",
"notification_url": "http://merchantsite.com/success_page"
}{
"id": "F-4-3eeed8d5-69cb-4c40-34er-e5667f0804f0",
"amount": 500,
"currency": "PHP",
"payment_method_id": "XU",
"payment_method_type": "WALLET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-02-15T14:04:38.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchant.com/success_page",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-continue/M-61acbfe4-c53c-3e42-8968-0011de348568"
}Static Virtual Account
Static Virtual Accounts (SVA) in the Philippines are fixed account numbers linked to specific merchants or customers, ideal for recurring payments and long-term relationships in B2B and B2C contexts. These accounts do not expire.
Customers can transfer funds from their bank accounts to Static Virtual Accounts using Instapay or PESONet.
Instapay allows real-time fund transfers up to Php50,000 per transaction, while PESONet has no maximum limit and posts transactions after the end of the business day.
Capabilities
| Direct Debit | |
|---|---|
| Min. amount | 1 PHP |
| Max. expiration time supported | No expiry |
| Notification delay | Immediate |
| Flow | REDIRECT |
How to process Static Virtual Account payments?
Learn how to process Static Virtual Accounts with dLocal in our Static Virtual Accounts section.
Shopeepay
ShopeePay is a widely used digital wallet in the Philippines by Shopee, enabling users to store funds and make secure, real-time payments to online merchants. It supports seamless, mobile-friendly checkout and allows for both one-time and tokenized recurring payments, with instant payment confirmation for merchants.
Capabilities
| Shopeepay | |
|---|---|
| Min. amount | 1 PHP |
| Max. expiration time supported | 90 Minutes |
| Notification delay | Immediate |
| 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 | PHPTransaction currency in ISO 4217. | Yes |
country | String | PH 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": 500,
"currency": "PHP",
"country": "PH",
"payment_method_id": "SO",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "1234567890123",
"address": {
"country": "PH",
"state": "Manila",
"city": "Manila",
"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-89b01b6a-e859-4ecf-56ty-f790ccaee1a9",
"amount": 500,
"currency": "PHP",
"payment_method_id": "SO",
"payment_method_type": "TICKET",
"payment_method_flow": "REDIRECT",
"country": "PH",
"created_date": "2023-01-30T18:39:22.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "u345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.airpay.in.th/h5pay/pay?type=start&app_id=11002330&key=k1QAba529f90f3093b63&order_id=1100356113652&return_url=aHR0cDovL21lcmNoYW50LmNvbS9zdWNjZXNzX3BhZ2U%2FYW1vdWwJmNsaWVudF9pZD0xMTAwMjMzMCZyZWZlcmVuY2VfaWQ9MTEwMDM1NjExMzY1MiZyZXN1bHRfY29kZT0yMDEmc2lnbmF0dXJlPXlYOXJPVFpIOExJajJmazlYbHJZbzBHZE9nWXNTQVNna1RjVWhYb213R2slM0Q%3D&source=web"
}Updated 9 days ago





