payments
Sekalipay
api

Dokumentasi API

Panduan lengkap integrasi Sekalipay Payment Gateway ke dalam aplikasi bisnis Anda. Aman, cepat, dan mudah diimplementasikan.

Pengantar

API Sekalipay memungkinkan Anda untuk menerima pembayaran secara otomatis dan real-time. API kami dirancang dengan prinsip RESTful, menggunakan respons JSON standar, dan kode status HTTP konvensional.

Catatan: Semua request ke API harus menggunakan protokol HTTPS. Request HTTP biasa akan ditolak untuk keamanan data transaksi Anda.

Otentikasi & Keamanan

Keamanan adalah prioritas utama kami. Untuk menggunakan API Sekalipay, Anda memerlukan kredensial yang dapat diperoleh di Dashboard Merchant. Selain itu, kami menerapkan IP Whitelist untuk memastikan request hanya berasal dari server Anda.

key API Key

Digunakan untuk identifikasi merchant.

lock Secret Key

Digunakan untuk membuat signature request. Jangan pernah membagikan key ini!

Membuat Signature

Setiap request POST (seperti membuat pembayaran atau penarikan) memerlukan header X-Signature. Signature dibuat menggunakan HMAC-SHA256 dari body request JSON dengan Secret Key Anda.

PHP Example
    // Payload body (JSON string)
    $body = json_encode([
        'merchant_ref_id' => 'TRX-123456',
        'amount' => 100000,
        // ... other fields
    ]);

    // Your Secret Key from Dashboard
    $secretKey = 'sk_live_...';

    // Generate Signature
    $signature = hash_hmac('sha256', $body, $secretKey);

    // Send Request
    $response = Http::withHeaders([
        'Content-Type' => 'application/json',
        'X-Signature' => $signature
    ])->post('https://sekalipay.com/api/v1/gateway/payment', json_decode($body, true));
    

Base URL

https://sekalipay.com/api/v1/gateway
GET

/merchant/info

Mendapatkan informasi akun merchant Anda, termasuk saldo aktif dan status akun.
Auth: IP Whitelist only (No signature required)

Response Example (200 OK)
    {
        "status": 1,
        "rc": 200,
        "message": "Success",
        "data": {
            "merchant_code": "MCH-A1B2C3",
            "nama_toko": "Toko Online Saya",
            "saldo_tersedia": 1500000,
            "saldo_tertahan": 250000,
            "total_revenue": 15000000,
            "status": "active",
            "is_sandbox": false
        },
        "ts": 1703395200
    }
    
POST

/payment

Membuat transaksi pembayaran baru. Rate limit: 10 request/menit.
Requires Signature

Request Body

Field Type Required Description
merchant_ref_id string Yes ID unik referensi dari sistem Anda (Max 50 char)
amount integer Yes Nominal pembayaran (Min sesuai metode pembayaran)
payment_code string Yes Kode metode pembayaran (e.g., 'QRIS', 'VA_BCA')
customer_name string Yes Nama pelanggan
customer_email string Yes Email pelanggan untuk notifikasi
Response Example (201 Created)
    {
        "status": true,
        "message": "OK",
        "data": {
            "merchant_ref_id": "TRX-123456",
            "invoice": "INV/20231224/KWL/12345",
            "amount": 100000,
            "fee": 700,
            "total": 100700,
            "payment_code": "QRIS",
            "payment_link": "https://sekalipay.com/payment/INV...",
            "qr_link": "https://qr.sekalipay.com/...",
            "expired_at": "2023-12-24T15:30:00.000000Z",
            "status": "pending",
            "is_sandbox": false
        }
    }
    
GET

/payment/{merchant_ref_id}

Mengecek status pembayaran berdasarkan merchant_ref_id Anda. Rate limit: 30 request/menit.

Response Example (200 OK)
    {
        "status": true,
        "message": "OK",
        "data": {
            "merchant_ref_id": "TRX-123456",
            "invoice": "INV/20231224/KWL/12345",
            "status": "paid",
            "amount": 100000,
            "fee": 700,
            "total": 100700,
            "created_at": "2023-12-24T15:00:00.000000Z",
            "paid_at": "2023-12-24T15:05:12.000000Z"
        }
    }
    
GET

/payment-methods

Mendapatkan daftar metode pembayaran yang aktif beserta informasi biaya dan limit.

Response Example (200 OK)
    {
        "status": true,
        "message": "OK",
        "data": [
            {
                "payment_code": "QRIS",
                "payment_name": "QRIS",
                "payment_type": "QRIS",
                "min_amount": 1000,
                "max_amount": 5000000,
                "fee_info": {
                    "type": "percent",
                    "description": "0.7%"
                }
            },
            // ... more methods
        ]
    }
    
POST

/withdrawal

Mengajukan penarikan dana ke rekening bank terdaftar. Rate limit: 5 request/menit.
Requires Signature

Syarat: Rekening bank harus sudah diverifikasi di dashboard. Min penarikan Rp 50.000. Biaya admin Rp 7.500.

Request Body
    {
        "amount": 500000 // Nominal bersih yang ingin diterima
    }
    
Response Example (200 OK)
    {
        "status": true,
        "message": "Withdrawal request submitted successfully",
        "data": {
            "settlement_id": 123,
            "net_amount": 500000,
            "withdrawal_fee": 7500,
            "total_deducted": 507500,
            "status": "pending",
            "estimated_processed_at": "2023-12-25 15:30:00"
        }
    }