API · Money movement
QR codes
Generate EMVCo-compliant merchant-presented QR payloads. Static QRs sit on your shopfront and accept any amount; dynamic QRs encode a specific PaymentIntent. Any compliant wallet (Waafi, SabaPay, D-Money) can scan.
EMVCo MPM2 endpoints
Endpoints
POST
/v1/qr/staticGenerate a static merchant-presented QR (any amount).
POST
/v1/qr/dynamicGenerate a dynamic QR tied to a specific PaymentIntent.
Static QR
One QR per outlet, printed once, accepts any amount the customer types in. Best for shopfronts, taxi cabs, market stalls.
| Name | Type | Description |
|---|---|---|
outlet_id | string | Optional — link payments to a specific outlet for reporting. |
merchant_name | string | Display name on the customer wallet (defaults to your trade name). |
currencyrequired | ISO 4217 | "DJF" typical. |
metadata | map | Free-form key/value. |
Dynamic QR
One QR per checkout — typically displayed on a POS screen. Encodes the amount, merchant, and a reference to the PaymentIntent. Customer scans, confirms, the intent settles.
| Name | Type | Description |
|---|---|---|
payment_intentrequired | pi_ | Must be in requires_action status. |
expires_at | datetime | When the QR stops being valid. Default: 5 minutes. |
Sample · dynamic QR
bashbash
# 1) Create the intent (any provider that supports QR — waafi, sabapay, dmoney)
curl -X POST https://api.merashub.com/v1/payment_intents \
-H "Authorization: Bearer sk_test_..." \
-d '{ "amount": 50000, "currency": "DJF", "provider": "waafi" }'
# → "id": "pi_..."
# 2) Wrap it in a QR
curl -X POST https://api.merashub.com/v1/qr/dynamic \
-H "Authorization: Bearer sk_test_..." \
-d '{ "payment_intent": "pi_...", "expires_at": "2026-05-25T10:20:30Z" }'201 Createdjson
{
"id": "qr_01HZ...",
"payload": "00020101021229...6304ABCD",
"image_url": "https://api.merashub.com/v1/qr/qr_01HZ.../image.png",
"expires_at": "2026-05-25T10:20:30Z",
"payment_intent": "pi_..."
}ℹ
EMVCo MPM compliance
The
payload is a standard EMVCo Merchant-Presented Mode (MPM) string. Any wallet implementing MPM (Waafi, SabaPay, D-Money, and global MPM-compatible wallets) can scan it. Render it as a QR code on your side via any QR library.