Notification listener
A system-level listener catches incoming GCash payment notifications the moment they land.
Android payment gateway
NotifyPay turns a spare Android phone into a payment gateway. It reads e-wallet payment notifications and delivers them to your backend as structured, secure webhooks, with no merchant API needed.
9:41
You have received PHP 250.00 of GCash from +63 9•• ••• 4821.
{
"source": "gcash",
"amount": 250.00,
"sender_masked": "+63 9•• ••• 4821",
"created_at": "2026-10-03T09:41:00.000Z"
}x-api-key: ••••••••
Features
A system-level listener catches incoming GCash payment notifications the moment they land.
Amount, masked sender, mobile number and timestamp are extracted into clean fields.
Every payment is POSTed to your endpoint with an API key header your backend verifies.
Offline? Events queue on the device and retry automatically in the background.
A foreground service keeps the gateway alive, with a live log of everything it sent.
A ready-made API route stores payments in Supabase and normalizes PH mobile numbers.
How it works
Sign in to your e-wallet and grant NotifyPay notification access.
Set your webhook URL and API key in the app.
Each payment reaches your backend in seconds, ready to confirm orders.
Developers
Your backend receives a simple POST for every payment. Verify the API key, match the amount to an order, and you're done.
// verify + store a payment
export default async function handler(req, res) {
if (req.headers["x-api-key"] !== process.env.NOTIFYPAY_API_KEY)
return res.status(401).json({ error: "Unauthorized" });
const { source, amount, sender_masked, created_at } = req.body;
await db.payments.insert({ source, amount, sender_masked, created_at });
res.json({ ok: true });
}