> ## Documentation Index
> Fetch the complete documentation index at: https://docs.singapay.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Send payments from your Singapay balance by scanning a merchant's QRIS code — powered by Indonesia's switching networks (Jalin, Alto, Rintis).

The QRIS Issuer (Money Out) API lets your platform act as an **issuer** — sending payments from your Singapay account to any QRIS MPM (Merchant Presented Mode) merchant. The customer scans the merchant's QR code, your system decodes it, confirms the merchant details, and initiates the credit payment through Singapay's switching network integration.

<Info>
  This is a **Money Out** operation. Each payment debits funds from your Singapay account and credits the destination QRIS merchant via the switching network (Jalin, Alto, or Rintis).
</Info>

<CardGroup cols={3}>
  <Card title="Merchant lookup" icon="qrcode">
    Decode any QRIS MPM code and retrieve verified merchant details before committing to a payment.
  </Card>

  <Card title="Instant credit" icon="bolt">
    Initiate a payment credit transaction directly to the merchant via Indonesia's QRIS switching network.
  </Card>

  <Card title="Status tracking" icon="magnifying-glass">
    Query the latest transaction status at any point after payment initiation.
  </Card>
</CardGroup>

***

## Recommended flow

<Steps>
  <Step title="Scan and decode QR code">
    Customer scans the merchant's QRIS MPM code. Your system captures the raw `qr_data` string from the QR code.
  </Step>

  <Step title="Inquiry merchant">
    Call **QRIS Issuer MPM — Inquiry Merchant** with the `qr_data`. Singapay decodes the QR, retrieves merchant details (name, NMID, category), and returns the verified merchant info. Present this to the customer for confirmation.
  </Step>

  <Step title="Initiate payment credit">
    Once the customer confirms, call **QRIS Issuer MPM — Payment Credit** with the confirmed amount and merchant details. A `reference_number` is returned to track the transaction.
  </Step>

  <Step title="Check transaction status">
    Use **QRIS — Inquiry Transaction Status** with the `reference_number` to verify the final transaction outcome — especially for pending or in-process payments.
  </Step>
</Steps>

***

## API overview

| Method | Endpoint                                     | Description                                                   |
| :----: | -------------------------------------------- | ------------------------------------------------------------- |
| `POST` | `/api/v2.0/qris/issuer/mpm/inquiry-merchant` | Decode `qr_data` and retrieve verified QRIS merchant details. |
| `POST` | `/api/v2.0/qris/issuer/mpm/payment-credit`   | Initiate a payment credit to the QRIS merchant.               |
| `POST` | `/api/v2.0/qris/status/{account_id}`         | Query the status of a QRIS transaction by `reference_number`. |

All endpoints use `POST`, accept `application/json`, and require **OAuth 2.0 Bearer Token** authentication.

***

## Transaction status

| Status    | Description                                                          |
| --------- | -------------------------------------------------------------------- |
| `pending` | Payment initiated, awaiting confirmation from the switching network. |
| `success` | Payment successfully credited to the merchant.                       |
| `failed`  | Payment failed — check the response code for the reason.             |

***

## Important notes

<AccordionGroup>
  <Accordion title="Always inquiry before payment" icon="shield-check">
    Always call **Inquiry Merchant** before initiating a payment. This validates the QR code, retrieves the correct merchant details, and lets the customer confirm before funds are debited.
  </Accordion>

  <Accordion title="Switching network support" icon="network-wired">
    Singapay routes QRIS issuer payments through supported switching networks — **Jalin**, **Alto**, and **Rintis**. The routing is handled automatically based on the merchant's QRIS data.
  </Accordion>

  <Accordion title="QR code format" icon="qrcode">
    The `qr_data` field accepts the raw string decoded from the merchant's QR code — the full QRIS MPM payload. Do not modify or truncate the string before sending.
  </Accordion>

  <Accordion title="Reference number for tracking" icon="fingerprint">
    Store the `reference_number` returned from the payment credit call. Use it with **Inquiry Transaction Status** to safely check the outcome and handle retries without creating duplicate transactions.
  </Accordion>

  <Accordion title="Signature required" icon="lock">
    Payment Credit and Inquiry Status endpoints require an additional `X-Signature` and `X-Timestamp` header. See [Authentication](/api-reference/authentication) for signing requirements.
  </Accordion>
</AccordionGroup>

***

## Available endpoints

<CardGroup cols={3}>
  <Card title="QRIS Issuer MPM — Inquiry Merchant" icon="magnifying-glass" href="./inquiry-merchant">
    Decode `qr_data` and retrieve verified merchant details from the QRIS switching network.
  </Card>

  <Card title="QRIS Issuer MPM — Payment Credit" icon="paper-plane" href="./trigger-payment-credit">
    Initiate a payment credit to the destination QRIS merchant.
  </Card>

  <Card title="QRIS — Inquiry Transaction Status" icon="clock-rotate-left" href="./inquiry-status">
    Query the current status of a QRIS transaction by reference number.
  </Card>
</CardGroup>

<Note>
  All endpoints require authentication. See [Authentication](/api-reference/authentication).
</Note>
