Developers

Dokumentasi API

Tipzy sebagai Payment Gateway — buat transaksi dan cek status lewat API Key. Pembayaran masuk ke akun pemilik key. Tidak ada endpoint topup.

Autentikasi

Sertakan API Key pada setiap request melalui header Authorization. Key hanya dapat digunakan dari alamat IP yang diizinkan jika kamu mengatur pembatasan IP saat membuat key.

Base URL

https://api.tipzy.id

Header (wajib)

Authorization: Bearer <api-key>

Header (disarankan)

User-Agent: <app-name>/1.0

Callback URL & Redirect URL

Diatur sekali di halaman API Key, berlaku otomatis untuk setiap pembayaran yang dibuat dengan key tersebut. Tidak dikirim sebagai body request.

Redirect URL

Ke mana pembayar diarahkan di halaman sukses setelah pembayaran berhasil. Kosongkan untuk memakai halaman Tipzy bawaan.

Callback URL

Tipzy mengirim satu kali HTTP POST ke URL ini (harus https://, tidak boleh alamat internal) setiap pembayaran sukses lewat key ini.

Contoh body callback

{
  "event": "payment.success",
  "data": {
    "id": "01HXYZ…",
    "status": "success",
    "amount": 50000,
    "payment_method": "qris",
    "payment_url": "https://tipzy.id/donation/transaction/01HXYZ…",
    "status_page_url": "https://tipzy.id/donation/transaction/01HXYZ…/status",
    "created_at": "2026-08-11T06:30:00.000Z",
    "paid_at": "2026-08-11T06:31:12.000Z",
    "payer_name": "Budi",
    "payer_email": "budi@email.com",
    "message": "Pembayaran order #123"
  }
}

Memvalidasi Callback

Apabila Callback Secret diisi, body callback ditandatangani dengan HMAC SHA-256 pada header X-Tipzy-Signature. Contoh di Node.js:

const crypto = require("crypto");

const computedSignature = crypto
  .createHmac("sha256", callbackSecret)
  .update(JSON.stringify(callbackBody))
  .digest("hex");

return crypto.timingSafeEqual(
  Buffer.from(computedSignature),
  Buffer.from(tipzySignatureFromHeader)
);

POST /api/v1/gateway/transactions

Buat Transaksi

Membuat transaksi pembayaran ke akun pemilik API Key. Arahkan pembayar ke payment_url untuk menyelesaikan pembayaran. Pembayaran via Saldo Tipzy tidak tersedia untuk API Key.

namestring

Nama pembayar

emailstring

Email pembayar

amountnumber

Nominal IDR (min sesuai setting Tipzy)

payment_channelstring

Mis. QRIS (channel Xendit yang aktif)

payment_countrystring

Opsional, default ID

messagestring

Opsional

phonestring

Wajib untuk channel tertentu (ewallet)

Contoh request

curl -X POST https://api.tipzy.id/api/v1/gateway/transactions \
  -H "Authorization: Bearer <api-key>" \
  -H "User-Agent: MyApp/1.0" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Budi",
  "email": "budi@email.com",
  "amount": 50000,
  "payment_channel": "QRIS",
  "message": "Pembayaran order #123"
}'

Contoh response 201

{
  "success": true,
  "result": {
    "success": true,
    "transaction_id": "01HXYZ…",
    "payment_url": "https://tipzy.id/donation/transaction/01HXYZ…",
    "status": "pending",
    "amount": 50000,
    "payment_method": "qris",
    "created_at": "2026-08-11T06:30:00.000Z"
  }
}

GET /api/v1/gateway/transactions/{transaction_id}

Status Transaksi

Mengambil detail dan status transaksi berdasarkan transaction_id. API Key hanya dapat melihat transaksi yang dibuat dengan key yang sama. Status: pending, paid, expired, cancelled.

Contoh request

curl https://api.tipzy.id/api/v1/gateway/transactions/<transaction_id> \
  -H "Authorization: Bearer <api-key>" \
  -H "User-Agent: MyApp/1.0"

Contoh response 200

{
  "success": true,
  "result": {
    "id": "01HXYZ…",
    "status": "pending",
    "amount": 50000,
    "payment_method": "qris",
    "payment_url": "https://tipzy.id/donation/transaction/01HXYZ…",
    "status_page_url": "https://tipzy.id/donation/transaction/01HXYZ…/status",
    "redirect_url": null,
    "payer_name": "Budi",
    "payer_email": "budi@email.com",
    "message": "Pembayaran order #123",
    "created_at": "2026-08-11T06:30:00.000Z",
    "paid_at": null
  }
}