# SNAP QRIS

## API Services

## Header

### Header Request

Header parameters for transaction request.

<table><thead><tr><th width="183">Field</th><th width="138">M/O/C</th><th width="109">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>Content-Type</td><td>Mandatory</td><td>String</td><td>String represents indicate the media type of the resource (e.g. application/json, application/pdf)</td></tr><tr><td>X-TIMESTAMP</td><td>Mandatory</td><td>String</td><td>Client's current local time in yyyy-MMddTHH:mm:ssTZD format</td></tr><tr><td>X-SIGNATURE</td><td>Mandatory</td><td>String</td><td><p>Represents signature of a request.</p><p>Signature details <a href="https://docs.faspay.co.id/merchant-integration/api-reference-1/snap/signature-snap">here</a>.    </p></td></tr><tr><td>ORIGIN</td><td>Optional</td><td>String</td><td>Origin Domain www.yourdomain.com</td></tr><tr><td>X-PARTNER-ID</td><td>Mandatory</td><td><p>String</p><p>(5)</p></td><td>Unique ID for a partner. merchant_id mapped here</td></tr><tr><td>X-EXTERNAL-ID</td><td>Mandatory</td><td>String (36)</td><td>Numeric String. Reference number that should be unique in the same day</td></tr><tr><td>CHANNEL-ID</td><td>Mandatory</td><td><p>String</p><p>(5)</p></td><td><p>Faspay’s channel id</p><p>Device identification on which the API services is currently being accessed by the end user (customer)</p></td></tr></tbody></table>

### Header Response

Header parameters for transaction response.

<table><thead><tr><th width="191">Field</th><th width="137">Attribute</th><th width="103">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>Content-Type  </td><td>Mandatory  </td><td>String  </td><td>application/json  </td></tr><tr><td>X-TIMESTAMP  </td><td>Mandatory  </td><td>String  </td><td>Client's current local time in yyyy-MMddTHH:mm:ssTZD format  </td></tr></tbody></table>

{% tabs %}
{% tab title="Header Request Sample" %}

```json
Content-type: application/json  
X-TIMESTAMP: 2020-12-17T10:55:00+07:00  
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5  
ORIGIN: www.hostname.com  
X-PARTNER-ID: 82150  
X-EXTERNAL-ID: 41807553358950093184162180797837  
CHANNEL-ID: 77001
```

{% endtab %}

{% tab title="Header Response Sample" %}

```json
Content-type: application/json
X-TIMESTAMP: 2020-12-21T10:30:34+07:00  Content-type: application/json  
X-TIMESTAMP: 2020-12-17T10:55:00+07:00  
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5  
ORIGIN: www.hostname.com  
X-PARTNER-ID: 82150  
X-EXTERNAL-ID: 41807553358950093184162180797837  
CHANNEL-ID: 88001  
```

{% endtab %}
{% endtabs %}

## Body

### Generate QRIS

<mark style="color:green;">`POST`</mark> `/{version}/qr/qr-mpm-generate`&#x20;

The QRIS API is used for generating QRIS code payments.

{% hint style="info" %}
Service code -> 47\
Current version -> v1.0\ <mark style="color:red;">\*</mark>is required
{% endhint %}

**URL Path**

Sandbox: [`https://debit-sandbox.faspay.co.id/v1.0/qr/qr-mpm-generate`](https://debit-sandbox.faspay.co.id/v1.0/qr/qr-mpm-generate)

#### Request Body

<table><thead><tr><th width="221">Parameter</th><th width="144">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>partnerReferenceNo<mark style="color:red;">*</mark></td><td>String (32)</td><td>Transaction identifier on service consumer system</td></tr><tr><td>amount</td><td>Object</td><td>An object that contains information about an amount or value within a specific context.</td></tr><tr><td>       value<mark style="color:red;">*</mark></td><td>String (16,2)</td><td><p>Net amount of the transaction. If it's IDR then value includes 2 decimal digits. </p><p><strong>e.g.</strong> IDR 10.000,- will be placed with 10000.00 with 2 decimal<br>(ISO4217)</p></td></tr><tr><td>      currency<mark style="color:red;">*</mark></td><td>String (3)</td><td>Currency</td></tr><tr><td>merchantId<mark style="color:red;">*</mark></td><td>String (5)</td><td>Merchant identifier that is unique per each merchant</td></tr><tr><td>validityPeriod<mark style="color:red;">*</mark></td><td>String (25)</td><td><p>The time when the QRIS valid. </p><p>(ISO-860)</p></td></tr><tr><td>additionalInfo</td><td>Object</td><td>Merchant identifier that is unique per each merchant</td></tr><tr><td>     billDate<mark style="color:red;">*</mark></td><td>String (25)</td><td><p>Transaction/ Order Date. </p><p>(ISO-8601)</p></td></tr><tr><td>     billDescription<mark style="color:red;">*</mark></td><td>String (128)</td><td>Bill description</td></tr><tr><td>     channelCode<mark style="color:red;">*</mark></td><td>String (32)</td><td><p>Payment Channel Code</p><p></p><p><strong>List Channel Code:</strong></p><p>715 Linkaja QRIS <br>711 ShopeePay QRIS<br>842 CIMB QRIS</p></td></tr><tr><td>      phoneNo<mark style="color:red;">*</mark></td><td>String (30)</td><td>Customer phone number</td></tr></tbody></table>

#### Response&#x20;

<table><thead><tr><th width="223">Parameter</th><th width="145">Data Type</th><th>Descriptions</th></tr></thead><tbody><tr><td>responseCode<mark style="color:red;">*</mark></td><td>String (7)</td><td>Response code</td></tr><tr><td>responseMessage<mark style="color:red;">*</mark></td><td>String (150)</td><td>Response description</td></tr><tr><td>referenceNo<mark style="color:red;">*</mark></td><td>String (16)</td><td>Transaction identifier on service provider system. Must be filled upon successful transaction</td></tr><tr><td>partnerReferenceNo<mark style="color:red;">*</mark></td><td>String (32)</td><td>Transaction identifier on service consumer system</td></tr><tr><td>qrUrl</td><td>String (256)</td><td><p>QR URL for downloading QR</p><p>Image.</p><p></p><p>Will be returned only for direct merchant.<br><br>Notes: type -> conditional</p></td></tr><tr><td>additionalInfo</td><td>Object</td><td>Additional information</td></tr><tr><td>    qrImageUrl<mark style="color:red;">*</mark></td><td> String (256)</td><td>Redirect URL to display QR Image in Faspay page.</td></tr><tr><td>    merchantId<mark style="color:red;">*</mark></td><td>String (5)</td><td>Merchant identifier that is unique per each merchant</td></tr><tr><td>    amount<mark style="color:red;">*</mark></td><td>Object</td><td>An object that contains information about an amount or value within a specific context.</td></tr><tr><td>        value<mark style="color:red;">*</mark></td><td>String (16,2)</td><td><p>Net amount of the transaction. If it's IDR then value includes 2 decimal digits. </p><p>e.g. IDR 10.000,- will be placed with 10000.00 with 2 decimal<br>(ISO4217)</p></td></tr><tr><td>       currency<mark style="color:red;">*</mark></td><td>String (3)</td><td>Currency </td></tr></tbody></table>

{% tabs %}
{% tab title="QRIS Payment Request Sample" %}

```json
{
    "partnerReferenceNo": "2020102900000000000001",
    "amount":
    {
        "value": "1000.00",
        "currency": "IDR"
    },
    "merchantId": "99999",
    "validityPeriod": "2023-10-03T23:00:00+07:00",
    "additionalInfo":
    {
        "billDate": "2023-10-03T17:00:00+07:00",
        "billDescription": "Payment #12345678",
        "channelCode": "711",
        "phoneNo": "082123456789"
    }
}
```

{% endtab %}

{% tab title="QRIS Payment Response Sample" %}

```json
{
    "responseCode": "2004700",
    "responseMessage": "Request has been processed successfully",
    "referenceNo": "1999971176208743",
    "partnerReferenceNo": "2020102900000000000001",
    "qrUrl":"https://debit-staging.faspay.co.id/__assets/qr/99999-1999971176208743.png",
    "additionalInfo":
    {
        "qrImageUrl":"https://debit-staging.faspay.co.id/pws/100003/0830000010100000/a32c3d417ec84d6e977484ab02192d26fd58563a?trx_id=1999971176208743&merchant_id=99999&bill_no=2020102900000000000001",
        "merchantId": "99999",
        "amount":
        {
            "value": "1000.00",
            "currency": "IDR"
        }
    }
}
```

{% endtab %}
{% endtabs %}

### Query Payment

<mark style="color:green;">`POST`</mark> `/{version}/qr/qr-mpm-query`

The query payment API is used to check the transaction status.

{% hint style="info" %}
Service code: 51

Current version: v1.0

<mark style="color:red;">\*</mark>is required
{% endhint %}

**URL Path**

Sandbox: [`https://debit-sandbox.faspay.co.id/v1.0/qr/qr-mpm-query`](https://debit-sandbox.faspay.co.id/v1.0/qr/qr-mpm-query)

#### Request Body

<table><thead><tr><th width="277">Parameter</th><th width="132">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>originalReferenceNo<mark style="color:red;">*</mark></td><td>String(16)</td><td>Original transaction identifier on service provider system</td></tr><tr><td>  channelCode<mark style="color:red;">*</mark></td><td>String(32)</td><td><p>Payment Channel Code</p><p></p><p><strong>List Channel Code:</strong></p><p>715 Linkaja QRIS </p><p>711 ShopeePay QRIS<br>842 CIMB QRIS</p></td></tr><tr><td>additionalInfo</td><td>Object</td><td>Additional information</td></tr><tr><td>merchantId<mark style="color:red;">*</mark></td><td>String(5)</td><td>Merchant identifier that is unique per each merchant</td></tr><tr><td>serviceCode<mark style="color:red;">*</mark></td><td>String(2)</td><td>Transaction type indicator (service code of the original transaction request)</td></tr><tr><td>originalPartnerReferenceNo<mark style="color:red;">*</mark></td><td>String(32)</td><td><p>Original transaction identifier on</p><p>service consumer system</p></td></tr></tbody></table>

#### Response

<table><thead><tr><th width="259">Parameter</th><th width="97">M/O/C</th><th width="115">Type</th><th>Descriptions</th></tr></thead><tbody><tr><td>responseCode<mark style="color:red;">*</mark></td><td>M</td><td>String (7)</td><td>Response code</td></tr><tr><td>responseMessage<mark style="color:red;">*</mark></td><td>M</td><td>String (150)</td><td>Response description</td></tr><tr><td>originalReferenceNo<mark style="color:red;">*</mark></td><td>M</td><td>String (16)</td><td>Original transaction identifier on service provider system. Must be filled upon successful transaction</td></tr><tr><td>paidTime</td><td>C</td><td>DateTime (25)</td><td><p>Transaction date (yyyyMMddHHmmss) ISO-8601. </p><p></p><p><strong>Notes:</strong> Type -> Conditional,Mandatory when payment Happened</p></td></tr><tr><td>amount</td><td>O</td><td>Object</td><td>An object that contains information about an amount or value within a specific context.</td></tr><tr><td>    value</td><td>C</td><td>String (16,2)</td><td><p>Amount of customer</p><p>payment. If it's IDR then</p><p>value includes 2 decimal</p><p>digits. </p><p>e.g. IDR 10.000,- will be placed with 10000.00.</p><p></p><p><strong>Notes:</strong> <br>Type -> Conditional, Mandatory when payment Happened, <br><br>(ISO4217)</p></td></tr><tr><td>    currency</td><td>C</td><td>String (3)</td><td>Currency <br>Notes:<br>Type -> Conditional,</td></tr><tr><td>originalPartnerReferenceNo<mark style="color:red;">*</mark></td><td>M</td><td>String (32)</td><td>Original transaction identifier on service consumer system</td></tr><tr><td>serviceCode<mark style="color:red;">*</mark></td><td>M</td><td>String (2)</td><td>Transaction type indicator (service code of the original transaction request)</td></tr><tr><td>latestTransactionStatus<mark style="color:red;">*</mark></td><td>M</td><td>String (2)</td><td><p>Status code list:</p><p>00  - Success</p><p>01  - Initiated</p><p>03  - Pending</p><p>04  - Refunded</p><p>05  - Canceled</p><p>06  - Failed</p><p>07 - Not found<br>07 - Expired</p></td></tr><tr><td>transactionStatusDesc<mark style="color:red;">*</mark></td><td>M</td><td>String (32)</td><td>Description status transaction</td></tr><tr><td>additionalInfo</td><td>O</td><td>Object</td><td>Additional information</td></tr><tr><td>    paymentReff</td><td>C</td><td>String (16)</td><td><p>Payment Reff (from</p><p>Payment Channel).</p><p>Mandatory when payment</p><p>Happened</p></td></tr><tr><td>     merchantId<mark style="color:red;">*</mark></td><td>M</td><td>String (5)</td><td>Merchant identifier that is unique per each merchant</td></tr></tbody></table>

{% tabs %}
{% tab title="Query Payment  Request Sample" %}

```json
{
    "originalReferenceNo":"1999971176208743",
    "originalPartnerReferenceNo":"2020102900000000000001",
    "serviceCode":"47",
    "merchantId":"99999",
    "additionalInfo":{
        "channelCode":"711"
    }
}

```

{% endtab %}

{% tab title="Query Payment Response Sample" %}

```json
{
    "responseCode": "2005100",
    "responseMessage": "Request has been processed successfully",
    "originalReferenceNo": "1999971176208743",
    "originalPartnerReferenceNo": "2020102900000000000001",
    "serviceCode": "47",
    "latestTransactionStatus": "00",
    "transactionStatusDesc": "Success",
    "paidTime":"2023-10-03 14:21:03",
    "amount":{
        "value":"1000.00",
        "currency":"IDR"
    }
    "additionalInfo": {
        "paymentReff":"158745496507764240"
        "merchantId": "99999"
    }
}

```

{% endtab %}
{% endtabs %}

### Payment Notification

SNAP (Standar Nasional Open API Pembayaran) is an API standard established by Bank Indonesia for all open payment API services. SNAP includes technical and security standards that must be implemented in every open payment API service. As an implementation of technical and security standards based on SNAP, the following is the technical documentation for the SNAP version of the QRIS MPM Notification API, which can be used as a reference.

{% tabs %}
{% tab title="Request Parameter" %}

<table><thead><tr><th width="250">Parameter</th><th width="95" align="center">M/O/C</th><th width="115" align="center">Data Type</th><th width="95" align="center">Lenght</th><th width="300">Description</th></tr></thead><tbody><tr><td>originalPartnerReferenceNo<mark style="color:red;">*</mark></td><td align="center">M</td><td align="center">String</td><td align="center">64</td><td>Original transaction identifier on service consumer system.  </td></tr><tr><td>originalReferenceNo<mark style="color:red;">*</mark></td><td align="center">M</td><td align="center">String</td><td align="center">64</td><td>Original transaction identifier on service provider system.  </td></tr><tr><td>amount</td><td align="center">O</td><td align="center">Object</td><td align="center"></td><td></td></tr><tr><td>   value</td><td align="center">M</td><td align="center">String</td><td align="center">16,2</td><td><p>Net amount of the transaction   </p><p>If it’s IDR then value includes 2 decimal digits.   <br>e.g. IDR 10,000,- will be placed with 10000,00  </p></td></tr><tr><td>   currency</td><td align="center">M</td><td align="center">String</td><td align="center">3</td><td>Currency (ISO2417).</td></tr><tr><td>additionalInfo</td><td align="center">O</td><td align="center">Object</td><td align="center"></td><td>Additional information for custom use that are not provided by SNAP .</td></tr><tr><td>   paymentDate</td><td align="center">M</td><td align="center">String</td><td align="center">32</td><td></td></tr><tr><td>   channelCode</td><td align="center">M</td><td align="center">String</td><td align="center">32</td><td>Payment Channel Code VA ONLY s to <a href="https://docs.faspay.co.id/merchant-integration/api-reference-1/debit-transaction/reference/payment-channel-code">here</a>.  </td></tr><tr><td>   merchantId</td><td align="center">M</td><td align="center">String</td><td align="center">5</td><td>Merchant identifier that is unique per each merchant .</td></tr><tr><td>latestTransactionStatus</td><td align="center">M</td><td align="center">String</td><td align="center">2</td><td><p>Latest transaction Status: </p><p>00 – Success  </p></td></tr><tr><td>transactionStatusDesc</td><td align="center">O</td><td align="center">Sring</td><td align="center">50</td><td>Description status transaction.</td></tr></tbody></table>
{% endtab %}

{% tab title="Request Sample" %}

```json
{ 
    "originalPartnerReferenceNo": "INV-FEE-102400022-TIP", 
    "originalReferenceNo": "1999971121020591", 
    "amount": 
    { 
        "value": "10000.00", 
        "currency": "IDR" 
    }, 
    "additionalInfo": 
    { 
        "paymentDate": "2025-02-07 09:30:00", 
        "channelCode": "711", 
        "merchantId": "99999" 
    }, 
    "latestTransactionStatus": "00", 
    "transactionStatusDesc": "success" 
} 
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Response Parameter" %}

<table><thead><tr><th width="250">Parameter</th><th width="95" align="center">M/O/C</th><th width="115" align="center">Data Type</th><th width="95" align="center">Lenght</th><th width="300">Description</th></tr></thead><tbody><tr><td>responseCode</td><td align="center">M</td><td align="center">String</td><td align="center">7</td><td>Response Code.</td></tr><tr><td>responseMessage</td><td align="center">M</td><td align="center">String</td><td align="center">150</td><td>Response description .  </td></tr></tbody></table>
{% endtab %}

{% tab title="Response Sample" %}

```json
{ 
    "responseCode": "2005600", 
    "responseMessage": "Request has been processed successfully" 
} 
```

{% endtab %}
{% endtabs %}

## Integration Requirement&#x20;

Integration needs API & Credential Key.

### Response Code

Response status consists of 2 components, the code (response code) and the description (response message).

<table><thead><tr><th width="183">Component</th><th width="125">Type</th><th width="115">Length</th><th>Description</th></tr></thead><tbody><tr><td>responseCode</td><td>String</td><td>7</td><td>response code = HTTP status code + service code + case code </td></tr><tr><td>responseMessage</td><td>String</td><td>150</td><td> </td></tr></tbody></table>

### Response Code List

<table><thead><tr><th width="139">Category</th><th width="107">HTTP Code</th><th width="102">Service Code</th><th width="90">Case Code</th><th width="210">Response Message</th><th width="349">Description</th></tr></thead><tbody><tr><td>Success</td><td>200</td><td>any</td><td>0</td><td>Successful</td><td>Successful</td></tr><tr><td>Success</td><td>202</td><td>any</td><td>0</td><td>Request In Progress</td><td>Transaction still on process</td></tr><tr><td>System</td><td>400</td><td>any</td><td>0</td><td>Bad Request</td><td>General request failed error, including message parsing failed.</td></tr><tr><td>Message</td><td>400</td><td>any</td><td>1</td><td>Invalid Field Format {field name}</td><td>Invalid format</td></tr><tr><td>Message</td><td>400</td><td>any</td><td>2</td><td>Invalid Mandatory Field {field name}</td><td>Missing or invalid format on mandatory field</td></tr><tr><td>System</td><td>401</td><td>any</td><td>0</td><td>Unauthorized. [reason]</td><td><p>General unauthorized error (No Interface Def,</p><p>API is Invalid, Oauth</p><p>Failed, Verify Client</p><p>Secret Fail, Client</p><p>Forbidden Access API,</p><p>Unknown Client, Key not</p><p>Found)</p></td></tr><tr><td>System</td><td>401</td><td>any</td><td>1</td><td>Invalid Token (B2B)</td><td><p>Token found in request is invalid (Access Token Not Exist, Access Token</p><p>Expiry)</p></td></tr><tr><td>System</td><td>401</td><td>any</td><td>2</td><td>Invalid Customer Token</td><td><p>Token found in request is invalid (Access Token Not Exist, Access Token</p><p>Expiry)</p></td></tr><tr><td>System</td><td>401</td><td>any</td><td>3</td><td>Token Not Found (B2B)</td><td>Token not found in the system. This occurs on any API that requires token as input parameter</td></tr><tr><td>System</td><td>401</td><td>any</td><td>4</td><td>Customer Token Not Found</td><td>Token not found in the system. This occurs on any API that requires token as input parameter</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>0</td><td>Transaction Expired</td><td>Transaction expired</td></tr><tr><td>System</td><td>403</td><td>any</td><td>1</td><td>Feature Not Allowed [Reason]</td><td>This merchant is not allowed to call Direct Debit APIs</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>2</td><td>Exceeds Transaction Amount Limit</td><td>Exceeds Transaction Amount Limit</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>3</td><td>Suspected Fraud</td><td>Suspected Fraud</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>4</td><td>Activity Count Limit Exceeded</td><td><p>Too many request,</p><p>Exceeds Transaction Frequency Limit</p></td></tr><tr><td>Business</td><td>403</td><td>any</td><td>5</td><td>Do Not Honor</td><td>Account or User status is abnormal</td></tr><tr><td>System</td><td>403</td><td>any</td><td>6</td><td>Feature Not Allowed At This Time. [reason]</td><td>Cut off In Progress</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>7</td><td>Card Blocked</td><td>The payment card is blocked</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>8</td><td>Card Expired</td><td>The payment card is expired</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>9</td><td>Dormant Account</td><td>The account is dormant</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>10</td><td><p>Need To Set Token</p><p>Limit</p></td><td>Need to set token limit</td></tr><tr><td>System</td><td>403</td><td>any</td><td>11</td><td>OTP Blocked</td><td>OTP has been blocked</td></tr><tr><td>System</td><td>403</td><td>any</td><td>12</td><td>OTP Lifetime Expired</td><td>OTP has been expired</td></tr><tr><td>System</td><td>403</td><td>any</td><td>13</td><td>OTP Sent To Cardholer</td><td>initiates request OTP to the issuer</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>14</td><td>Insufficient Funds</td><td>Insufficient Funds</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>15</td><td><p>Transaction Not</p><p>Permitted.[reason]</p></td><td>Transaction Not Permitted</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>16</td><td>Suspend Transaction</td><td>Suspend Transaction</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>17</td><td>Token Limit Exceeded</td><td>Purchase amount exceeds the token limit set prior</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>18</td><td><p>Inactive</p><p>Card/Account/Customer</p></td><td>Indicates inactive account</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>19</td><td>Merchant Blacklisted</td><td>Merchant is suspended from calling any APIs</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>20</td><td>Merchant Limit Exceed</td><td><p>Merchant aggregated purchase amount on that</p><p>day exceeds the agreed limit</p></td></tr><tr><td>Business</td><td>403</td><td>any</td><td>21</td><td>Set Limit Not Allowed</td><td>Set limit not allowed on particular token</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>22</td><td>Token Limit Invalid</td><td>The token limit desired by the merchant is not within the agreed range between the merchant and the Issuer</td></tr><tr><td>Business</td><td>403</td><td>any</td><td>23</td><td>Account Limit Exceed</td><td><p>Account aggregated purchase amount on that</p><p>day exceeds the agreed limit</p></td></tr><tr><td>Business</td><td>404</td><td>any</td><td>0</td><td>Invalid Transaction Status</td><td>Invalid transaction status</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>1</td><td>Transaction Not Found</td><td>Transaction not found</td></tr><tr><td>System</td><td>404</td><td>any</td><td>2</td><td>Invalid Routing</td><td>Invalid Routing</td></tr><tr><td>System</td><td>404</td><td>any</td><td>3</td><td>Bank Not Supported By Switch</td><td>Bank not supported by switch</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>4</td><td>Transaction Cancelled</td><td>Transaction is cancelled by customer</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>5</td><td><p>Merchant Is Not</p><p>Registered For Card</p><p>Registration Services</p></td><td>Merchant is not registered for Card Registration services</td></tr><tr><td>System</td><td>404</td><td>any</td><td>6</td><td>Need To Request OTP</td><td>Need to request OTP</td></tr><tr><td>System</td><td>404</td><td>any</td><td>7</td><td>Journey Not Found</td><td>The journeyID cannot be found in the system</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>8</td><td>Invalid Merchant</td><td>Merchant does not exist or status abnormal</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>9</td><td>No Issuer</td><td>No issuer</td></tr><tr><td>System</td><td>404</td><td>any</td><td>10</td><td>Invalid API Transition</td><td>Invalid API transition within a journey</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>11</td><td><p>Invalid</p><p>Card/Account/Customer</p><p>[info]/Virtual Account</p></td><td><p>Card information may be invalid, or the card account may be</p><p>blacklisted, or Virtual</p><p>Account number maybe invalid.</p></td></tr><tr><td>Business</td><td>404</td><td>any</td><td>12</td><td>Invalid Bill/Virtual Account [Reason]</td><td>The bill is blocked/ suspended/not found. Virtual account is suspend/not found.</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>13</td><td>Invalid Amount</td><td>The amount doesn't match with what supposed to</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>14</td><td>Paid Bill</td><td>The bill has been paid</td></tr><tr><td>System</td><td>404</td><td>any</td><td>15</td><td>Invalid OTP</td><td>OTP is incorrect</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>16</td><td>Partner Not Found</td><td>Partner number can't be found</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>17</td><td>Invalid Terminal</td><td>Terminal does not exist in the system</td></tr><tr><td>Business</td><td>404</td><td>any</td><td>18</td><td>Inconsistent Request</td><td><p>Inconsistent request parameter found for the same partner reference number/transaction id It can be considered as failed in transfer debit, but it should be considered as success in transfer credit.</p><p> </p><p>Considered as success:</p><p>'- Transfer credit = (i)</p><p>Intrabank transfer; (ii)</p><p>Interbank transfer; (iii)</p><p>RTGS transfer; (iv)</p><p>SKNBI transfer;</p><p>'- Virtual account = (i)</p><p>Payment VA; (ii)</p><p>Payment to VA;</p><p>'- Transfer debit = (i) Refund payment; (ii)</p><p>Void;</p><p> </p><p>Considered as failed:</p><p>'- Transfer credit = (i)</p><p>Transfer to OTC;</p><p>'- Transfer debit = (i)</p><p>Direct debit payment; (ii)</p><p>QR CPM payment; (iii)</p><p>Auth payment; (iv)</p><p>Capture;</p></td></tr><tr><td>Business</td><td>404</td><td>any</td><td>19</td><td><p>Invalid Bill/Virtual</p><p>Account</p></td><td>The bill is expired.  Virtual account is expired.</td></tr><tr><td>System</td><td>405</td><td>any</td><td>0</td><td>Requested Function Is Not Supported</td><td>Requested function is not supported</td></tr><tr><td>Business</td><td>405</td><td>any</td><td>1</td><td>Requested Opearation Is Not Allowed</td><td>Requested operation to cancel/refund transaction Is not allowed at this time.</td></tr><tr><td>System</td><td>409</td><td>any</td><td>0</td><td>Conflict</td><td>Cannot use same XEXTERNAL-ID in same day</td></tr><tr><td>System</td><td>409</td><td>any</td><td>1</td><td>Duplicate partnerReferenceNo</td><td><p>Transaction has previously been processed indicates the same</p><p>partnerReferenceNo already success</p></td></tr><tr><td>System</td><td>429</td><td>any</td><td>0</td><td>Too Many Requests</td><td>Maximum transaction limit exceeded</td></tr><tr><td>System</td><td>500</td><td>any</td><td>0</td><td>General Error</td><td>General Error</td></tr><tr><td>System</td><td>500</td><td>Any</td><td>1</td><td>Internal Server Error</td><td>Unknown Internal Server Failure, Please retry the process again</td></tr><tr><td>System</td><td>500</td><td>Any</td><td>2</td><td>External Server Error</td><td>Backend system failure, etc</td></tr><tr><td>System</td><td>504</td><td>any</td><td>0</td><td>Timeout</td><td>timeout from the issuer</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.faspay.co.id/merchant-integration/api-reference-1/snap/snap-qris.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
