Introduction
Build your own checkout experience and accept multiple payment methods directly via the Payment Intent API.
Payment Acceptance is the PayMongo API surface that lets your business collect money from customers. Whether you're running an e-commerce store, a subscription service, a mobile app, or a physical counter, you can accept payments from over 14 payment methods — cards, e-wallets, QR codes, online banking, and more — without building separate integrations for each one.
Every payment method in this section works through the same core workflow: the Payment Intent. You create one Payment Intent per transaction, attach the customer's chosen payment method, and PayMongo handles the rest — authentication, routing, confirmation, and notifications.
Who this is for
This section is for teams who need complete control over their checkout experience — building a custom UI, integrating directly with PayMongo's APIs, and handling the full payment flow on their own frontend and backend.
If you're looking for a hosted checkout page, a shareable payment link, or a no-code solution, those are covered under Payment Channels.
If you're building a custom checkout experience, you're in the right place.
What this section covers
| Area | What you'll find |
|---|---|
| Key Concepts | Payment Intent lifecycle, statuses, webhook events, glossary |
| Quick Start | Fastest path to your first payment |
| Cards | Visa/Mastercard, card vaulting, installments, USD payments |
| QR Ph | Dynamic QR for online checkout, static QR for in-store |
| E-wallets | GCash, Maya, GrabPay, ShopeePay |
| Digital Wallets | Google Pay |
| BNPL | Buy Now Pay Later via BillEase |
| Direct Online Banking | BPI, UBP, BDO, Landbank, Metrobank |
| Payment Features | Hold & capture, splitting, pass on fees, subscriptions, disputes, refunds |
| Best Practices | PCI DSS scope, security responsibilities |
| Troubleshooting | Failed payments, webhook issues, redirect problems |
| Testing | Test mode, test cards, test cases for all methods |
How payment acceptance works
All payment methods attach to a Payment Intent — a server-side record that holds the transaction details (amount, currency, allowed methods) until the customer completes payment. The Payment Intent acts as the container for the entire checkout session.
The basic flow for every payment method is:
- Your server creates a Payment Intent — sets the amount, currency, and which methods to accept.
- Your frontend creates a Payment Method — collects the customer's payment details (card number, e-wallet selection, etc.).
- Your frontend attaches the Payment Method to the Payment Intent — triggers authentication and payment processing.
- PayMongo notifies you via webhook — sends
payment.paidorpayment.failedwhen the outcome is known.
Different payment methods add steps at stage 3: cards may require a 3D Secure redirect, e-wallets redirect to the provider's app or website, and QR Ph generates a scannable code. The Key Concepts page explains the full lifecycle in detail.
Transaction amount limits
Payment Intents enforce minimum and maximum amounts per currency:
| Currency | Minimum | Maximum |
|---|---|---|
| PHP | PHP 1.00 (100 centavos) | PHP 9,999,999.99 (999999999 centavos) |
| USD | USD 1.00 (100 cents) | USD 200,000.00 (20000000 cents) |
All amounts are passed in the smallest currency unit — centavos for PHP, cents for USD. A Payment Intent created outside these limits will be rejected.
Choosing a payment method
Not sure which methods to offer? Use this as a starting point:
| If your customers are... | Offer... |
|---|---|
| Paying with a credit or debit card | Cards |
| Using GCash, Maya, GrabPay, or ShopeePay | E-wallets |
| Paying at a physical counter or store | QR Ph (In-store) |
| Paying via online checkout with QR | QR Ph (API) |
| Using Google Pay | Google Pay |
| Using online bank transfers | Direct Online Banking |
| Paying over time via Buy Now Pay Later | BNPL |
You can accept multiple methods simultaneously — a single Payment Intent can be configured to allow all of them, and the customer chooses at checkout.
Updated about 4 hours ago