JustPay

API Documentation

Integrate JustPay into your platform to accept QRIS payments instantly.

Base URL

Use this base URL for all API endpoints in Production:

https://api.sdmcompany.id/v1

For Sandbox/Testing environment:

https://sandbox.api.sdmcompany.id/v1

Authentication

Authenticate your API requests by including your secret API Key in the Authorization header.

Authorization: Bearer YOUR_API_KEY

You can generate and manage your API keys in the API Settings menu. Keep your secret keys secure and never share them publicly.

API Endpoints

POST/qris/generate

Generate a new dynamic QRIS code for payment.

Request Body

{
  "amount": 50000,
  "notes": "Order-123", // Optional
  "expires_in": 900     // Optional (seconds)
}

Response

200 OK
{
  "status": "success",
  "data": {
    "qris_id": "req-a1b2c3d4",
    "qris_string": "00020101021226590014...",
    "amount": 50000,
    "status": "PENDING",
    "expired_at": "2026-05-24T15:00:00Z"
  }
}

Code Examples

cURL
curl -X POST https://api.sdmcompany.id/v1/qris/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 50000,
    "notes": "Order-123"
  }'
Node.js (fetch)
const response = await fetch('https://api.sdmcompany.id/v1/qris/generate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ amount: 50000, notes: 'Order-123' })
});
const data = await response.json();

Webhook Integration

Webhooks allow you to receive real-time notifications when a payment is detected in your Grab Merchant account. Configure your endpoint URL in the Settings page.

Important: The net_amount automatically subtracts the 0.7% MDR fee charged by Grab. Use this value for your accounting to avoid discrepancies.

Webhook Payload (POST)

{
  "event": "payment_received",
  "data": {
    "transaction_id": "tx-a1b2c3d4-1682345678",
    "qris_id": "req-a1b2c3d4",
    "amount": 50000,
    "net_amount": 49650,
    "paid_at": "2026-05-23T10:45:00.000Z"
  }
}