Developer

API yang benar-benar akan disukai tim Anda

REST yang dapat diprediksi, kunci idempotensi, webhook bertanda tangan, dan sandbox dengan jalur tersimulasi sehingga Anda dapat berintegrasi end-to-end sebelum satu franc pun berpindah.

Buat akun
Dibangun untuk developer

Penerimaan pertama Anda dalam satu permintaan

REST yang bersih, amplop JSON yang dapat diprediksi, dan request id di setiap respons. Sandbox mencerminkan produksi: API sama, status sama, webhook sama.

  • Kunci sandbox dan produksi, dibatasi per aplikasi
  • Webhook bertanda tangan HMAC dengan perlindungan replay
  • Kunci idempotensi di setiap panggilan yang memindahkan uang
  • Error bertipe yang memberi tahu persis apa yang harus diperbaiki
  • Spesifikasi OpenAPI, koleksi Postman, dan llms.txt, semuanya sudah terbit
  • Sesi checkout terhosting dan callback datar untuk konektor CRM, ERP, dan toko
POST /v1/collections
curl https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: 9f1c-collect-01" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "2376XXXXXXXX",
    "merchant_reference": "order-1042"
  }'
201 Created
{
  "status": "success",
  "data": {
    "id": "col_9xKQ2mD41Vb8",
    "object": "collection",
    "status": "pending",
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "merchant_reference": "order-1042",
    "fees": {
      "platform_fee": "50",
      "provider_fee": "0",
      "total_fee": "50",
      "bearer": "merchant"
    },
    "net_amount": null,
    "livemode": false,
    "created_at": "2026-08-30T12:04:11Z"
  },
  "request_id": "req_b0f3d2c1"
}

Penerimaan pertama Anda

Satu permintaan membuat niat pembayaran, mengembalikan request id dan, untuk uang seluler, mendorong permintaan ke ponsel pembayar. Sandbox berperilaku persis seperti produksi.

Ambil kunci uji AndaBuat akun dan kunci sandbox langsung muncul di halaman developer Anda. Kunci produksi terbuka setelah verifikasi bisnis.
POST /v1/collections
curl -X POST https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_XXXXXXXXXXXX" \
  -H "Idempotency-Key: col-order-10482-a1b2c3" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "5000",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "+237650000001",
    "merchant_reference": "order-10482"
  }'
Respons
{
  "status": "success",
  "data": {
    "id": "col_7Qm3k1Xa9Zr4",
    "object": "collection",
    "status": "pending",
    "amount": "5000",
    "currency": "XAF",
    "auth_model": "STK_PROMPT",
    "livemode": false
  },
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
201 Created
Nominal berupa string desimal di batas API dan unit terkecil di buku besar, jadi tidak ada yang hilang karena floating point. Setiap panggilan yang memindahkan uang menerima kunci idempotensi dan setiap respons membawa request id yang bisa Anda sebutkan ke dukungan.

SDK server

Pembungkus tipis bertipe di atas REST API yang sama, dengan idempotensi dan verifikasi tanda tangan sudah termasuk.

TypeScript and NodeSegera terbit@capay/sdk
Import
import { Capay } from '@capay/sdk';

Belum ada di npm. Baris import di atas sudah final, jadi integrasi Anda tidak berubah saat dirilis.

Baca panduan
PythonSegera terbitcapay
Import
from capay import Capay

Belum ada di PyPI. Baris import di atas sudah final, jadi integrasi Anda tidak berubah saat dirilis.

Baca panduan
PHPSegera terbitcapay/capay-php
Import
use Capay\CapayClient;

Belum ada di Packagist. Baris import di atas sudah final, jadi integrasi Anda tidak berubah saat dirilis.

Baca panduan

Verifikasi setiap webhook

Tanda tangan dihitung atas isi mentah dan dibandingkan dalam waktu konstan, dan stempel waktu yang lebih tua dari 300 detik ditolak. Jangan pernah percaya webhook yang belum Anda verifikasi.

X-Capay-Signature
# T is the t= value from X-Capay-Signature; delivery.json is the raw body as received.
T=1767225600
SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

{ printf '%s.' "$T"; cat delivery.json; } \
  | openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1
# Compare the printed hex with each v1= value in the header (either may match
# during a secret rotation), and reject the delivery if |now - T| > 300 s.
Header tanda tangan
X-Capay-Signature: t=1767225600,v1=6f8b4c2d9e0a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f0a2b4c6d8e0f1a3b5c
X-Capay-Event-Id: evt_2n4Kq8Zr41Xa
X-Capay-Event-Type: collection.completed
Pengiriman dan percobaan ulang

Pengiriman yang gagal diulang pada jadwal tetap: 1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h. Endpoint yang gagal 8 kali berturut turut dinonaktifkan dan Anda diberi tahu, sehingga endpoint mati tidak diam diam menelan event.

Dua rahasia penandatanganan bisa aktif sekaligus, jadi Anda bisa merotasi tanpa kehilangan event. Tolak apa pun di luar jendela 300 detik dan simpan id event agar pengiriman ulang tidak berbahaya.

Sisa perangkatnya

Spesifikasi yang bisa dibaca mesin, koleksi yang bisa Anda impor, dan alat yang membacanya.

llms.txtSeluruh dokumentasi diratakan untuk asisten koding, agar AI Anda menjawab tentang API kami dari teks kami sendiri.Spesifikasi OpenAPIKontrak lengkap, dihasilkan dari API. Impor untuk membangun klien dalam bahasa apa pun.Koleksi PostmanSetiap endpoint dengan contoh isi dan variabel lingkungan, siap dijalankan terhadap sandbox.
Baris perintahSegeraBuat pembayaran uji, ikuti event, dan putar ulang webhook ke mesin lokal Anda.@capay/cli
Server MCPSegeraBeri asisten koding Anda akses baca ke sandbox agar ia menjawab dengan data nyata Anda.@capay/mcp
Skrip pembayaranSegeraBuka halaman pembayaran dalam jendela di atas halaman Anda sendiri alih alih mengalihkan.https://pay.capayglobal.com/capay.js

Mulai terima pembayaran di seluruh Afrika hari ini

Buat akun gratis, bangun di sandbox, dan go live setelah verifikasi.

Buat akun

Ceritakan koridor dan volume Anda kapan saja.