MUTA API Docs

Pengenalan

Selamat datang di dokumentasi API Muta Payment Gateway. API ini dirancang dengan gaya RESTful yang memudahkan aplikasi Anda (Toko Online, ERP, Sistem Kasir) untuk menerima pembayaran menggunakan transfer bank dan QRIS secara otomatis.

Base URL Production: https://api.muta.my.id/api/v1

Autentikasi

Setiap request ke API Muta harus menggunakan autentikasi berupa API Key. Anda dapat membuat API Key melalui dashboard Muta di menu Developer / API Settings.

Kirimkan API Key pada header HTTP Authorization dengan skema Bearer.

Authorization: Bearer m_live_xxxxxxxxxxxxxxxxxxxxxx
POST

Buat Transaksi (Payment Link)

Endpoint ini digunakan untuk membuat tagihan baru. Muta akan mengembalikan URL halaman checkout yang dapat Anda tampilkan ke pelanggan untuk melakukan pembayaran.

Endpoint URL

POST /transactions

Request Parameters (JSON)

  • order_id Required

    String (Max: 50). ID pesanan unik dari sistem Anda.

  • amount Required

    Integer. Jumlah nominal tagihan (tanpa desimal).

  • customer_name Required

    String. Nama lengkap pelanggan.

  • return_url Optional

    String. URL untuk mengarahkan pelanggan kembali setelah pembayaran selesai.

Contoh Request

{
  "order_id": "INV-20231001-001",
  "amount": 150000,
  "customer_name": "Budi Santoso",
  "customer_email": "budi@example.com",
  "return_url": "https://toko-anda.com/order/success"
}

Contoh Response (200 OK)

{
  "success": true,
  "message": "Transaction created successfully",
  "data": {
    "transaction_id": "MUTA-TRX-827364823",
    "order_id": "INV-20231001-001",
    "amount": 150000,
    "checkout_url": "https://api.muta.my.id/payment/MUTA-TRX-827364823"
  }
}
GET

Cek Status Transaksi

Meskipun kami mengirimkan Webhook, Anda dapat menggunakan endpoint ini untuk mengecek status transaksi secara manual menggunakan `order_id` Anda.

Endpoint URL

GET /transactions/{order_id}

Path Variables

  • order_id

    ID pesanan yang Anda kirimkan saat membuat transaksi.

Contoh Response

{
  "success": true,
  "data": {
    "transaction_id": "MUTA-TRX-827364823",
    "order_id": "INV-20231001-001",
    "amount": 150000,
    "status": "PAID",
    "paid_at": "2023-10-01T14:30:00Z",
    "payment_channel": "BCA_VIRTUAL_ACCOUNT"
  }
}

Notifikasi Webhook (Callback)

Agar sistem Anda terupdate otomatis secara real-time (tanpa harus memanggil API terus menerus), Muta akan mengirimkan HTTP POST request ke URL Webhook Anda ketika ada perubahan status pembayaran (contoh: Pelanggan telah membayar tagihan).

Anda dapat mengatur URL Webhook ini di halaman Dashboard Muta pada menu API & Webhook. Muta mengekspektasikan response dengan HTTP Status 200 OK dari server Anda.

Contoh Payload dari Muta ke Server Anda:

{
  "event": "payment.success",
  "transaction_id": "MUTA-TRX-827364823",
  "order_id": "INV-20231001-001",
  "amount": 150000,
  "status": "PAID",
  "paid_at": "2023-10-01T14:30:00Z"
}

Validasi Keamanan Webhook (Signature)

Untuk memastikan bahwa webhook benar-benar dikirimkan oleh Muta (bukan dari pihak yang tidak bertanggung jawab), Anda diwajibkan memvalidasi signature.

Muta mengirimkan header X-Muta-Signature pada setiap permintaan Webhook. Signature ini dihasilkan menggunakan algoritma HMAC-SHA256.

Formula Signature

signature = HMAC_SHA256( payload_body_raw, Webhook_Secret_Key )

Contoh Validasi (PHP)

<?php
$secretKey = 'your_webhook_secret_key'; // Dari Dashboard Muta

$payload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_MUTA_SIGNATURE'] ?? '';

// Generate hash
$calculatedSignature = hash_hmac('sha256', $payload, $secretKey);

if (hash_equals($calculatedSignature, $signatureHeader)) {
    // Valid! Lakukan update status order di database Anda
    $data = json_decode($payload, true);
    
    if ($data['status'] === 'PAID') {
        // Proses pesanan
    }
    
    http_response_code(200);
    echo json_encode(['status' => 'OK']);
} else {
    // Invalid Signature
    http_response_code(403);
    echo json_encode(['status' => 'Forbidden']);
}
?>