Payments for the Philippine market

Accept payments
your customers already trust.

One API for GCash, Maya, QR Ph, cards and BancNet direct debit. Signed endpoints, idempotent charges, encrypted credentials — the parts that make payments painful are already solved.

5payment methods
0card data touches your servers
1integration
HMAC-SHA256 signed requests AES-256-GCM field encryption Idempotent by default Double-entry ledger
checkout.paygate.ph
Order #10234 · Acme Store
Total₱ 4,895.00
Scan to pay ₱ 4,895.00
Any QR Ph-capable banking or e-wallet app.
Ref pi_8f3a…2b
Secured by Paygate · card data never touches your servers
5methods · one API
2auth layers on every charge
24 hidempotency replay window
0floats — integer centavos only
∞webhook retries until delivered
Coverage

Every way the Philippines pays

Reach wallet users, scanner apps, cardholders and ATM cardholders with a single integration.

G

GCash

The country's biggest wallet
redirect
M

Maya

Maya wallet checkout
redirect
◫

QR Ph

National QR standard (BSP 1055)
scan to pay

Cards

Hosted page, 3-D Secure, PCI SAQ-A
hosted
B

BancNet

Direct debit from bank accounts
redirect
Engineering

Built like money depends on it

Because it does. The failure modes that cost gateways real money are handled in the platform, not left to your integration.

Integrity

Signed requests & webhooks

HMAC-SHA256 over the raw body binds your idempotency key, timestamp and payload together. Tampering, replays and key swaps are rejected — not processed.

Exactly-once

Idempotent by default

Network retries, double-clicks and webhook redeliveries reuse the key and return the original result. A duplicate is a response, not a second charge.

Correct money

Integer centavos, double-entry ledger

Money is stored as whole centavos, never floating point. Every movement writes balanced debit/credit pairs — an unbalanced transaction cannot be recorded.

Confidentiality

Encryption at every layer

Customer PII and all secrets are AES-256-GCM encrypted at rest with rotatable keys. API keys are pepper-hashed — a database dump yields nothing.

Compliance

PCI scope you can reason about

Cards are collected on the provider's hosted page with 3-D Secure. Card numbers never enter our systems, keeping integration at SAQ-A scope.

Reliability

Guaranteed webhooks

Signed outbound events with exponential retries and no redirect-following. Deliveries persist before they're attempted, so a crash loses nothing.

Flow

From checkout to settled in three calls

Create

POST /v1/payments with amount in centavos and the method. You get a nextAction — a redirect URL for wallets and cards, or a QR payload for QR Ph.

Customer pays

They approve in their wallet, scan the QR, or enter a card on the hosted page. The provider confirms asynchronously to Paygate.

We tell you

Paygate settles the intent, writes the ledger, and signs a payment.succeeded webhook. Fulfil when you receive it — never on a page redirect.

Security

Designed to hold other people's money

Every layer assumes the outside is hostile and the inside can be breached.

  • Two-layer auth — API key + HMAC body signature on every money-moving call
  • Replay-proof — 300-second window, one-time idempotency keys bound into the signature
  • Immutable states — a settled payment can never be re-settled by a duplicate callback
  • Amount verification — the provider's reported amount must match ours before settlement
Defence in depth
  • AES-256-GCM field-level encryption for PII and secrets, with versioned key rotation
  • No PAN storage — card data lives on the provider's pages, nowhere else
  • Constant-time comparisons and no timing oracles on lookup
  • Full audit log of every staff action in the admin portal
  • SSO + RBAC — every portal access is a named person with least-privilege roles
Developers

A short integration, end to end

One create call. One hosted hand-off. One webhook. Done.

create-payment.sh
# 1. Create a payment
POST /v1/payments   # signed + idempotent
{"amount": 488500,        # ₱4,885.00 in centavos
 "currency": "PHP",
 "method":    "QRPH"}

→ 201 {"nextAction": {"type": "qr",
         "payload": "00020101..."}}  # render it

# 2. Your customer scans it. Paygate settles.

# 3. You receive a signed webhook:
{"type": "payment.succeeded",
 "data": {"status": "SUCCEEDED"}}  # now fulfil
OpenAPI 3.1 reference

Interactive docs and the machine-readable spec — point a generator at /openapi.json.

Five methods, one shape

Wallets, QR and cards all look identical to you: nextAction is a redirect or a QR.

Test instantly

A deterministic mock rail lets you exercise success, decline and pending states on sk_test_ keys — no provider accounts needed.

Webhooks, not polling

Signed deliveries with retries until you acknowledge, plus delivery attempts surfaced in the portal.

Onboarding

Apply for access

Tell us about your business. Our team reviews every application and typically responds within two business days.

Contact details are encrypted at rest. We'll only use them to review your application.

Ready when you are

Start taking payments this week

Apply now  Developer docs