---
updatedAt: 2026-10-01T10:48:55.000Z
agentTools:
  projectIndex: https://docs.dlocal.com/llms.txt
---

# Philippines

Learn about the dLocal supported payment methods in Philippines.

<HTMLBlock>{`
<style>
  
  .main {
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 5px;
    display: grid;
    grid-template-columns: repeat(3, 1fr); /* Tres columnas */
    width: 740px; /* Ancho máximo de la caja */
}

.overview-card1 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}

.overview-card1::after {
    content: '';
    position: absolute;
    right: 0; /* Pega la línea al borde derecho */
    top: 30%; /* Ajusta la posición superior de la línea */
    height: 60%; /* Establece el alto de la línea al 60% */
    width: 1px; /* Grosor de la línea */
    background-color: #D2D8EC; /* Color de la línea */
}

  .overview-card2 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}
  
  .overview-card2::after {
    content: '';
    position: absolute;
    right: 0; /* Pega la línea al borde derecho */
    top: 30%; /* Ajusta la posición superior de la línea */
    height: 70%; /* Establece el alto de la línea al 60% */
    width: 1px; /* Grosor de la línea */
    background-color: #D2D8EC; /* Color de la línea */
}
  
.overview-card3 {
    position: relative; /* Asegúrate de que el contenedor sea relativo para posicionar el pseudoelemento */
    width: 100%;
    max-width: 233px;
    box-sizing: border-box;
    margin: 0;
}

.overview-card-upper-side1 {
    height: 105px;
    padding: 20px;
    background-color: transparent;
    text-align: left;
}

.overview-card-bottom-side {
    position: relative;
    width: 100%;
    height: 100%;
    padding: 30px;
    padding-right: 20px;
    background-color: transparent;
    border-radius: 16px;
}

.overview-card-title1 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 24px;
    font-weight: 700;
    line-height: 26.4px;
}

.overview-card-content1 {
    font-size: 14px;
    font-weight: 300;
    margin-top: 20px;
    line-height: 20px;
    margin-bottom: 40px!important;
}

.overview-icon1 {
    margin-bottom: -5px;
    margin-top: 20px;
}
  
.doc-link {
        position: relative;
        font-weight: 500;
        color: #21A35B !important;
        text-decoration: none;
        display: block;
    }
  

div:not(.markdown-body) .doc-link:hover {
            text-decoration: none;
            color: #1043FA !important;
            transform: translateX(0.2em);
        }

.overview-card-title1:hover {
    color: #2D59F5 !important;
    cursor:pointer;
    transform: none!important;
}

    div:not(.markdown-body) .doc-link_arrow {
        display: inline-block;
        height: 1em;
        width: auto;
        vertical-align: middle;
        margin-left: 0.2em;
        margin-top: -0.1em;
    }
  
     div:not(.markdown-body) .doc-link:hover .doc-link_arrow-color {
            fill: #1043FA !important;
        }
  
      [data-color-mode="dark"] .overview-icon1 img {
  filter: brightness(0) invert(1);
  transition: filter 0.3s ease;
}
   
/* Media Queries para dispositivos móviles */
@media (max-width: 768px) {
  .main {
    grid-template-columns: repeat(2, 1fr); /* Dos columnas en pantallas medianas */
  }
}

@media (max-width: 480px) {
  .main {
    grid-template-columns: 1fr; /* Una columna en pantallas pequeñas */
}
</style>
  
    <div class="main">

     
      <div class="overview-card1" onclick="parent.location='/docs/philippines#market-specifications'">
     <div class="overview-card-bottom-side">
      <div class="overview-icon1"><img width="48" src="https://files.readme.io/922681fecfb238c94f7213fa9e0aa1675f1e190ec55beff2b6994169c77fdefc-adjust-circle.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Market specifications</h3>
          <p class="overview-card-content1">

            Take a look of all the payment methods available.   
        </p>
          <a href="#country-reference" class="doc-link">Country reference</a>
          <a href="#cards-supported" class="doc-link">Cards supported</a>
          <a href="#alternative-payment-method-supported" class="doc-link">APM supported</a>
        </div>
      </div>
      
      
      <div
        class="overview-card2" onclick="parent.location='/docs/philippines#cards'">
        <div class="overview-card-bottom-side">
                  <div class="overview-icon1"><img width="48" src="https://files.readme.io/8d450ada4af3880f85f70c5daedebb0bec1b2b6d64479be929af48fdc8d66f40-credit-card.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Cards</h3><br>
          <p class="overview-card-content1">

           Find all the information about the card supported capabilities.   
          </p>
          <a href="#capabilities" class="doc-link">Capabilities</a>
          <a href="#how-to-process-card-payments" class="doc-link">Process Card Payments</a>
        </div>
      </div>  
      
      
      <div class="overview-card3" onclick="parent.location='/docs/philippines#alternative-payment-method'">
    <div class="overview-card-bottom-side">
            <div class="overview-icon1"><img width="48" src="https://files.readme.io/5a59519487455e7af361db8b67a2dee8d71627d4d6e1ed0a0bd805f5da861fcc-money-stack.svg"  alt="" loading="lazy"><div class="img_overlay img_color_rgba(0,0,0,.2)"></div></div>
           <h3 class="overview-card-title1">Alternative Payments</h3>
          <p class="overview-card-content1">

             Learn how to integrate cash, bank transfer or wallet payment.  
        </p>
          <a href="#gcash" class="doc-link">GCash</a>
          <a href="#gcash-recurring" class="doc-link">GCash Recurring</a> 
          <a href="#grabpay" class="doc-link">GrabPay</a>
          <a href="#maya" class="doc-link">Maya</a>
          <a href="#direct-debit" class="doc-link">Direct Debit</a>
          <a href="#recurring-payments" class="doc-link">Recurring Payments</a>
          <a href="#static-virtual-account" class="doc-link">Static Virtual Account</a>
          <a href="#shopeepay" class="doc-link">Shopeepay</a>
        </div>
      </div> 
      
    </div>
`}</HTMLBlock>

***

# Market specifications

Do you want to know more information about the Philippines' market? Go to the [Accelerate Growth in Asia’s Leading eCommerce Hubs](https://dlocal.com/online-payment-processors-in-asia/) 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` | <img src="https://static.dlocal.com/images/providers/checkout/VI.svg" width="40px">   |
| `CARD`              | `VD`     | Visa Debit       | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/VD.svg" width="40px">   |
| `CARD`              | `MC`     | Mastercard       | `CARD`                | Credit Card ​ | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/MC.svg" width="40px">   |
| `CARD`              | `MD`     | Mastercard Debit | `CARD`                | Debit Card ​  | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/MD.svg" width="40px">   |
| `CARD`              | `AE`     | American Express | `CARD`                | Credit Card   | `DIRECT` `REDIRECT` | <img src="https://static.dlocal.com/images/providers/checkout/AE.svg" width="40px">   |
| `CARD`              | `JC`     | JCB              | `CARD`                | Credit Card   | `DIRECT` `REDIRECT` | `<img src="https://static.dlocal.com/images/providers/checkout/JC.svg" width="40px">` |

<Callout icon="ℹ️" theme="info">
  To offer all the card options that may be available in your integration, send the `payment_method_id` as `CARD`.
</Callout>

## Alternative Payment Method supported

| `payment_method_id` | Name                                              | `payment_method_type` | Details       | Allowed Flows | Logo                                                                             |
| :------------------ | :------------------------------------------------ | :-------------------- | :------------ | :------------ | :------------------------------------------------------------------------------- |
| `GC`                | GCash                                             | `TICKET`              | Wallet ​      | `REDIRECT`    | <img src="https://static.dlocal.com/images/providers/GCash.png" width="40px">    |
| `RG`                | GCash Recurring                                   | `WALLET`              | Wallet        | `REDIRECT`    | <img src="https://static.dlocal.com/images/providers/GCash.png" width="40px">    |
| `GY`                | GrabPay                                           | `TICKET`              | Wallet ​      | `REDIRECT`    | <img src="https://static.dlocal.com/images/providers/GrabPay.png" width="40px">  |
| `PM`                | Maya                                              | `TICKET`              | Wallet ​      | `REDIRECT`    | <img src="https://static.dlocal.com/images/providers/PM.png" width="40px">       |
| `GW`                | Direct Debit                                      | `WALLET`              | Wallet ​      | `REDIRECT`    | <img src="https://pay.dlocal.com/views/2.0/images/payments/IO.png" width="40px"> |
| `XU`                | Recurring Payments                                | `WALLET`              | Wallet        | `REDIRECT`    | <img src="https://pay.dlocal.com/views/2.0/images/payments/IO.png" width="40px"> |
| `VS`                | Static Virtual Account ( Via Instapay or PESONet) | `BANK_TRANSFER`       | Bank Transfer | `REDIRECT`    | <img src="https://pay.dlocal.com/views/2.0/images/payments/IO.png" width="40px"> |
| `SO`                | Shopeepay                                         | `TICKET`              | Wallet        | `REDIRECT`    | <img src="https://static.dlocal.com/images/providers/SO.png" width="40px">       |

<br />

***

# 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](https://docs.dlocal.com/docs/card-payments) section.

<br />

***

# 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

<Image src="https://files.readme.io/4073bb822bf24685dc0bebb194f4cefc1350f00c205a6f665cbd3987d31cdc3b-GCash.png" alt="The screenshots illustrate a generic GCash redirect flow." align="center" caption="The screenshots illustrate a generic GCash redirect flow." />

### Request parameters

| Property              | Type   | Description                                                                                                                           | Mandatory? |
| :-------------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------ | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                                 | Yes        |
| `currency`            | String | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                                           | Yes        |
| `country`             | String | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).                     | Yes        |
| `payment_method_id`   | String | `GC` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "GC",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "document": "123456789012"
    },
    "order_id": "345453483kqws0",
    "description": "Tshirt",
    "notification_url": "http://merchantsite.com/notification/new",
    "callback_url": "http://merchantsite.com/callback"
}
```
```json Response Example
{
    "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"
}
```
```json Asynchronous Response Example
{
  "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.

<Callout icon="⚠️" theme="warn">
  ### Legacy integration notice

  The previous tokenized GCash flow using `wallet.save: true` and `wallet.token` on `POST /payments` is 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](https://docs.dlocal.com/docs/wallet-payments#tokenized-wallets-legacy).
</Callout>

### Capabilities

|                                    | GCash Recurring                                        |
| :--------------------------------- | :----------------------------------------------------- |
| **Min. amount**                    | 1 PHP                                                  |
| **Max. expiration time supported** | 15 minutes                                             |
| **Notification delay**             | Immediate                                              |
| **Refunds**                        | Yes. Full and Partial                                  |
| **Flow**                           | Enrollment `REDIRECT`<br />Recurring payments `DIRECT` |

### UX Flow

<Image src="https://files.readme.io/0c7162e0dc6318c5aff8214854e931ee74c4aeefa5aa380ccb04a40b1240488a-GCash_recurring_-_enrollment.png" alt="The screenshots illustrate a generic GCash enrollment flow." align="center" caption="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 | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                                             | Yes        |
| `country`             | String | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).                       | 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` <br /><br />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.<br />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

```json Request Example
{
  "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": "janedoe@mymail.com"
  },
  "notification_url": "http://merchantsite.com/notifications",
  "callback_url": "http://merchantsite.com/callback"
}
```
```json Synchronous Response Example
{ 
"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"
}
```
```json Asynchronous Response Example
{
  "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-10T20:37:20.000+0000",
  "status": "ACTIVE",
  "status_detail": "The enrollment is active.",
  "status_code": "200",
  "notification_url": "http://merchantsite.com/notifications"
}
```

<br />

### 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

```json Request Example
{
  "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": "janedoe@mymail.com"
  },
  "enrollment": {
    "id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b"
  },
  "order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
  "notification_url": "http://www.merchantsite.com/notifications"
}
```
```json Synchronous Response Example
{
  "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"
}
```
```json Asynchronous Response Example
{
  "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"
}
```

<br />

### 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

```json Request Example
{
  "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": "janedoe@mymail.com"
  },
  "order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
  "notification_url": "http://www.merchantsite.com/notifications"
}
```
```json Synchronous Response Example
{
  "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"
}
```
```json Asynchronous Response Example (enrollment)
{
  "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-10T20:37:20.000+0000",
  "status": "ACTIVE",
  "status_detail": "The enrollment is active.",
  "status_code": "200",
  "notification_url": "http://merchantsite.com/notifications"
}
```
```json Asynchronous Response Example (payment)
{
  "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

<Image src="https://files.readme.io/c68e7e300bd06477db060e1b9dcbe1dcf65e064109cf4221fbb4e62802b0b258-GrabPay.png" alt="The screenshots illustrate a generic GrabPay redirect flow." align="center" caption="The screenshots illustrate a generic GrabPay redirect flow." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `GY` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "GY",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "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"
}
```
```json Response Example
{
    "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

<Image src="https://files.readme.io/1971466d6a89ce15f3979f4b589eb2488c11f2a483a86e0e4d3c238c5195736f-Paymaya.png" alt="The screenshots illustrate a generic Maya redirect flow." align="center" caption="The screenshots illustrate a generic Maya redirect flow." />

### Request parameters

| Property              | Type   | Description                                                                                                            | Mandatory? |
| :-------------------- | :----- | :--------------------------------------------------------------------------------------------------------------------- | :--------- |
| `amount`              | Number | Amount to be charged.                                                                                                  | Yes        |
| `currency`            | String | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `PM` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "PM",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "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"
}
```
```json Response Example
{
    "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"
}
```

<br />

## 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.

<Image src="https://files.readme.io/3b95264df12a648257711fcd7d2abb222475c2b8e68f476e15974350580d257e-Direct_Debit.png" alt="The screenshots illustrate a generic Direct Debit redirect flow.  
The specifics of the flow can change depending on the payment method selected to complete the transaction." align="center" caption="The screenshots illustrate a generic Direct Debit redirect flow." />

### Request parameters

| Property              | Type    | Description                                                                                                            | Mandatory?                   |
| :-------------------- | :------ | :--------------------------------------------------------------------------------------------------------------------- | :--------------------------- |
| `amount`              | Number  | Amount to be charged.                                                                                                  | Yes                          |
| `currency`            | String  | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes                          |
| `country`             | String  | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes                          |
| `payment_method_id`   | String  | `GW` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "GW",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "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": "janedoe@mymail.com",
        "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"
}
```
```json Response Example
{
    "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

<Image src="https://files.readme.io/762608d7751eaa8771e64876f19b810de37dce6dafedc3cb9f1ee3e319216f48-Recurring_payments-OHO.png" alt="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." align="center" caption="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  | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes                          |
| `country`             | String  | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes                          |
| `payment_method_id`   | String  | `XU` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "XU",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "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": "janedoe@mymail.com",
        "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"
}
```
```json Response Example
{
    "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](https://docs.dlocal.com/docs/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

<Image src="https://files.readme.io/7cdb77a2d572685e579c4a6c03213ba41da4cc3f4ee126049e96b48b68db672d-ShopeePay.png" alt="The screenshots illustrate a generic ShopeePay redirect flow through a QR code." align="center" caption="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 | `PHP`<br /><br />Transaction currency in [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).                            | Yes        |
| `country`             | String | `PH` <br /><br />Transaction country in [ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes).      | Yes        |
| `payment_method_id`   | String | `SO` <br /><br />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

```json Request Example
{
    "amount": 500,
    "currency": "PHP",
    "country": "PH",
    "payment_method_id": "SO",
    "payment_method_flow": "REDIRECT",
    "payer": {
        "name": "Jane Doe",
        "email": "janedoe@mymail.com",
        "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"
}
```
```json Response Example
{
    "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"
}
```