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 success transaction 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

RoutePurpose
POST /gimac/qr-pointsCreate a point with its merchant code, qr_payload and qr_svg.
GET /gimac/qr-pointsList 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}/cardOpen 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.

Request body
{
  "name": "STATION TOTAL BONAMOUSSADI",
  "city": "Douala",
  "external_ref": "station-42",
  "application_id": 12
}
Response 201
{
  "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": "..."
  }
}
CodeWhen
200external_ref already exists: the existing point is returned (idempotent creation).
401Invalid API key.
422Missing or over-25-character name, over-15-character city, or application_id owned by another account.
  • external_ref is 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) and city (up to 15) are printed in the QR. Accents are removed; city defaults to the profile address.
  • qr_svg is the complete image to display or save; qr_payload is 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

Request body
{
  "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.

`transaction.success` webhook for a point payment
{
  "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 (your external_ref) to assign the payment to a station or attendant. Account-level QR payments omit qr_point_* fields.
  • external_id identifies 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.