QRIS Hook
Open source · MIT

Turn QRIS notifications
into webhooks.

QRIS Hook reads payment notifications from merchant apps on Android and delivers them as JSON to your backend. No third-party API involved.

Built for payment automation

Notification listener

Uses NotificationListenerService to catch QRIS payment notifications in real time.

Backend-agnostic webhook

JSON POST to any URL, with an optional X-Webhook-Secret header for verification.

Queue & retry

Events are stored in Room, sent immediately, and retried by WorkManager with exponential backoff.

Per-merchant parsers

Each merchant app has its own parser. Adding one takes a single Kotlin class.

Debug mode

Capture raw notification payloads to build or fix a parser.

Your data stays yours

No middleman server. Notifications go from the phone straight to your webhook.

How it works

  1. 1

    Enable notification access

    Allow QRIS Hook to read notifications in Android settings.

  2. 2

    Set your webhook

    Enter the webhook URL and an optional secret.

  3. 3

    Pick merchants

    Select the merchant apps you want to monitor.

  4. 4

    Receive events

    Payments are parsed, queued, then delivered to your backend.

A clean payload

Every payment is sent as JSON with formatted data plus the raw notification.

X-Webhook-Secret: your-secret

{
"event_id": "uuid",
"type": "qris.payment.success",
"merchant_id": "demo_merchant",
"source_app": "Demo Merchant",
"received_at": "2030-05-21T12:00:00+07:00",
"payment": {
"amount": 10000,
"currency": "IDR",
"sender_name": "John Doe",
"payment_source": "Demo"
},
"raw": { "title": "string", "text": "string" }
}

Supported merchants

Your app isn't listed? Send a Debug Mode payload to get it supported.

Request merchant support

Sent straight from the app, no GitHub account needed.

App screenshots

Ready to receive payment webhooks?

Download the latest APK from GitHub Releases, or build it from source.