Merchant code and QR points
GIMAC QR lets customers in the CEMAC region pay by scanning a merchant code from their bank or operator app. QR point routes let you create a distinct code for each cashier, station, branch or attendant.
Payment flow
- The customer scans the QR, enters an amount in XAF, then confirms in their payment app. GIMAC contacts Kratos Pay in real time.
- If the merchant code, account and point are active and required KYC is verified, the payment is accepted immediately: a
successtransaction is created, the balance is credited and a webhook is sent. - If the payment is rejected, the customer is not debited. The payer may be in another CEMAC country; the currency remains
XAF. - QR payments are static: the customer enters the amount. An account already has an automatically assigned merchant code; contact support for its printable "Scan & Pay" card.
QR point routes
| Route | Purpose |
|---|---|
POST /gimac/qr-points | Create a point with its merchant code, qr_payload and qr_svg. |
GET /gimac/qr-points | List points; optional external_ref and is_active filters. QR image is not included. |
GET /gimac/qr-points/{uuid} | Read a point and its qr_svg image. |
PATCH /gimac/qr-points/{uuid} | Change the name, city or application, or activate/deactivate the point. The code does not change. |
GET /gimac/qr-points/{uuid}/card | Open the printable A5 card with the name, code and QR. |
Use an API key and X-Application-ID for these routes. The same operations are available from the dashboard with a session token under /merchant/gimac/qr-points.
Create a QR point
POST/gimac/qr-pointsAPI key + X-Application-ID
Creates a code for a station, attendant, branch or cashier. Payments are credited to the balance of the specified application, or the X-Application-ID application when application_id is omitted.
{
"name": "STATION TOTAL BONAMOUSSADI",
"city": "Douala",
"external_ref": "station-42",
"application_id": 12
}{
"success": true,
"data": {
"uuid": "0190b6f0-7a52-7e0a-9b5c-2f6d1c3a8e44",
"code": "612345",
"name": "STATION TOTAL BONAMOUSSADI",
"city": "Douala",
"external_ref": "station-42",
"application_id": 12,
"is_active": true,
"qr_payload": "00020101021135370014A000000656101001051402302066123455204...",
"qr_svg": "<svg>…</svg>",
"created_at": "2026-11-11T09:00:00Z",
"updated_at": "2026-11-11T09:00:00Z"
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 200 | external_ref already exists: the existing point is returned (idempotent creation). |
| 401 | Invalid API key. |
| 422 | Missing or over-25-character name, over-15-character city, or application_id owned by another account. |
external_refis your stable business identifier; resend the same value after a timeout to avoid duplicates. The 6-digit merchant code never changes.name(up to 25 characters) andcity(up to 15) are printed in the QR. Accents are removed;citydefaults to the profile address.qr_svgis the complete image to display or save;qr_payloadis the string to encode if you draw the QR yourself. Neither is included in list responses.
Manage a point and process a payment
PATCH/gimac/qr-points/{uuid}API key + X-Application-ID
{
"is_active": false
}Deactivation rejects payments scanned from this QR; send is_active: true to reactivate it. The response has the creation shape with updated values. A 404 means the point is missing or belongs to another account. Changing its name or city does not update already printed QRs.
{
"event": "transaction.success",
"data": {
"uuid": "018f1a2b-3c4d-7e5f-a6b7-c8d9e0f1a2b3",
"type": "collection",
"provider": "gimac",
"status": "success",
"amount": 5000,
"currency": "XAF",
"external_id": "C1452HG78511",
"metadata": {
"gimac_intent": "merchant_purchase",
"gimac_frommember": "32001",
"qr_point_uuid": "0190b6f0-7a52-7e0a-9b5c-2f6d1c3a8e44",
"qr_point_ref": "station-42",
"qr_point_name": "STATION TOTAL BONAMOUSSADI"
}
}
}- Use
metadata.qr_point_ref(yourexternal_ref) to assign the payment to a station or attendant. Account-level QR payments omitqr_point_*fields. external_ididentifies the GIMAC transfer; the same transfer is never credited twice. QR payments cannot be refunded through the API.
Requirements and limits
- Business merchants must pass KYC to receive QR payments; individuals are exempt.
- Available in XAF in the CEMAC region. An inactive account or point is rejected and the customer is not charged.
- The customer enters the amount. Fixed-amount QR points are not available.