---
updatedAt: 2026-09-29T03:19:58.000Z
agentTools:
  projectIndex: https://docs.paymongo.com/llms.txt
---

# E-wallets

How e-wallets integrate with PayMongo — the integration pattern, how they attach to a Payment Intent, supported providers, and the redirect flow.

## Overview

E-wallets are one of the most widely used payment methods in the Philippines. PayMongo supports four providers — GCash, Maya, GrabPay, and ShopeePay — through the same Payment Intent workflow. Each e-wallet follows a redirect pattern: after attachment, the customer is redirected to the provider's app or website to authorize the payment.

***

## Supported providers

| Provider  | Payment method type |
| --------- | ------------------- |
| GCash     | `gcash`             |
| Maya      | `paymaya`           |
| GrabPay   | `grab_pay`          |
| ShopeePay | `shopeepay`         |

***

## How e-wallets attach to a Payment Intent

The flow is the same for all four providers:

1. **Create a Payment Intent** with the provider's method type in `payment_method_allowed`
2. **Create a Payment Method** with the appropriate `type`
3. **Attach the Payment Method** — the response includes `next_action.redirect.url`
4. **Redirect the customer** to the URL — they complete authorization in the provider's app or website
5. **Customer returns** to your `return_url` after authorization
6. **Confirm via webhook** — `payment.paid` or `payment.failed`

```javascript
if (intent.data.attributes.status === 'awaiting_next_action') {
  window.location.href = intent.data.attributes.next_action.redirect.url;
}
```

***

## Expiry windows

Each e-wallet has a time limit for the customer to complete authorization:

| Provider  | Default expiry | Configurable            |
| --------- | -------------- | ----------------------- |
| GCash     | 4 hours        | No                      |
| Maya      | 30 minutes     | No                      |
| GrabPay   | 15 minutes     | No                      |
| ShopeePay | 20 minutes     | Yes — 1 to 3600 seconds |

If the customer doesn't complete authorization within the window, the Payment Intent returns to `awaiting_payment_method`.

> **Maya on-demand subscriptions use a 15-minute window** for the wallet-link authorization, not the 30 minutes shown above for one-time payments. See [Subscriptions](https://docs.paymongo.com/docs/payment-acceptance-subscriptions#on-demand-subscriptions).

To customize ShopeePay's expiry window, set `payment_method_options.shopeepay.expiry_seconds` when attaching.

***

## Transaction amounts

E-wallet payments have a minimum of **PHP 1.00** (`100` centavos) and a maximum of **PHP 100,000.00** per transaction. Amounts outside these limits fail with `parameter_below_minimum` or `parameter_above_maximum` errors. The customer's own e-wallet account limits (e.g. unverified GCash accounts) may also cause payments below the maximum to fail.

***

## Mobile apps and deep links

If your integration runs inside a mobile app (iOS or Android), GCash payments require additional implementation to work correctly. GCash now requires payment completion inside the GCash mobile app, which means your app must handle the `gcash://` deep link scheme to open the GCash app directly instead of a browser.

Without this implementation, the "Open in GCash" button may fail silently — the customer sees the button but tapping it does nothing.

See [Handle Deep Links](handle-deep-links) for implementation details for Android and iOS.

> Merchants using a mobile browser (not a native app) do not need to implement deep links — the browser handles the redirect automatically.

***