---
agentTools:
  projectIndex: https://paycloud.readme.io/llms.txt
---

# Generate QRIS

| URL and Path |                                        |
| :----------- | :------------------------------------- |
| Path         | /ordersnap/api/v1.0/qr/qr-mpm-generate |
| HTTP Method  | **POST**                               |
| Version      | v1.0                                   |
| Service Code | 47                                     |

***

## Request Header

[block:parameters]
{
  "data": {
    "h-0": "Field Name",
    "h-1": "Field Type",
    "h-2": "Field Description",
    "0-0": "Content-Type",
    "0-1": "String (Required)",
    "0-2": "Type of the content",
    "1-0": "Authorization",
    "1-1": "String (Required)",
    "1-2": "Represents access_token of a request; string starts with keyword “Bearer ” followed by access_token. Can get this token from Access Token B2B response.",
    "2-0": "X-TIMESTAMP",
    "2-1": "String (Required)",
    "2-2": "Using ISO 8601 as timestamp format.  \nTransaction date time, in format YYYYMMDDTHH:mm:ss+07:00.  \nTime must be in GMT+7 (Jakarta time).",
    "3-0": "X-SIGNATURE",
    "3-1": "String (Required)",
    "3-2": "Created using symmetric signature HMAC_SHA512 algorithm.",
    "4-0": "X-PARTNER-ID",
    "4-1": "String (Required)",
    "4-2": "Unique ID for a partner (client_id).",
    "5-0": "X-EXTERNAL-ID",
    "5-1": "String (Required)",
    "5-2": "Merchant’s unique ID per transaction request.",
    "6-0": "CHANNEL-ID",
    "6-1": "String (Required)",
    "6-2": "PJP’s channel id."
  },
  "cols": 3,
  "rows": 7,
  "align": [
    "left",
    "left",
    "left"
  ]
}
[/block]

```json Example Header
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6It9pE72h1M4cdIEkoG0xSuNSJGptEMnlG2GgifWhWDpLDeGvcUh
X-TIMESTAMP: 2022-08-24 11:14:17
X-SIGNATURE: tmVw6o0TJRQCiEjuOdf6/jaX261ronRwMBNGzfoW7K2ERS52sFlVnaE2MtgDS/UpMtGSbIpC+gQv0j72HWb0iA==
X-PARTNER-ID: p00cb12g-w04q-42bb-l2de-e3enf4f487ce3
X-EXTERNAL-ID: 23456789012345
CHANNEL-ID: 95221
```

***

## Request Body

| Field Name                               | Field Type                 | Field Description                                                                                                                                                              |
| :--------------------------------------- | :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| partnerReferenceNo                       | String(36) (Required)      | Unique Transaction ID from Merchant.                                                                                                                                           |
| amount                                   | Object (Required)          | Object data amount.                                                                                                                                                            |
| amount.value                             | String(16,2) (Required)    | Transaction Amount.                                                                                                                                                            |
| amount.currency                          | String(3) (Required)       | Transaction Currency.                                                                                                                                                          |
| merchantId                               | String(64) (Optional)      | Merchant identifier that is unique per each merchant                                                                                                                           |
| storeId                                  | String(16) (Optional)      | Merchant terminal id                                                                                                                                                           |
| validityPeriod                           | String(25) (Required)      | The time when the QRIS will automatically expire. The time when the payment will be automatically expired. The format is defined by ISO 8601. (Max 3 hours from request time). |
| additionalInfo                           | Object (Required)          | Additional information.                                                                                                                                                        |
| additionalInfo.acquirer                  | Integer (Required)         | Usable ID Acquirer. Read [here](https://paycloud.readme.io/reference/list-acquirer-payload)                                                                                    |
| additionalInfo.items                     | Object of Array (Required) | Items Object.                                                                                                                                                                  |
| additionalInfo.items.id                  | String (Required)          | ID Items.                                                                                                                                                                      |
| additionalInfo.items.name                | String (Required)          | Items Name.                                                                                                                                                                    |
| additionalInfo.items.quantity            | String (Required)          | Quantity of items.                                                                                                                                                             |
| additionalInfo.items.price               | Object (Required)          | Price Object.                                                                                                                                                                  |
| additionalInfo.items.price.value         | String (Required)          | Price value.                                                                                                                                                                   |
| additionalInfo.items.price.currency      | String (Required)          | Transaction currency                                                                                                                                                           |
| additionalInfo.customerDetails           | Object (Required)          | Object Costumer Details.                                                                                                                                                       |
| additionalInfo.customerDetails.email     | String (Required)          | Email Customer.                                                                                                                                                                |
| additionalInfo.customerDetails.firstName | String (Required)          | First name customer.                                                                                                                                                           |
| additionalInfo.customerDetails.lastName  | String (Required)          | Last name customer.                                                                                                                                                            |
| additionalInfo.customerDetails.phone     | String (Required)          | Phone number customer.                                                                                                                                                         |

```json Example Request Body
{
  "partnerReferenceNo": "TestPartNo0002",
  "amount": {
    "value": "10000.00",
    "currency": "IDR"
  },
  "merchantId": "",
  "storeId": "",
  "validityPeriod": "2025-12-04T11:00:00+07:00",
  "additionalInfo": {
    "acquirer": 3,
    "items": [
      {
        "id": "idasd1239aks001",
        "name": "Qris",
        "quantity": "1",
        "price": {
          "value": 10,
          "currency": "IDR"
        }
      }
    ],
    "customerDetails": {
      "email": "testpc01@example.com",
      "firstName": "John.",
      "lastName": "Doe",
      "phone": "085688983935"
    }
  }
}

```

***

## Response Body

[block:parameters]
{
  "data": {
    "h-0": "Field Name",
    "h-1": "Field Type",
    "h-2": "Field Description",
    "0-0": "additionalInfo",
    "0-1": "Object (Required)",
    "0-2": "Additional information.",
    "1-0": "additionalInfo.acquirer",
    "1-1": "Integer (Required)",
    "1-2": "Usable ID Acquirer.",
    "2-0": "additionalInfo.amount",
    "2-1": "Object of Array  (Required)",
    "2-2": "Amount Object",
    "3-0": "additionalInfo.amount.currency",
    "3-1": "String (Required)",
    "3-2": "Amount currency",
    "4-0": "additionalInfo.amount.value",
    "4-1": "String (Required)",
    "4-2": "Amount value",
    "5-0": "additionalInfo.createdAt",
    "5-1": "Object (Required)",
    "5-2": "Object transaction created",
    "6-0": "additionalInfo.createdAt.dateTime",
    "6-1": "String (Required)",
    "6-2": "Datetime transaction created",
    "7-0": "merchantName",
    "7-1": "String (Optional)",
    "7-2": "Merchant Name.",
    "8-0": "partnerReferenceNo",
    "8-1": "String (36) (Optional)",
    "8-2": "partnerReferenceNo from the request body",
    "9-0": "qrContent",
    "9-1": "String(512) (Conditional)",
    "9-2": "QR String MPM.  \nIf qrContent is null, then qrUrl or qrImage must be filled.",
    "10-0": "qrImage",
    "10-1": "String (Optional)",
    "10-2": "base64 from image QRIS.  \nMax length is unlimited.",
    "11-0": "qrUrl",
    "11-1": "String (Optional)",
    "11-2": "QR URL for download QR Image",
    "12-0": "referenceNo",
    "12-1": "String(64) (Optional)",
    "12-2": "Transaction identifier on service provider system.",
    "13-0": "responseCode",
    "13-1": "String(7) (Required)",
    "13-2": "Response Code (HTTP status code + service code + case code)",
    "14-0": "responseMessage",
    "14-1": "String(150) (Required)",
    "14-2": "Description of charge result response.",
    "15-0": "storeId",
    "15-1": "String (Optional)",
    "15-2": "unique shop id on the merchant side.",
    "16-0": "terminalId",
    "16-1": "String (Optional)",
    "16-2": "Merchant terminal id"
  },
  "cols": 3,
  "rows": 17,
  "align": [
    "left",
    "left",
    "left"
  ]
}
[/block]

```json Response Body
{
    "additionalInfo": {
        "acquirer": 3,
        "amount": {
            "currency": "IDR",
            "value": "10000.00"
        },
        "createdAt": {
            "dateTime": "2025-12-04T11:23:11+07:00",
            "offset": {
                "totalSeconds": 0
            },
            "zone": {
                "totalSeconds": 0
            }
        },
        "merchantCrossRefId": "",
        "recurring": false,
        "transactionType": "MERCHANT_TRANSACTION"
    },
    "merchantName": "",
    "partnerReferenceNo": "TestPartNo0002",
    "qrContent": "00020101021226580011id.qoin.www01189360084202020002110210Q2023002110303UME51370014ID.CO.QRIS.WWW0215ID0000202300211520458125303360540410005802ID5914Qoin Hub Store6007Jakarta61051321062200112QD00000005810700630459B2",
    "qrImage": "",
    "qrUrl": "",
    "referenceNo": "T25120000152183",
    "responseCode": "2004700",
    "responseMessage": "Successful",
    "storeId": "",
    "terminalId": ""
}
```

***

## List Response Code

| Response Code | HTTP Status | Response Message                   |
| :------------ | :---------- | :--------------------------------- |
| 2004700       | 200         | Successful                         |
| 4004700       | 400         | X-TIMESTAMP is not valid           |
| 4004701       | 400         | Invalid Field Format               |
| 4004702       | 400         | Invalid Mandatory Field            |
| 4014700       | 401         | Unauthorized. \[Invalid Signature] |
| 4044708       | 404         | Invalid Merchant                   |
| 4094701       | 409         | Duplicate partnerReferenceNo       |
| 5004701       | 500         | Internal server error              |