DOKUMENTASI PENGEMBANG

Dokumentasi API

Integrasikan faktur, checkout, dan notifikasi pembayaran.

Panduan cepat

Buat faktur pertamamu.

  1. Siapkan toko

    Aktifkan metode pembayarannya, konfigurasikan penyedia, dan cadangkan dompet proyek.

  2. Buat kredensial API

    Di Pengaturan → Akses API konsolmu, pilih baca/tulis dan tetapkan proyek.

  3. Kirim permintaan

    Gunakan host API-mu dan salin ID proyek dan tokomu. Kirim jumlah desimal sebagai string.

  4. Buka checkout

    Alihkan ke links.checkout dari respons. Verifikasi penyelesaian sebelum memenuhi pesanan.

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new invoice.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: order-1042-attempt-1' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "amount": "49.90",
  "currency": "USD",
  "order_id": "order-1042",
  "exchange_rate_spread_percent": "0.5"
}'

Contoh menggunakan placeholder dan tidak mengirim permintaan dari halaman ini. Lihat setiap kolom faktur dan format respons →

ID proyek & toko

Tempat menemukan YOUR_PROJECT_ID dan YOUR_STORE_ID.

Gunakan UUID dari konsolmu, bukan nama proyek atau toko maupun pengenal yang mudah dibacanya.

PlaceholderTempat menemukannyaDigunakan untuk
YOUR_PROJECT_IDProyek → Pengaturan → ID API → ID API Proyek → Salin. Juga ditampilkan di tab Dasar toko.Permintaan tingkat proyek dan tingkat toko.
YOUR_STORE_IDProyek → Toko → pilih toko → Dasar → ID API → ID API Toko → Salin.Pembuatan faktur dan permintaan metode pembayaran toko.
  • Pembuatan faktur memerlukan kedua ID, bahkan untuk toko bawaan. Toko harus menjadi bagian dari proyek tersebut, dan kredensial API harus memiliki akses ke proyek.
  • Pembuatan, daftar, detail faktur, dan checkout mengembalikan invoice_id: UUID yang sama dengan yang dikirim dalam IPN/webhook. Gunakan dalam path faktur, bukan id internal atau order_id. Sejak merchant 4.0.0, kolom respons public_id lama dihapus; perbarui integrasi sebelum memperbarui versi.
  • REST API tidak menyediakan rute daftar proyek/toko. Salin ID di konsol, atau gunakan alat MCP list_projects dan list_stores dengan cakupan terbatas di merchant 5.0.0+.
  • Toko → Dasar → Domain toko memilih nama host merchant, pay, dan API yang aktif. Tautan checkout yang dikembalikan dan tautan callback baru mengutamakan toko tersebut, lalu toko bawaan, lalu pengaturan bawaan sistem. Nama yang dihentikan atau belum diaktifkan tidak pernah dipilih. Konfigurasikan SDK dengan nama host API pilihanmu; mengubah preferensi tidak mengalihkan alias aktif lainnya.

Autentikasi & cakupan

Simpan kredensial di servermu dan berikan hanya akses yang diperlukan.

Host bawaanTujuan
merchant.example.comKonsol merchant dan Pengaturan
pay.example.comCheckout pelanggan
api.example.comPermintaan API merchant

Ganti example.com dengan domainmu. Instalasi yang ada mempertahankan nama yang dikonfigurasi; kelola alias di Pengaturan → Sistem.

Authorization: Bearer YOUR_MERCHANT_API_TOKEN
PengaturanCara kerjanya
Tingkat aksesKredensial hanya baca bisa menampilkan daftar dan mengambil data. Kredensial baca/tulis juga bisa membuat faktur dan memperbarui kebijakan aset yang didokumentasikan.
ProyekTetapkan proyek yang boleh diakses kredensial. ID toko dan faktur harus milik proyek yang ditetapkan.
Pembatasan IPJika mau, izinkan alamat egress IPv4 atau IPv6 publik secara persis di Pengaturan → Akses API.
Penyimpanan kredensialSimpan token dalam konfigurasi backend-mu. Jangan pernah menyertakan kredensial bearer dalam browser atau tautan checkout.

Rute checkout publik menggunakan ID publik faktur dan hanya menampilkan data yang aman untuk checkout. Sesi konsol dan kontrol administratif terpisah dari kredensial API merchant.

Aset & dompet

Pilih metode pembayaran secara terpisah untuk setiap toko.

  1. Baca aset pembayaran proyek dan kesiapannya.
  2. Aktifkan blockchain native dan konfigurasikan dompet serta penyedianya.
  3. Jelajahi kandidat token dan verifikasi kontrak atau mint sebelum mengaktifkan token.
  4. Pilih urutan metode pembayarantoko. Faktur baru menggunakan pilihan yang siap digunakan.

Token berbagi dompet blockchain native-nya. Saldo dompet mengembalikan jumlah atomik presisi dan nilai fiat sebagai referensi. Gunakan kolom kesiapan yang dikembalikan untuk menentukan metode yang bisa menerima pembayaran.

Token ERC-20 terverifikasi menggunakan jaringan EVM yang didukung; token SPL terverifikasi menggunakan Solana. Metode pembayaran native tersedia di 30 jaringan terintegrasi. Monero menggunakan koneksi dompet hanya lihat eksternal yang terikat ke proyek.

API penerimaan dan cakupan native/token
Jalur pembayaranDukunganBuktiPersyaratan
Jalur pembayaran nativedidukungDipindai per transaksiBTC, SOL, ETH (Ethereum/Base/Arbitrum/OP), BNB, HYPE, AVAX, dan POL; output Bitcoin, transaksi/receipt EVM kanonis, serta transfer Solana yang diparsing menyediakan bukti faktur.
Jalur token ERC-20didukungDipindai per transaksiEthereum, Base, BNB Chain, HyperEVM, Avalanche, Polygon, Arbitrum, dan Optimism memerlukan verifikasi on-chain; log Transfer yang diindeks menyediakan atribusi pembayaran.
Jalur token SPLdidukungDipindai per transaksiKandidat Solana memerlukan verifikasi mainnet dan mint; perubahan saldo token yang presisi dalam transaksi yang diparsing menyediakan atribusi pembayaran.
Jalur native UTXO tambahandidukungDipindai per transaksiBCH/LTC/DOGE menggunakan Esplora; BCH/DOGE juga menerima Bitcore, LTC/DOGE/DASH menerima BlockCypher, Dash menerima Insight, dan ZEC transparan menerima zcash-explorer. Semuanya juga menerima blok node-rpc kompatibel Core yang disimpan lengkap. Mode mentah memerlukan 1–48 konfirmasi, bukan deteksi mempool. Zcash terlindung tidak didukung.
Jalur native akun terindeksdidukungDipindai per transaksiTRON menggunakan tron-indexer atau node-rpc tersolidifikasi; XRP menggunakan xrpl-jsonrpc; Stellar menggunakan stellar-horizon atau buku besar node-rpc Stellar yang disimpan; Cosmos Hub menggunakan cometbft-jsonrpc; Algorand menggunakan algorand-indexer atau node-rpc algod; Hedera memerlukan hedera-mirror, bukan relay EVM.
Jalur pembayaran buku besar nativedidukungDipindai per transaksiAptos menggunakan aptos-rest; Sui menggunakan sui-graphql; NEAR menggunakan near-jsonrpc; Kaspa menggunakan kaspa-rest. Polkadot Asset Hub menerima substrate-rest atau node-rpc final yang memahami metadata; Tezos menerima tezos-tzkt atau operasi node-rpc Octez lengkap. Hanya penerimaan native; retensi arsip diperlukan untuk faktur lama.
Jalur native Cardano dan TONdidukungDipindai per transaksiCardano memerlukan cardano-koios dan TON memerlukan toncenter-v3. Tag XRP, ID memo Stellar, dan komentar faktur TON dikembalikan sebagai destination_tag dan harus dikirim persis.
Integritas penyelesaiandidukungVerifikasi independenSecara bawaan, penyelesaian final memerlukan dua penyedia independen yang sepakat pada transaksi/peristiwa, jumlah, blok atau slot kanonis, dan finalitas secara persis. Jendela mentah dan EVM bersama juga memverifikasi cakupan lengkap. Administrator boleh secara eksplisit memilih satu penyedia tepercaya untuk blockchain; ini menghapus pemeriksaan silang independen, bukan pemeriksaan identitas, kelengkapan, atau finalitas.
Jalur native MonerodidukungRPC dompet hanya lihat yang terikat ke proyekSatu wallet-RPC hanya pantau eksternal khusus di balik gateway HTTPS yang membatasi metode yang diizinkan membuat subalamat account-0. Ambang daemon mainnet yang dikonfigurasi (bawaan 2 sumber independen, opsional 1) menyediakan bukti penyelesaian. --restricted-rpc native tidak kompatibel dengan create_address; cadangan dompet dan ketiadaan spend key secara eksplisit dinyatakan oleh operator, sementara tidak ada materi kunci yang dikirim ke Wholly Crypto.

Saldo bursa dan pilihan sweep dompet-atau-bursa per aset tersedia di konsol, bukan melalui API publik v1. Lihat penyiapan bursa.

Siklus hidup faktur

Bukti pembayaran, penyelesaian, dan pemenuhan pesanan.

StatusArti
newMenunggu pembayaran
processingPembayaran teramati; jumlah yang diterima atau finalitas masih tertunda
settledDiterima berdasarkan kebijakan penyelesaian faktur, atau secara manual
expiredTenggat berlalu; pemantauan pembayaran terlambat dapat berlanjut
invalidPembayaran tidak bisa diterima secara otomatis
cancelledDibatalkan; hanya rekonsiliasi eksplisit yang bisa membukanya kembali

amount_status mencatat none, partial, paid atau overpaid. timing_status membedakan pembayaran tepat waktu dan terlambat. Aturan toko menentukan konfirmasi yang diperlukan dan toleransi kekurangan pembayaran yang diterima.

Gunakan invoice_id faktur dengan rute detail faktur. Pengalihan checkout saja bukan bukti penyelesaian. Tinjau pengecualian melalui rekonsiliasi.

Percobaan ulang yang aman

Pembuatan faktur memerlukan Idempotency-Key. Setelah batas waktu terlampaui, coba lagi dengan kredensial, kunci, dan body permintaan yang sama persis. Gunakan kunci baru hanya untuk faktur baru.

Pemindaian pembayaran EVM

Penemuan blok native dan ERC-20 bersama mengelompokkan faktur terbaru secara terpisah dari pekerjaan pengejaran riwayat lama. Setiap faktur mempertahankan kursor riwayat persistennya. Kueri token menggunakan paling banyak 100 blok per permintaan dan menyusut untuk batas penyedia yang lebih ketat. Dua penyedia independen memverifikasi setiap jendela secara bawaan. Pengaturan → Koneksi blockchain → Detail bisa memilih satu sumber tepercaya untuk blockchain, tanpa pemeriksaan silang independen; pemeriksaan transaksi kanonis, jumlah, dan konfirmasi tetap berlaku. Detail koneksi membedakan keterlambatan pemindai, pembatasan riwayat, dan masa tunggu kuota dari kesehatan node dasar. Kapasitas RPC publik tidak dijamin.

IPN & webhook

Terima dan verifikasi peristiwa pembayaran.

IPN menerima setiap peristiwa faktur yang dihasilkan pada ipn_url efektif faktur. Webhook hanya menerima peristiwa yang dipilih untuk setiap endpoint toko yang diaktifkan. Keduanya mengirim snapshot JSON yang sama melalui POST; keduanya independen, sehingga mengaktifkan keduanya bisa memberi tahu aplikasimu dua kali.

Tetapkan ipn_url saat membuat faktur, atau warisi pengaturan bawaan toko. IPN menggunakan rahasia Toko → IPN ; setiap endpoint Toko → Webhook memiliki rahasianya sendiri. Keduanya bukan kunci API-mu.

Kapan aku harus memenuhi pesanan?

Untuk penanganan berbasis peristiwa, gunakan event_type = invoice.settled bersama status = settled untuk memicu pemeriksaan pesanan. Verifikasi faktur terkini dan penuhi setiap pesanan hanya sekali.

status adalah keadaan faktur saat peristiwa dibuat. event_type menjelaskan apa yang terjadi. payment.received bisa membawa processing atau settled; ini tidak berarti pembayaran kedua dan bukan sinyal pemenuhan yang independen.

Peristiwa dan status apa yang dikirim?

Peristiwa dalam pengaturan/riwayatStatus bodyArti
invoice.creatednewFaktur dibuat dan menunggu pembayaran. Juga digunakan saat pembukaan ulang terkontrol mengembalikan faktur ke new.
payment.receivedResulting invoice statusPembayaran dicatat atau jumlah yang diterima bertambah. Biasanya processing atau settled; peristiwa ini saja bukan bukti penyelesaian.
invoice.processingprocessingPembayaran terdeteksi, tetapi jumlah yang diterima atau finalitas yang diperlukan belum terpenuhi. Pembayaran parsial termasuk.
invoice.settledsettledKebijakan penyelesaian terpenuhi, atau diterima secara manual. Periksa resolution dan pesananmu sebelum pemenuhan.
invoice.expiredexpiredTenggat pembayaran berlalu. Pembayaran terlambat masih bisa mengubah status selama pemantauan berlanjut.
invoice.invalidinvalidTidak bisa diterima otomatis, bukti pembayaran hilang, atau merchant menolaknya. Tinjau faktur.
invoice.cancelledcancelledFaktur dibatalkan. Jangan penuhi pesanan; pembatalan tidak mengembalikan pembayaran on-chain.
Mengapa Ethereum dan Solana bisa mengirim alur peristiwa berbeda

Konfirmasi datang belakangan (contoh Ethereum)

Urutanevent_typestatus
1invoice.creatednew
2payment.receivedprocessing
2invoice.processingprocessing
3invoice.settledsettled

Sudah final saat terdeteksi (contoh Solana)

Urutanevent_typestatus
1invoice.creatednew
2payment.receivedsettled
2invoice.settledsettled

Ini menampilkan pembuatan peristiwa, bukan urutan pengiriman yang dijamin. Kedua alur bisa terjadi pada blockchain lain bergantung pada waktu deteksi dan kebijakan penyelesaian. Jangan mensyaratkan peristiwa processing sebelum settled.

Penuhi satu kali: contoh penerima dan perlindungan duplikasi
PendekatanCara menanganinya
Penerima berbasis peristiwaPertahankan peristiwa berbeda berdasarkan event_id bertanda tangan, lalu pilih invoice.settled dengan status = settled. Jangan buang peristiwa ini karena payment.received dengan sequence yang sama datang lebih dahulu.
Kotak masuk status pesanan SDKContoh penerima PHP, Python, dan Node yang disediakan menggabungkan proyek + invoice_id + sequence. Proses status yang disimpan terlepas dari event_type, ambil faktur terkini, dan penuhi satu kali jika settled. Jangan tambahkan filter khusus invoice.settled setelah penggabungan ini.

Percobaan ulang mempertahankan event_id dan body asli. Peristiwa berbeda bisa berbagi sequence tetapi memiliki nilai event_id berbeda. Deduplikasi pengiriman berdasarkan event_id bertanda tangan untuk penanganan berbasis peristiwa; lindungi pemenuhan secara independen berdasarkan instalasi/proyek yang dikonfigurasi + invoice_id dan pesananmu. Penyelesaian ulang berikutnya tidak boleh mengkreditkan pesanan dua kali.

HTTP receiver:
  Verify raw-body signature, timestamp and configured project/store scope.
  Save to a durable inbox; deduplicate the signed event_id.
  Return HTTP 2xx only after persistence succeeds.

Event-based background worker:
  Other events go to status/reconciliation handling, not fulfilment.
  Continue here only for event_type = invoice.settled and status = settled.
  Fetch the current invoice from your configured API origin.
  Check settled status, project/store, order, amount, currency and review policy.
  In one database transaction:
    Lock the order and check the scoped invoice has not been fulfilled.
    Credit/complete once and save the fulfilment record.
    Queue any external fulfilment with the same business idempotency key.

SDK order-state worker:
  Use the same current-invoice checks and fulfil-once transaction.
  Do not filter event_type after collapsing events by invoice revision.

Pseudocode, bukan penerima siap pakai.

Semua status faktur dan pengecualian pembayaran
KolomNilaiArti
statusnew, processing, settled, expired, invalid, cancelledStatus faktur saat peristiwa dibuat; belum tentu status terkini saat dikirim.
amount_statusnone, partial, paid, overpaidJumlah diterima, termasuk toleransi yang disetujui. paid bukan finalitas konfirmasi.
timing_statuson_time, lateApakah pembayaran memenuhi tenggat faktur.
resolutionautomatic, manually_settled, manually_invalidatedApakah aturan normal atau penerimaan/penolakan manual menentukan hasilnya.
requires_reviewfalse, truePetunjuk pengecualian, bukan status faktur lain atau izin otomatis untuk memenuhi pesanan/mengembalikan dana.
SituasiPenanganan
Kekurangan pembayaran / toleransiDalam aturan otomatis, partial tidak menyelesaikan faktur. paid bisa mencakup kekurangan yang diterima, tetapi finalitas tetap diperlukan. Gunakan status faktur, bukan perbandingan jumlah saja.
Kelebihan pembayaranoverpaid bisa bersamaan dengan settled dan requires_review = true. Terapkan kebijakan kelebihan pembayaranmu; jangan pernah mengkreditkan pesanan dua kali atau otomatis mengembalikan dana ke alamat yang belum diverifikasi.
Pembayaran terlambatexpired bisa berubah kemudian selama pemantauan berlanjut. timing_status = late menandai perlunya tinjauan; jangan otomatis membuka ulang atau mengirim pesanan yang dibatalkan.
Penerimaan manualinvoice.settled bisa memiliki resolution = manually_settled tanpa dana on-chain yang memenuhi syarat. Tentukan apakah integrasimu menerima pengesampingan ini; kolom ringkasan pembayaran mungkin null.
Reorg / pembatalan validitasRevisi yang lebih baru bisa membatalkan validitas bukti pembayaran sebelumnya. Ambil ulang status terkini dan tangani pembalikan melalui rekonsiliasi. Jangan mengabaikannya hanya karena pesanan pernah diselesaikan.
Nol konfirmasi / jumlah nolPenyelesaian tanpa konfirmasi bisa terjadi saat deteksi dan membawa risiko reorg. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan tanpa pembayaran. Keduanya tidak memerlukan peristiwa payment.received terlebih dahulu.

Gunakan status = settled untuk pemenuhan, bukan amount_status = paid dan bukan pengalihan checkout. Dengan nol konfirmasi yang diperlukan, penyelesaian bisa terjadi saat deteksi; ini membawa risiko reorg.

Kurang bayar adalah amount_status = partial; lebih bayar adalah overpaid. paid berarti minimum yang diterima, termasuk toleransi kekurangan pembayaran faktur, telah tiba. Ini adalah status jumlah, bukan status faktur. late adalah timing_status, bukan peristiwa terpisah.

Alur umum adalah new → processing → settled, tetapi status perantara bisa dilewati. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan tanpa pembayaran dan mempertahankan amount_status = none. Penerimaan manual ditandai manually_settled.

Callback adalah snapshot yang tidak dapat diubah, bukan respons status langsung. Callback bisa tiba terlambat, tidak berurutan, atau lebih dari sekali. Peristiwa pembayaran dan status bisa berbagi sequence faktur serta kolom status faktur yang sama, tetapi memiliki nilai event_id dan event_type bertanda tangan yang berbeda. Jumlah konfirmasi tidak menjamin callback untuk setiap blok.

Yang kamu terima

{
  "invoice_id": "11111111-2222-4333-8444-555555555555",
  "status": "settled",
  "amount_status": "paid",
  "timing_status": "on_time",
  "resolution": "automatic",
  "sequence": 3,
  "amount": "49.9",
  "currency": "EUR",
  "order_id": "order-1042",
  "payload_version": 2,
  "event_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
  "event_type": "invoice.settled",
  "occurred_at": "2026-09-14T12:05:00Z",
  "project_id": "11111111-1111-4111-8111-111111111111",
  "store_id": "22222222-2222-4222-8222-222222222222",
  "description": "Annual plan",
  "email": "ada@example.test",
  "customer": {
    "firstname": "Ada",
    "lastname": "Lovelace",
    "countryiso2": "GB"
  },
  "metadata": {
    "firstname": "Ada",
    "lastname": "Lovelace",
    "countryiso2": "GB",
    "cart_id": "cart-681"
  },
  "created_at": "2026-09-14T12:00:00Z",
  "updated_at": "2026-09-14T12:05:00Z",
  "expires_at": "2026-09-14T12:15:00Z",
  "monitoring_expires_at": "2026-09-21T12:15:00Z",
  "settled_at": "2026-09-14T12:05:00Z",
  "paid_chain": "ethereum",
  "paid_asset": "USDC",
  "paid_asset_amount": "58.17342",
  "paid_asset_amount_received": "58.17342",
  "paid_payment_method_id": "33333333-3333-4333-8333-333333333333",
  "settlement_exchange_rate": {
    "rate": "1.17",
    "units": "asset_per_invoice_currency",
    "currency": "EUR",
    "symbol": "USDC",
    "observed_at": "2026-09-14T12:05:00Z",
    "as_of": "2026-09-14T12:04:30Z",
    "pricing_provider": "kraken",
    "asset_provider": "kraken",
    "pricing_fetched_at": "2026-09-14T12:04:30Z",
    "asset_fetched_at": "2026-09-14T12:04:30Z",
    "stale": false,
    "is_fixed": false,
    "reference_currency": "USD",
    "uses_reference_proxy": false
  },
  "cancelled_at": null,
  "exchange_rate_spread_percent": "0.5",
  "underpayment_tolerance_percent": "1",
  "reason_code": "payment_confirmed",
  "requires_review": false,
  "links": {
    "checkout": "https://pay.example.com/invoice/11111111-2222-4333-8444-555555555555",
    "invoice": "https://api.example.com/v1/projects/11111111-1111-4111-8111-111111111111/invoices/11111111-2222-4333-8444-555555555555",
    "payments": "https://api.example.com/v1/projects/11111111-1111-4111-8111-111111111111/invoices/11111111-2222-4333-8444-555555555555/payments"
  },
  "payment_info": {
    "active_payment_method_id": "33333333-3333-4333-8333-333333333333",
    "method_count": 1,
    "methods_truncated": false,
    "methods": [
      {
        "payment_method_id": "33333333-3333-4333-8333-333333333333",
        "payment_rail": "onchain",
        "chain_slug": "ethereum",
        "network": "mainnet",
        "caip_network_id": "eip155:1",
        "asset_id": "44444444-4444-4444-8444-444444444444",
        "asset_key": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "caip_asset_id": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "asset_name": "USD Coin",
        "symbol": "USDC",
        "asset_kind": "token",
        "asset_decimals": 6,
        "contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
        "token_standard": "erc20",
        "destination_address": "0x1111111111111111111111111111111111111111",
        "destination_tag": null,
        "status": "paid",
        "amounts": {
          "expected_amount": "58.17342",
          "expected_amount_atomic": "58173420",
          "received_amount": "58.17342",
          "received_amount_atomic": "58173420",
          "confirmed_amount": "58.17342",
          "confirmed_amount_atomic": "58173420",
          "unconfirmed_amount": "0",
          "unconfirmed_amount_atomic": "0",
          "minimum_payment_amount": "57.591686",
          "minimum_payment_amount_atomic": "57591686",
          "remaining_amount": "0",
          "remaining_amount_atomic": "0",
          "remaining_to_full_amount": "0",
          "remaining_to_full_amount_atomic": "0",
          "overpaid_amount": "0",
          "overpaid_amount_atomic": "0"
        },
        "acceptance": {
          "finality_mode": "confirmations",
          "required_confirmations": 2,
          "observed_confirmations": 2,
          "underpayment_tolerance_percent": "1"
        },
        "quote": {
          "effective_rate": "1.1658",
          "reference_rate": "1.16",
          "units": "asset_per_invoice_currency",
          "currency": "EUR",
          "symbol": "USDC",
          "exchange_rate_spread_percent": "0.5",
          "quote_expires_at": "2026-09-14T12:15:00Z",
          "provenance_available": true,
          "rounding": "up",
          "unrounded_payment_amount": "58.17342",
          "rounding_adjustment": "0",
          "pricing_provider": "kraken",
          "asset_provider": "kraken",
          "pricing_fetched_at": "2026-09-14T11:59:30Z",
          "asset_fetched_at": "2026-09-14T11:59:30Z"
        },
        "market_rate_at_event": {
          "rate": "1.17",
          "units": "asset_per_invoice_currency",
          "currency": "EUR",
          "symbol": "USDC",
          "observed_at": "2026-09-14T12:05:00Z",
          "pricing_provider": "kraken",
          "asset_provider": "kraken",
          "pricing_fetched_at": "2026-09-14T12:04:30Z",
          "asset_fetched_at": "2026-09-14T12:04:30Z",
          "as_of": "2026-09-14T12:04:30Z",
          "stale": false,
          "is_fixed": false,
          "reference_currency": "USD",
          "uses_reference_proxy": false
        },
        "payment_count": 1,
        "payments_truncated": false,
        "payments": [
          {
            "payment_id": "55555555-5555-4555-8555-555555555555",
            "payment_method_id": "33333333-3333-4333-8333-333333333333",
            "transaction_id": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            "payment_hash": null,
            "event_index": 0,
            "payment_rail": "onchain",
            "chain_slug": "ethereum",
            "network": "mainnet",
            "asset_id": "44444444-4444-4444-8444-444444444444",
            "asset_key": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "caip_asset_id": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "symbol": "USDC",
            "asset_decimals": 6,
            "amount": "58.17342",
            "amount_atomic": "58173420",
            "status": "final",
            "counts_towards_received": true,
            "confirmations": 2,
            "block_height": 26000000,
            "observed_at": "2026-09-14T12:04:30Z",
            "chain_time": "2026-09-14T12:04:20Z",
            "finalized_at": "2026-09-14T12:05:00Z",
            "explorer_name": "Etherscan",
            "explorer_url": "https://etherscan.io/tx/0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
          }
        ],
        "links": {
          "payments": "https://api.example.com/v1/projects/11111111-1111-4111-8111-111111111111/invoices/11111111-2222-4333-8444-555555555555/payments?payment_method_id=33333333-3333-4333-8333-333333333333"
        }
      }
    ]
  }
}

amount adalah total faktur asli. payment_info menjelaskan transfer kripto yang teramati, jumlah yang masih kurang, dan kurs terkunci. Versi 2 juga menandatangani nama peristiwa, ID peristiwa, serta cakupan proyek/toko.

Semua kolom callback dan data faktur tambahan
KolomTipeArti
invoice_idUUIDUUID faktur publik, digunakan oleh rute detail faktur terautentikasi
statusstringSnapshot status faktur: new, processing, settled, expired, invalid, cancelled
amount_statusstringnone, partial, paid, atau overpaid; paid mencakup toleransi kekurangan pembayaran yang diterima, bukan finalitas konfirmasi
timing_statusstringon_time atau late
resolutionstringautomatic, manually_settled, atau manually_invalidated
sequenceintegerRevisi faktur yang meningkat; peristiwa berbeda bisa berbagi satu revisi. Bandingkan tanpa kehilangan presisi bilangan bulat
amountdecimal stringTotal faktur asli, bukan jumlah kripto yang diterima; pertahankan presisi desimal
currencystringMata uang amount, mis. EUR untuk faktur EUR yang dibayar dengan USDC
order_idstring | nullReferensi pesanan merchant
payload_versioninteger2 untuk peristiwa baru yang dihasilkan versi 4.1.0+; tidak ada pada peristiwa lama yang tersimpan
event_idUUIDIdentitas peristiwa bertanda tangan, tetap sama pada percobaan ulang dan pengiriman ulang manual
event_typestringSalah satu dari tujuh peristiwa langganan
occurred_attimestampWaktu peristiwa yang tidak dapat diubah ini dibuat, bukan waktu pengiriman
project_idUUIDCakupan proyek merchant; cocokkan dengan penerima yang dikonfigurasi
store_idUUIDCakupan toko merchant; cocokkan dengan penerima yang dikonfigurasi
descriptionstring | nullDeskripsi faktur asli
emailstring | nullEmail pelanggan opsional saat peristiwa dibuat
customerobjectKolom metadata pelanggan opsional yang dikenali; tanpa data pribadi yang ditebak atau diperkaya
metadataobjectMetadata merchant asli sebagaimana adanya saat peristiwa dibuat
created_attimestampWaktu pembuatan faktur
updated_attimestampWaktu pembaruan status faktur
expires_attimestampTenggat pembayaran faktur
monitoring_expires_attimestampTenggat pemantauan pembayaran terlambat
settled_attimestamp | nullWaktu penyelesaian
paid_chainstring | null4.1.2+: slug blockchain dari metode penyelesaian yang terbukti, mis. ethereum; null tanpa penyelesaian memenuhi syarat yang tersimpan
paid_assetstring | null4.1.2+: ticker koin native atau token, mis. BTC, ETH, atau USDC; label tampilan, bukan identitas aset unik
paid_asset_amountdecimal string | null5.0.1+: seluruh jumlah terkunci yang diminta dalam unit paid_asset, sebelum mengurangi toleransi; disimpan saat penyelesaian
paid_asset_amount_receiveddecimal string | null5.0.1+: total jumlah valid yang diterima untuk metode pemenang saat penyelesaian, termasuk kekurangan/kelebihan yang diterima; dibekukan, bukan saldo langsung
paid_payment_method_idUUID | null4.1.2+: ID intent penyelesaian; cocok dengan payment_info.methods[].payment_method_id dan jaringan/kontraknya secara persis
settlement_exchange_rateobject | null4.1.2+: snapshot pasar sebelum spread yang disimpan saat penyelesaian, dengan unit, mata uang, stempel waktu sumber, dan penanda kualitas eksplisit; harganya tidak pernah dihitung ulang saat pengiriman
cancelled_attimestamp | nullWaktu pembatalan
exchange_rate_spread_percentdecimal stringSpread terkunci, bukan pengaturan bawaan toko saat ini
underpayment_tolerance_percentdecimal stringToleransi faktur terkunci; setiap metode juga melaporkan toleransi efektifnya
reason_codestring | nullAlasan transisi status yang dapat dibaca mesin
requires_reviewbooleanPetunjuk pengecualian pembayaran; bukan izin memenuhi pesanan atau mengembalikan dana secara otomatis
linksobjectURL checkout, faktur terautentikasi, dan pembayaran saat peristiwa dibuat. Preferensi domain Toko → Dasar berlaku, lalu toko bawaan, lalu domain utama global; hanya domain aktif yang sesuai perannya yang digunakan. Percobaan ulang mempertahankan tautan asli bertanda tangan; null jika tidak ada catatan host aktif.
payment_infoobjectMetode yang benar-benar teramati, jumlah presisi, kuotasi terkunci, snapshot pasar referensi, dan observasi pembayaran terbatas; lihat kelompok kolom di bawah

Ringkasan penyelesaian: settlement_exchange_rate

KolomTipeArti
rate / units / currency / symbolstringsUnit aset sebelum spread per satu unit mata uang faktur. String desimal, bukan jumlah pembayaran atau perdagangan yang dieksekusi.
observed_at / as_oftimestampsWaktu pencatatan penyelesaian / stempel waktu sumber yang lebih lama. Jangan menganggap data cache sebagai tick langsung.
pricing_provider / asset_provider / pricing_fetched_at / asset_fetched_atstrings / timestampsSumber harga fiat dan aset beserta waktu pengambilannya, disimpan saat penyelesaian.
stale / is_fixed / uses_reference_proxy / reference_currencybooleans / stringPenanda kualitas yang sama seperti market_rate_at_event. Harga proyek tetap diberi label; mata uang referensi adalah USD.
Missing snapshot or pricenullTidak ada kurs historis yang ditebak. Sebelum penyelesaian, semua kolom ringkasan null; harga yang tidak tersedia saja tetap membiarkan pengenal paid_* yang terbukti tersedia.

Metode pembayaran: payment_info

KolomTipeArti
active_payment_method_idUUID | nullMetode teramati yang menang atau dipilih. Null sebelum deteksi atau setelah pembatalan validitas; tidak ada metode bawaan yang ditebak.
method_count / methods_truncatedinteger / booleanTotal metode teramati dan apakah daftar methods tersemat tidak lengkap.
methods[]object[]Paling banyak delapan metode teramati, metode aktif lebih dahulu. Tanpa total lintas aset.
payment_method_id / payment_railUUID / stringIdentitas intent faktur dan transport onchain atau lightning.
chain_slug / network / caip_network_idstringIdentitas jaringan. Selalu pasangkan identitas token dengan jaringannya.
asset_id / asset_key / caip_asset_idUUID / string / nullable stringIdentitas registri terverifikasi; simbol saja tidak unik.
asset_name / symbol / asset_kindstringNama tampilan aset, ticker, dan jenis native atau token.
contract_address / token_standardstring | nullKontrak atau mint token serta standarnya; null untuk aset native.
asset_decimalsintegerPresisi atomik; BTC Lightning menggunakan 11.
destination_address / destination_tagstring | nullAlamat penerimaan publik dan memo/tag yang diperlukan. Alamat bernilai null untuk Lightning; tidak pernah berupa kunci privat.
statusstringStatus metode: pending, partial, paid, overpaid, expired, atau invalid. Paid sendiri bukan penyelesaian faktur.
payment_count / payments_truncated / payments[]integer / boolean / object[]Total observasi dan lima yang terbaru atau lebih sedikit. Setiap observasi dijelaskan di bawah.
links.paymentsHTTPS URL | nullRiwayat berhalaman yang terautentikasi untuk metode ini pada origin API yang dikonfigurasi.

Jumlah presisi: methods[].amounts

KolomTipeArti
expected_amountdecimal stringKuotasi terkunci penuh, setelah spread dan pembulatan ke atas.
received_amount / confirmed_amountdecimal stringsDana valid yang terdeteksi / dana yang memenuhi kebijakan konfirmasi atau finalitas metode ini.
unconfirmed_amountdecimal stringmax(received - confirmed, 0). Bukan jumlah tambahan untuk dikirim.
minimum_payment_amountdecimal stringAmbang yang diterima setelah toleransi. Bisa di bawah kuotasi penuh.
remaining_amountdecimal stringmax(minimum accepted - received, 0). Dana tambahan yang diperlukan untuk mencapai ambang yang diterima, bukan progres konfirmasi.
remaining_to_full_amountdecimal stringmax(full quote - received, 0), mengabaikan toleransi.
overpaid_amountdecimal stringmax(received - full quote, 0). Tidak mengotorisasi pengembalian dana otomatis.
Every amount's *_atomic companioninteger stringRepresentasi unit terkecil yang presisi. Gunakan pustaka desimal atau bilangan bulat; jangan pernah menggunakan float atau JavaScript Number untuk uang.

Kebijakan konfirmasi: methods[].acceptance

KolomTipeArti
finality_mode / required_confirmationsstring / integerKonfirmasi terkunci atau kebijakan finalized. Nol konfirmasi diizinkan secara eksplisit oleh kebijakan merchant, bukan finalitas jaringan universal.
observed_confirmationsinteger | nullMinimum di antara observasi valid, bukan hanya transfer terbaru. Null untuk Lightning atau jika tidak ada observasi valid.
underpayment_tolerance_percentdecimal stringToleransi metode efektif. Lightning menggunakan nol meski faktur memiliki toleransi on-chain bukan nol.

Kurs: methods[].quote dan market_rate_at_event

KolomTipeArti
quote.effective_rate / units / currency / symbolstringsKurs asset_per_invoice_currency terkunci termasuk spread; mata uang dan simbol menyatakan arahnya secara eksplisit.
quote.exchange_rate_spread_percent / quote_expires_atdecimal string / timestampSpread terkunci dan tenggat kuotasi. Tidak pernah diganti dengan pengaturan toko saat ini.
quote.reference_rate / unrounded_payment_amount / rounding_adjustmentdecimal string | nullReferensi sebelum spread, jumlah pembayaran sebelum pembulatan, dan penyesuaian ke atas dalam unit aset.
quote.pricing_provider / asset_provider / pricing_fetched_at / asset_fetched_atstring or timestamp | nullSumber/waktu harga mata uang dan aset asli. Tanpa kunci API atau kredensial penyedia.
quote.provenance_available / roundingboolean / stringFalse untuk faktur lama tanpa snapshot sumber tersimpan; pembulatan ke atas.
market_rate_at_eventobject | nullSnapshot pasar dalam cache sebagai referensi saat peristiwa ini dibuat. Data yang tidak tersedia tetap null; tidak pernah mengubah jumlah faktur atau menunggu pengambilan melalui jaringan.
market_rate_at_event.rate / units / currency / symbolstringsKurs pasar sebelum spread, dengan arah eksplisit yang sama seperti quote.
market_rate_at_event.observed_at / as_of / pricing_fetched_at / asset_fetched_attimestampsWaktu snapshot peristiwa / waktu yang lebih lama dari dua sumber / waktu masing-masing sumber.
market_rate_at_event.pricing_provider / asset_providerstringsSumber mata uang dan aset dalam cache, termasuk harga token kustom yang dikonfigurasi.
market_rate_at_event.stale / is_fixed / uses_reference_proxy / reference_currencybooleans / stringApakah cache usang, harga token tetap, atau referensi USD menggunakan stablecoin sebagai perantara. Mata uang referensi adalah USD. Status usang bersifat informatif, tidak pernah menjadi kuotasi baru.

Catatan transfer: methods[].payments[] dan GET …/payments

KolomTipeArti
payment_id / payment_method_idUUIDIdentitas observasi / identitas intent induk. Gunakan payment_id untuk deduplikasi riwayat.
transaction_id / payment_hash / event_indexstring | null / integerHash on-chain dan indeks transfer/log/output, atau hash Lightning. Lightning tidak memiliki transaksi atau tautan penjelajah.
payment_rail / chain_slug / network / asset_id / asset_key / caip_asset_id / symbol / asset_decimalsstrings / UUID / integerPengenal aset dan jaringan yang sama dengan metode yang memuatnya.
amount / amount_atomicdecimal / integer stringsNilai presisi transfer ini, tidak pernah berupa konversi fiat.
status / counts_towards_receivedstring / booleandetected, confirming, dan final dihitung; reorged, replaced, dan invalid tidak. Pertahankan riwayat yang dibatalkan validitasnya untuk rekonsiliasi.
confirmations / block_heightinteger | nullData blok observasi; konfirmasi bernilai null untuk Lightning.
observed_at / chain_time / finalized_attimestamp | nullWaktu pertama terlihat secara lokal, waktu blockchain tepercaya jika tersedia, dan waktu final sesuai kebijakan jika tercapai.
explorer_name / explorer_urlstring | nullReferensi penjelajah blok publik yang divalidasi, jika didukung.

Merchant 5.13.3 mengecualikan transfer pendanaan gas internal terverifikasi dari total pembayaran pelanggan, payment_info, API pembayaran faktur, batas pengembalian dana, dan peristiwa payment.received. Catatan blockchain/treasury-nya tetap tersedia untuk akuntansi dompet. Transfer biasa dan kelebihan pembayaran nyata tetap dihitung. Body callback bertanda tangan yang sudah ada tidak pernah ditulis ulang. Jika penyelesaian historis bergantung pada pendanaan internal alih-alih dana pelanggan, rekonsiliasi menerbitkan invoice.invalid dengan reason_code internal_gas_funding_excluded; tinjau, jangan memenuhi pesanan lagi.

Merchant 4.1.0 menambahkan payload_version 2 tanpa memindahkan atau mengubah sembilan kolom asli. Peristiwa yang sebelumnya masuk antrean mempertahankan body aslinya dan mungkin tidak memiliki payload_version. event_id, event_type, serta ID proyek/toko kini berada dalam body bertanda tangan; header peristiwa/pengiriman transport tetap tidak ditandatangani.

payment_info menjelaskan pembayaran yang teramati, bukan setiap opsi checkout yang ditawarkan. Sebelum deteksi, active_payment_method_id bernilai null dan methods kosong. Observasi reorged/invalid bisa tetap ada dalam methods meski metode aktif menjadi null. Jangan pernah menjumlahkan jumlah dari aset atau jaringan berbeda.

Semua jumlah, bilangan bulat atomik, kurs, dan persentase berupa string. received_amount mencakup dana valid yang menunggu konfirmasi; confirmed_amount memenuhi kebijakan finalitas metode tersebut. remaining_amount adalah max(minimum_payment_amount dikurangi received_amount, 0); remaining_to_full_amount adalah max(expected_amount dikurangi received_amount, 0). Contoh: 100 USDC diharapkan, 99 diterima, toleransi 1% berarti remaining_amount 0 dan remaining_to_full_amount 1. Finalitas tetap diperlukan.

quote adalah perhitungan faktur terkunci: unit aset per satu unit mata uang faktur. Spread diterapkan sebelum pembulatan ke atas. Gunakan expected_amount_atomic untuk perbandingan pembayaran presisi; kurs yang ditampilkan saja mungkin tidak bisa mereproduksi pembulatan ke atas. Faktur lama tanpa asal sumber tersimpan menampilkan kolom source/reference/rounding null dan provenance_available false, tidak pernah data hari ini yang disajikan sebagai kuotasi historis.

market_rate_at_event adalah data cache referensi sebelum spread, dibekukan saat peristiwa dibuat. Data ini memiliki waktu sumber, penanda stale, dan penanda perantara referensi; nilainya null jika tidak ada pasangan cache yang dapat digunakan. Permintaan kurs langsung tidak memblokir notifikasi, dan observasi pasar ini tidak pernah mengubah jumlah terutang. Token kustom berharga tetap diberi label is_fixed; token DEX menggunakan sumber khusus proyeknya, bukan token dengan simbol yang sama.

paid_chain, paid_asset, paid_payment_method_id, dan settlement_exchange_rate tingkat atas (4.1.2+) mengidentifikasi metode pemenang yang terbukti setelah penyelesaian, bukan opsi checkout yang dipilih atau penjumlahan metode berbeda. Sebelum penyelesaian, setelah pembatalan validitas, untuk penyelesaian lama tanpa snapshot, atau untuk penerimaan manual tanpa dana yang memenuhi finalitas kebijakan, kolom ringkasan bernilai null. Simbol adalah label tampilan: ikuti ID metode untuk identitas jaringan/aset/kontrak yang persis.

Merchant 5.0.1 menambahkan paid_asset_amount dan paid_asset_amount_received sebagai string desimal presisi dalam unit paid_asset; payload_version tetap 2. paid_asset_amount adalah kuotasi terkunci penuh, termasuk spread dan pembulatan ke atas, tidak pernah ambang toleransi atau sisa saldo. paid_asset_amount_received adalah total penerimaan valid metode pemenang saat penyelesaian, termasuk dana yang menunggu konfirmasi serta kekurangan atau kelebihan yang diterima. Contoh: kuotasi 100 USDC, 99 diterima dan disetujui dengan toleransi menghasilkan 100 dan 99, bukan 99 dan 99. Keduanya dibekukan bersama snapshot penyelesaian; gunakan payment_info.methods[].amounts untuk penerimaan pada setiap peristiwa atau API pembayaran untuk catatan terkini. Nilainya null tanpa snapshot yang memenuhi syarat dan untuk snapshot sebelum 5.0.1; body peristiwa lama dalam antrean tetap sama. Jangan pernah mengonversi string desimal presisi ke floating point untuk akuntansi.

settlement_exchange_rate adalah observasi pasar dalam cache sebelum spread yang dicatat bersama penyelesaian, bukan kuotasi faktur terkunci atau perdagangan bursa yang dieksekusi. Strukturnya sesuai dengan market_rate_at_event; 1.17 asset_per_invoice_currency dengan EUR/USDC berarti 1 EUR = 1.17 USDC. Stempel waktu sumber serta penanda stale/fixed/proxy menjelaskan kualitasnya. Pasangan yang tidak tersedia membuat kurs null, tetapi metode yang terbukti tetap memiliki kolom paid_*. Ini tidak pernah mengubah jumlah terutang atau menunggu panggilan langsung ke penyedia. Pembayaran berikutnya dengan metode yang sama, percobaan ulang, dan pengiriman ulang tidak bisa mengganti snapshot tersimpan, termasuk kurs null yang disimpan. Penyelesaian ulang yang sah atau perubahan metode penyelesaian mencatat snapshot baru; observed_at mengidentifikasi pencatatan tersebut, sementara settled_at bisa mempertahankan waktu penyelesaian pertama. Body peristiwa lama tetap sama.

Paling banyak delapan metode teramati dan lima observasi pembayaran terbaru per metode disertakan, dengan jumlah dan penanda pemotongan. Batas ukuran payload bisa mengurangi array tersebut lebih lanjut. Satu observasi pembayaran adalah satu transfer/log/output UTXO, belum tentu hash transaksi unik. Gunakan GET /v1/projects/YOUR_PROJECT_ID/invoices/{invoice_id}/payments dengan payment_method_id, limit, dan offset untuk riwayat terkini lengkap. Detail faktur mempertahankan setiap metode yang diberi kuotasi dan quote_details-nya. Tautan API memerlukan host serta kredensial yang kamu konfigurasi; jangan pernah meneruskan token bearer ke sembarang URL dari callback.

Lightning menggunakan payment_hash, bukan transaction_id; alamat penerimaan, penjelajah, dan konfirmasi teramati bernilai null. Jumlah BTC presisinya menggunakan 11 desimal (millisatoshi), dan toleransi efektif nol. Tidak menyertakan preimage pembayaran BOLT11, kunci dompet, rahasia penandatanganan, atau kredensial penyedia. Kolom pelanggan/metadata hanya boleh ada dalam respons merchant dan callback bertanda tangan, jangan pernah checkout publik; jangan memasukkan kredensial dalam metadata.

Riwayat pembayaran berhalaman →

Terima dengan aman

  1. Verifikasi body mentah secara persis dengan rahasia yang sesuai sebelum parsing. Toko → IPN menyediakan rahasia IPN, termasuk pengiriman ipn_url kustom. Setiap endpoint Toko → Webhook memiliki rahasianya sendiri. Keduanya bukan token API-mu; merotasi satu tidak merotasi yang lain.
  2. Periksa stempel waktu bertanda tangan (bawaan SDK: lima menit ke kedua arah) dan cocokkan ID proyek/toko bertanda tangan dengan konfigurasi penerima jika ada. Antrekan secara persisten sebelum mengembalikan HTTP 2xx. Untuk pemrosesan per peristiwa, event_id v2 ditandatangani; ID header saja bukan perlindungan replay karena header tersebut tidak ditandatangani. Untuk kotak masuk status pesanan, deduplikasi invoice_id dan sequence serta bandingkan kolom status faktur asli, bukan seluruh body v2: jenis/ID peristiwa berbeda bisa berbagi satu revisi.
  3. Di worker, ambil faktur terkini dari origin API yang kamu konfigurasi, bukan sembarang tautan callback. Cocokkan pesanan tersimpan, proyek/toko, jumlah, dan mata uang, wajibkan status terkini settled, serta terapkan kebijakan penerimaan manual dan pengecualianmu. Kunci pesanan dan penuhi satu kali dalam transaksi database, secara independen dari deduplikasi peristiwa.
  4. Jangan pernah menerapkan sequence lama di atas yang lebih baru. Peristiwa berbeda bisa berbagi satu revisi; jangan gabungkan deduplikasi tingkat revisi dengan filter khusus invoice.settled. Pembukaan ulang/rekonsiliasi bisa mengubah status; sequence, bukan peringkat status tetap, mengurutkan pembaruan. Catat pembalikan untuk ditinjau, jangan memenuhi pesanan lagi.

Contoh penerima: PHP · Python · Node.js / TypeScript.

Verifikasi tanda tangan & aturan pengiriman
import { createHmac, timingSafeEqual } from "node:crypto";

export function verifyWhollySignature(rawBody, header, signingSecret, toleranceSeconds = 300) {
  const match = /^t=(\d+),v1=([0-9a-f]{64})$/.exec(header || "");
  if (!match) return false;

  const timestamp = Number(match[1]);
  if (!Number.isSafeInteger(timestamp)) return false;
  const now = Math.floor(Date.now() / 1000);
  if (Math.abs(now - timestamp) > toleranceSeconds) return false;

  // rawBody must be the exact request Buffer, before JSON parsing.
  const expected = createHmac("sha256", signingSecret)
    .update(String(timestamp))
    .update(".")
    .update(rawBody)
    .digest();
  const presented = Buffer.from(match[2], "hex");
  return timingSafeEqual(expected, presented);
}
Aturan pengirimanDetail
HeaderWholly-Signature, Wholly-Event-Id, dan Wholly-Delivery-Id; Content-Type adalah application/json.
Tanda tanganHMAC-SHA256 atas <unix timestamp>.<exact raw body>; format header t=<timestamp>,v1=<64 lowercase hex>.
BerhasilRespons HTTP 2xx apa pun. Pengalihan tidak diikuti; respons non-2xx dianggap gagal.
Batas waktuBatas waktu koneksi 5 detik dan batas waktu total permintaan 10 detik.
Jadwal percobaan ulangHingga 8 percobaan untuk kegagalan yang bisa dicoba ulang: segera, lalu jeda 10s, 1m, 5m, 15m, 1h, 6h, dan 24h setelah percobaan sebelumnya selesai. IPN mencoba ulang otomatis; percobaan ulang otomatis webhook bisa dinonaktifkan per endpoint.
Keamanan tujuanHanya HTTPS publik. DNS divalidasi ulang dan dipin untuk pengiriman; tujuan lokal/privat/yang dicadangkan ditolak.
Retensi peristiwaPayload peristiwa notifikasi dan pengiriman dijadwalkan disimpan selama 90 hari; detail tersimpan dibersihkan dalam batch terbatas.
DeduplikasiSimpan invoice_id dan sequence bertanda tangan secara persisten dalam cakupan proyek yang dikonfigurasi. Wholly-Event-Id mengidentifikasi peristiwa; Wholly-Delivery-Id mengidentifikasi catatan pengiriman (percobaan ulang memakainya kembali; pengiriman ulang manual membuat yang baru). Kedua header ID tidak ditandatangani.
Penamaan peristiwaVersi 2 menandatangani event_id dan event_type dalam body. Peristiwa lama dalam antrean tidak memiliki keduanya. Jenis peristiwa berbeda bisa berbagi sequence faktur; rekonsiliasikan status faktur berdasarkan revisi, atau deduplikasi peristiwa individual berdasarkan event_id bertanda tangan.
Rotasi rahasiaRotasi tidak memiliki masa tumpang tindih atau header versi dan langsung mengubah tanda tangan untuk pengiriman dalam antrean, percobaan ulang, dan pengiriman manual.
Pengiriman yang dijedaKredit pemrosesan yang tidak mencukupi menjeda IPN/webhook, termasuk percobaan ulang. Pembayaran masuk tetap berjalan; notifikasi dalam antrean dilanjutkan setelah pendanaan selama masih dalam masa retensi payload.

Asisten AI · MCP

Hubungkan asisten ke instalasi merchant-mu.

Merchant 5.0.0 menyertakan server MCP opsional di domain API yang kamu konfigurasi. Server ini berjalan dalam instalasimu, bukan melalui relay bersama Wholly Crypto.

  1. Buka Pengaturan → Akses API. Buat kredensial khusus, tetapkan hanya proyek yang diperlukan asisten, dan mulai dengan akses hanya baca. Pada akun yang dihosting operator, operator mengaktifkan layanan MCP instalasi terlebih dahulu; kamu hanya mengelola kredensial serta izinmu sendiri.
  2. Di Koneksi AI · MCP, aktifkan MCP, pilih kredensial, dan simpan akses MCP-nya. Kredensial yang ada tidak memiliki akses MCP sampai diaktifkan secara eksplisit.
  3. Salin URL server MCP ke pengaturan server HTTP jarak jauh klienmu. Dengan OAuth, login ke konsol merchant, tinjau nama klien dan alamat kembali, pilih kredensial, dan setujui. Perlindungan Basic Auth dan TOTP yang ada tetap berlaku.
  4. Pembuatan faktur juga memerlukan kredensial baca/tulis, Baca + buat faktur dalam kebijakan MCP-nya, cakupan OAuth mcp:invoice:create, dan persetujuan eksplisit. Koneksi OAuth tidak pernah memperoleh proyek yang ditambahkan ke kredensial setelah persetujuan.
{
  "mcpServers": {
    "whollycrypto": {
      "url": "https://api.example.com/mcp"
    }
  }
}

Panduan penyiapan MCP →

AlatAksesTujuan
list_projectsBacaProyek aktif yang ditetapkan ke koneksi; paginasi limit/offset.
list_storesBacaToko, ID, dan status aktif dalam project_id; paginasi limit/offset.
list_payment_methodsBacaMetode blockchain, token, dan Lightning yang dikonfigurasi untuk project_id + store_id.
get_wallet_balancesBacaAlamat penerimaan dan saldo dalam cache, dengan kolom kebaruan/ketersediaan; tidak pernah rahasia dompet.
list_invoicesBacaFaktur proyek, difilter berdasarkan toko, status, atau pencarian; paginasi limit/offset.
get_invoiceBacaDetail faktur lengkap dan tautan checkout menggunakan project_id + invoice_id.
get_delivery_historyBacaStatus IPN/webhook toko, percobaan, dan hasil HTTP. Filter invoice_id/kind opsional; tanpa rahasia atau body callback.
convert_amountBacaKonversi referensi dalam cache menggunakan from, to, dan amount berupa string desimal; bukan kuotasi faktur.
create_invoicePenulisan eksplisitproject_id, store_id, idempotency_key, dan invoice (body pembuatan faktur yang ada). invoice.payment_methods memfilter metode toko yang aktif; 5.4.0+ mengabaikan pilihan nonaktif/tidak diterima dan kembali ke pengaturan bawaan toko jika tidak ada yang cocok. Pilihan blockchain saja memilih semua aset aktif yang diterima. asset_tickers dengan cakupan blockchain didukung mulai 5.3.0. Mengembalikan respons faktur normal.
Protokol, OAuth & keamanan

Gunakan Streamable HTTP melalui HTTPS. Negosiasikan versi protokol yang diumumkan dan sertakan MCP-Protocol-Version pada POST selanjutnya. Kirim Content-Type: application/json dan Accept: application/json, text/event-stream. Respons berupa JSON terbatas; koneksi ulang tidak memerlukan ID sesi MCP.

OAuth menggunakan token akses berumur pendek (15 menit), kode S256 PKCE sekali pakai (5 menit), dan token penyegaran berotasi (masa koneksi 30 hari). Memakai ulang token penyegaran yang sudah dipakai mencabut koneksi tersebut. Hubungkan kembali setelah kedaluwarsa, rotasi kredensial, perubahan kebijakan, atau perubahan domain API kanonis.

Penemuan OAuth hanya publik saat MCP diaktifkan. Parameter resource harus sama dengan URL kanonis yang dikembalikan penemuan, termasuk /mcp. Pendaftaran dinamis didukung; dokumen metadata ID klien jarak jauh dan rahasia klien tidak didukung.

Untuk klien yang mendukung header Authorization kustom, token API merchant yang mengaktifkan MCP bisa digunakan sebagai Bearer. Token ini mempertahankan izin REST terpisahnya; utamakan OAuth untuk koneksi yang dibatasi ke MCP. Jangan pernah menempelkan kredensial dalam percakapan, URL, argumen alat, atau kontrol versi.

MCP berbagi kuota REST per menit dan pembatasan IP sumber persis milik kredensial, ditambah pembatasan IP host API. OAuth tidak melewati daftar izin. Untuk klien AI jarak jauh, izinkan IP egress yang didokumentasikan atau sengaja nonaktifkan pembatasan ini. Tantangan keamanan web atau caching tidak boleh diterapkan pada rute MCP/OAuth.

Kesalahan HTTP: 401 memerlukan autentikasi, 403 menolak origin/IP/izin, 404 berarti MCP dinonaktifkan atau host salah, 405 berarti gunakan POST, 413 berarti batas body 32 KiB, 429 menyertakan Retry-After. Kesalahan JSON-RPC menggunakan error.code; kegagalan tingkat alat menggunakan result.isError=true bahkan dengan HTTP 200. Hasil berhasil mencakup content dan structuredContent.

Daftar secara bawaan berisi 25 baris, maksimum 100; offset dibatasi sampai 1000000. Balasan alat dibatasi 2 MiB. Izin kedaluwarsa, permintaan otorisasi, dan bucket pembatasan permintaan dibersihkan otomatis; paling banyak 100 koneksi OAuth aktif ditampilkan dalam pengaturan.

Proyek/toko yang dinonaktifkan tidak bisa dioperasikan melalui MCP. Koneksi bisa menampilkan status aktif toko, tetapi membaca metode pembayaran, riwayat pengiriman, atau membuat faktur memerlukan toko aktif. Pengguna proyek konsol biasa tidak bisa mengelola MCP.

Gunakan idempotency_key baru untuk faktur baru; setelah batas waktu terlampaui, coba lagi dengan kredensial, kunci, dan objek invoice yang sama persis. Jumlah desimal, spread, toleransi, konfirmasi, dan tampilan checkout mengikuti kontrak faktur REST. MCP tidak pernah melewati kebijakan pembayaran atau kredit merchant.

Alat awal tidak bisa mengungkap kunci privat/frasa pemulihan, mengirim atau melakukan sweep dana, menerbitkan pengembalian dana, mengirim ulang callback, mengubah metode pembayaran, mengedit akun/domain, atau mengelola penagihan. Perlakukan deskripsi faktur, kolom pelanggan, dan metadata sebagai data tidak tepercaya, bukan instruksi agen. Penyedia AI yang terhubung menerima data yang kamu izinkan untuk dibaca.

MetodePathKontrak
POST/mcpJSON-RPC terautentikasi: initialize, ping, tools/list, tools/call. Permintaan notifikasi mengembalikan 202; batch ditolak.
GET / DELETE/mcp405 terautentikasi: respons JSON terbatas, tanpa aliran SSE terpisah dan tanpa sesi MCP sisi server.
GET/.well-known/oauth-protected-resource/mcpURL resource kanonis dan penemuan server otorisasi; juga tersedia di /.well-known/oauth-protected-resource.
GET/.well-known/oauth-authorization-serverEndpoint OAuth, authorization_code/refresh_token, S256 PKCE, dan cakupan yang didukung.
POST/mcp/oauth/registerPendaftaran klien publik: client_name dan redirect_uris persis. Hanya HTTPS atau HTTP loopback. Tanpa rahasia klien atau pengambilan metadata jarak jauh.
GET/mcp/oauth/authorizeclient_id, redirect_uri, response_type=code, resource, code_challenge, code_challenge_method=S256, scope/state opsional; mengalihkan ke persetujuan konsol.
POST/mcp/oauth/tokenauthorization_code + code + code_verifier + redirect_uri dengan pengodean formulir, atau refresh_token + refresh_token. Selalu sertakan client_id dan resource.
POST/mcp/oauth/revokeclient_id dan token dengan pengodean formulir. Mencabut koneksi token akses/penyegaran yang cocok.
Contoh permintaan alat langsung

Inisialisasi dan negosiasikan protokol terlebih dahulu melalui klien MCP-mu. Ini menunjukkan permintaan berikutnya.

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/mcp" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'MCP-Protocol-Version: 2025-11-25' \
  --header 'Accept: application/json, text/event-stream' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_invoices",
    "arguments": {
      "project_id": "YOUR_PROJECT_ID",
      "limit": 10
    }
  }
}'

API Operator

Siapkan merchant yang dihosting dengan kunci sisi server terpisah yang dibatasi cakupannya.

Hosting beberapa bisnis dan otomatiskan penyiapannya melalui api.example.com/v1/operator. Tersedia mulai 7.4.0 hanya dalam mode Operator. API Merchant biasa tetap sama.

  1. Buka Operator → Pengaturan → API Operator dan aktifkan (nonaktif secara bawaan). Buat kredensial terpisah dengan hanya izin dan merchant yang dihosting yang diperlukan.
  2. Simpan kunci wc_operator_ di servermu. Gunakan nama host API, bukan nama host panel Operator atau kunci merchant.
  3. Simpan Idempotency-Key dan body permintaan persis secara persisten sebelum setiap POST Operator. Baca kembali akun setelah hasil yang belum pasti; jangan pernah mengganti kunci hanya untuk mencoba ulang.
  4. Buat merchant dengan onboarding: direct dan kata sandi, atau onboarding: invitation tanpa kata sandi. Lalu buat proyek/toko dan terbitkan kunci merchant dengan cakupan proyek untuk integrasi checkout-nya.
CakupanAkses
merchants.read / merchants.writeDaftar/baca serta buat/perbarui merchant yang dihosting.
users.read / users.write / users.securityBaca/buat/perbarui pengguna; ubah kata sandi atau cabut sesi secara terpisah. Tidak pernah membuat administrator operator.
invitations.read / invitations.writeDaftar/baca, buat, ganti, dan cabut tautan undangan/reset sekali pakai. Pengguna baru juga memerlukan users.write; reset juga memerlukan users.security.
credits.read / credits.write / fees.writeBaca saldo/buku besar; berikan atau koreksi kredit lokal; tetapkan biaya untuk ke depan. Kredit awal bukan nol memerlukan credits.write.
topups.read / topups.writeBaca atau buat permintaan checkout kredit merchant yang dihosting. Tidak ada tindakan API yang bisa menandainya lunas.
projects.read / projects.write / reports.readSiapkan proyek, toko, tampilan, dan pengaturan pembayaran merchant; baca faktur, saldo dompet, dan laporan keuangan.
merchant_credentials.read / merchant_credentials.writeKelola kunci merchant biasa dengan cakupan terbatas. Kewenangannya besar: kunci tersebut bertindak independen setelah diterbitkan.
events.read / webhooks.write / audit.read / health.readBaca riwayat siklus hidup; konfigurasikan callback siklus hidup bertanda tangan; baca audit/kemampuan/kesehatan node.
Pendaftaran, kredit, izin, dan percobaan ulang yang aman
TopikAturan
KredensialKedaluwarsa opsional dan daftar izin IPv4/IPv6 persis; bawaan 60 permintaan/menit, dapat dikonfigurasi 1–600. Setiap permintaan memeriksa administrator penerbit dan cakupan terkini. HTTP 429 menyertakan Retry-After.
IsolasiKunci hanya mengakses merchant yang dihosting yang ditetapkan padanya. Membuat merchant dan melihat laporan seluruh instalasi memerlukan akses semua merchant. Bisnis operator sendiri dikecualikan.
Login pertamaAkun langsung mengakui bahwa host bisa mengakses kunci dompet mereka. require_password_change menambahkan perubahan kata sandi saat login pertama. Penerimaan undangan memerlukan pengakuan kustodi secara eksplisit, lalu login normal. Basic Auth dan TOTP yang ada tetap berlaku.
UndanganTautan pengguna baru berlaku 48 jam; tautan reset kata sandi berlaku satu jam. Token sekali pakai. Penerbitan ulang mencabut tautan lama. Penerimaan SMTP tidak menjamin email sampai ke kotak masuk; periksa email_delivery.
Percobaan ulang yang amanSetiap POST Operator memerlukan kunci 16–128 karakter (huruf, angka, -, _, atau .). Kunci yang sama dan URL/body persis mengembalikan hasil tersimpan. Byte berbeda mengembalikan 409. Rahasia/tautan dihilangkan pada replay; rotasi atau terbitkan ulang melalui operasi eksplisit baru bila diperlukan.
Hasil yang belum pastioperator_request_in_progress berarti operasi sedang berjalan atau terputus sebelum tanda terimanya dicatat. Periksa resource dan audit; jangan sembarangan mengirim kunci baru. Tanda terima selesai dipadatkan setelah 30 hari; kunci lama tetap tidak bisa dijalankan lagi.
Kredit dan biayaString desimal, paling banyak enam desimal. starting_credit adalah pemberian lokal satu kali. Penyesuaian memerlukan jumlah bertanda positif/negatif, catatan, dan request_id, ditambah kunci percobaan ulang HTTP. fee_bps=100 berarti 1%; perubahan memengaruhi faktur mendatang. Pemberian kredit tidak mengisi ulang saldo prabayar instalasi sendiri.
Penjedaanenabled=false menonaktifkan akun yang dihosting dan mencabut sesi konsol. payments_paused=true menghentikan faktur baru. Pemantauan pembayaran yang ada berlanjut. Pembuatan proyek/toko dan otomatisasi mempertahankan kebijakan kredit instalasi.
Tidak tersediaTanpa rahasia dompet, penandatanganan, pengiriman, pengembalian dana, penghapusan permanen, reset TOTP, perubahan domain, atau konfigurasi tingkat server. Permintaan faktur biasa tetap menggunakan kunci merchant dan API Merchant.

Webhook siklus hidup Operator

PeristiwaData
merchant.created / merchant.updatedmerchant_id, enabled, payments_paused, fee_bps.
user.created / user.updatedmerchant_id, user_id, enabled. Peristiwa pembaruan mencakup perubahan email, status aktif, dan peran admin.
invitation.accepted / password_reset.completedmerchant_id, user_id, invitation_id.
topup.settled / credit.balance_changedmerchant_id, ledger_id, kind, amount, dan balance. Baca mata uang kredit merchant atau detail buku besar saat rekonsiliasi.

Peristiwa siklus hidup Operator terpisah dari IPN faktur/webhook toko. Langganan dimiliki kredensial Operator yang membuatnya, dengan hingga 10 endpoint per kunci. Hanya peristiwa cocok di masa mendatang yang masuk antrean; gunakan GET /events untuk riwayat tersimpan.

Body berisi event_id, event_type, merchant_id, occurred_at, dan data. Verifikasi Wholly-Signature atas body mentah persis menggunakan signing_secret endpoint yang ditampilkan satu kali: HMAC-SHA256(secret, timestamp + '.' + raw_body), header t=...,v1=.... Terapkan toleransi stempel waktu singkat.

Gunakan verifier tanda tangan generik SDK, bukan parser notifikasi fakturnya. Lalu validasi merchant_id dan event_type, simpan/deduplikasi event_id secara transaksional, dan kembalikan 2xx hanya setelah penerimaan persisten. Wholly-Event-Id harus cocok dengan body bertanda tangan. Jangan perlakukan header tanpa tanda tangan sebagai data bisnis.

Pengiriman setidaknya satu kali, bisa datang tidak berurutan, dan dicoba hingga 8 kali. Baca resource terkini untuk rekonsiliasi; occurred_at bukan urutan monoton. Cakupan dan pengaturan aktif/kedaluwarsa diperiksa ulang sebelum pengiriman. Langganan yang dinonaktifkan menjeda pekerjaan yang sudah masuk antrean, tetapi tidak mengantrekan peristiwa baru selama nonaktif.

Peristiwa dan riwayat pengiriman disimpan 30 hari. Kebijakan otomatisasi instalasi bisa menjeda pengiriman. GET /webhooks/{id}/deliveries menampilkan hasil dan payload yang tidak dapat diubah; API publik tidak memaksa pengiriman catatan yang kedaluwarsa.

{
  "event_id": "55555555-5555-4555-8555-555555555555",
  "event_type": "merchant.created",
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "occurred_at": "2026-10-01T12:00:00Z",
  "data": {
    "merchant_id": "11111111-1111-4111-8111-111111111111",
    "enabled": true,
    "payments_paused": false,
    "fee_bps": 300
  }
}

Buat merchant → · Terima undangan →

API Marketplace

Satu checkout dengan bagian vendor yang dilindungi dan pembayaran terkontrol.

Satu faktur pelanggan, bagian vendor presisi, dan pembayaran terkontrol dalam aset yang sama. Aktifkan per proyek. Versi 8.0.0 mendukung mainnet Bitcoin serta koin native EVM / token ERC-20 standar yang didukung dan dikonfigurasi, bukan semua jaringan penerimaan.

  1. Aktifkan Marketplace dalam proyek, pilih toko yang berpartisipasi, dan biarkan pembayaran dijeda selama konfigurasi.
  2. Daftarkan vendor dan verifikasi alamat pembayaran mereka secara independen. Tujuan yang dibuat berstatus tertunda; persetujuan memerlukan destinations.approve.
  3. Buat kredensial Marketplace terpisah di Pengaturan → Akses API. Kredensial Merchant biasa, Operator, dan MCP tidak bisa membelanjakan dana Marketplace.
  4. Buat faktur dengan 1–100 alokasi positif berupa string desimal yang totalnya sama persis dengan jumlah faktur. Setiap vendor memerlukan tujuan yang disetujui pada satu jaringan toko yang sama dan didukung.
  5. Tunggu ketersediaan alokasi terverifikasi. Siapkan pembayaran, baca penerima dan batas biaya yang tidak dapat diubah, lalu setujui revisi dan plan_hash persisnya. Polling pembayaran atau verifikasi peristiwa bertanda tangan.
TopikAturan
KustodiDana pelanggan masuk ke dompet yang dikendalikan proyek terlebih dahulu. Pemilik marketplace/server mengendalikan kunci tersebut sampai vendor dibayar. Ini bukan pembayaran langsung pelanggan ke vendor, escrow, atau sistem login vendor.
Tiga vendorFaktur 300 USD dengan tiga bagian 100 USD dan komisi 4% mengalokasikan kripto yang dikuotasikan senilai 96 USD kepada setiap vendor, menyisakan komisi kotor senilai 12 USD. Unit atomik kripto, bukan nilai fiat masa depan, dijamin oleh rencana.
BiayaBiaya pemrosesan yang ada berlaku sekali untuk jumlah/mata uang faktur asli yang diselesaikan. Pada tarif 1% yang dikonfigurasi, biayanya 3 USD kredit prabayar, menyisakan komisi senilai 9 USD sebelum biaya blockchain. Pembayaran vendor tidak menimbulkan biaya penjualan pelanggan tambahan.
AlokasiAlokasi sisa terbesar mempertahankan setiap unit atomik. Komisi dibulatkan ke bawah; bagian bersih vendor adalah sisanya. Pengesampingan alokasi, faktur, vendor, dan pengaturan bawaan toko/proyek disimpan dalam snapshot. Tidak ada kurs baru yang diterapkan saat pembayaran.
Dana yang dilindungiPengiriman biasa, sweep, deposit bursa, dan isi ulang kredit otomatis mengecualikan alamat penerimaan Marketplace. Biaya jaringan dan gas token memerlukan koin native bebas yang terpisah. Nilai dompet dalam cache bersifat referensi; kecukupan dana terkini diperiksa secara independen sebelum penandatanganan.
FinalitasBatas minimum blockchain yang positif dan dua penyedia kompatibel independen diperlukan untuk bukti pembayaran Marketplace, bahkan jika checkout menerima nol konfirmasi atau satu pemindai. Masa tunggu penyedia menunda verifikasi pembayaran/pembayaran vendor, bukan pembuatan faktur yang memenuhi persyaratan lainnya.
PengecualianKekurangan pembayaran yang diterima oleh toleransi checkout biasa ditahan, bukan dialokasikan berlebihan. Pelepasan dengan hak khusus bisa menyetujui pembagian presisi yang lebih kecil dan sepenuhnya didukung dana. Kelebihan pembayaran saja tidak pernah memblokir pembagian vendor yang dikuotasikan pada BTC atau metode native EVM/ERC-20 yang didukung. Kelebihan tetap ditahan terpisah. Bitcoin mengembalikan kembalian yang dilindungi ke alamat faktur; dana proyek terpisah menanggung biaya dan isi ulang untuk batas minimum dust jika ada. Metode campuran, pembayaran terlambat/ambigu/terkena reorg, dan dana pendukung yang kurang perlu ditinjau.
Pengembalian danaSiapkan pengembalian penuh dalam aset yang sama dari satu metode penerimaan terkonfirmasi yang tidak ambigu, lalu setujui secara terpisah sebagai pembayaran. Alokasi yang belum dibayar dan komisi dibalik. Setelah semua vendor dibayar, danai alamat dompet utama secara terpisah; tidak ada penarikan kembali. Batch vendor parsial dan pengembalian dana lintas aset memerlukan rekonsiliasi terlebih dahulu. Pengembalian sebagian jumlah dan penarikan komisi tidak tersedia di 8.0.0.
Percobaan ulangSetiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
RevisiCatatan yang bisa diubah memerlukan revisi terkininya. Persetujuan/pelanjutan juga memerlukan expected_plan_hash dan confirm:true. Penyiapan mencadangkan dana selama 15 menit; persetujuan mengizinkan satu jam. Pekerjaan belum ditandatangani yang kedaluwarsa dilepaskan dengan aman. Transfer yang ditandatangani/belum pasti mempertahankan identitas dan pencadangan dana.
Pembayaran otomatisNonaktif secara bawaan. Kebijakan per aset mengotorisasi tujuan yang disetujui, minimum positif, batas pokok per pembayaran/periode berjalan 24 jam, batas biaya native/gas, interval, dan konfirmasi. Mengubah/mencabut wewenang menghentikan pekerjaan yang belum dikirim; observasi berlanjut. Batas mencakup rencana yang dicadangkan dan belum pasti. Kebijakan yang dijeda penagihan dijadwalkan ulang secara adil. Faktur tidak valid ditahan untuk ditinjau tanpa memblokir kelompok faktur lain yang memenuhi syarat.
Jeda dan pemulihanKredit rendah dan gerbang keamanan transfer tetap menjeda pembelanjaan. Pemantauan dan rekonsiliasi buku besar berlanjut. Pelanjutan meninjau rencana tersimpan yang sama. Revert EVM kanonis yang dibuktikan dua penyedia independen bisa diganti setelah persetujuan eksplisit, dalam sisa anggaran biaya; hash dan biaya asli tetap dicatat. Hasil yang tidak diketahui atau ketidakcocokan pengiriman token tetap ditahan. Cadangkan seluruh database dan kunci; rekonsiliasikan hash yang sudah diajukan setelah pemulihan sebelum mengizinkan pembayaran.
Pengenal dan paginasiGunakan UUID proyek dari Pengaturan Proyek dan UUID toko dari Toko → Dasar → ID API. ID vendor/pembayaran/aset dikembalikan oleh API ini. invoice_id adalah UUID faktur publik. Resource berhalaman mengembalikan data dan pagination {page,per_page,total,pages}; bawaan 1/25, maksimum 100 baris. Nilai uang presisi berupa string.
Cakupan kredensialKunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Izin Marketplace

marketplace.read · vendors.write · destinations.write · destinations.approve · invoices.write · policies.write · commissions.override · payouts.write · payouts.approve · webhooks.write · reconciliation.write

Status alokasi

pending · held · available · reserved · paid · refunding · refunded · shortfall

Status pembayaran

awaiting_approval · queued · funding_gas · sending · confirming · partially_paid · paid · needs_attention · cancelled · expired

Peristiwa Marketplace

Rahasia penandatanganan Marketplace terpisah, menggunakan header tanda tangan Wholly dan algoritma verifikasi HMAC body mentah yang sama dengan callback faktur. Verifikasi stempel waktu/tanda tangan, deduplikasi event_id, dan segera kembalikan 2xx. Pengiriman setidaknya satu kali, hingga delapan percobaan; riwayat bisa mengirim ulang peristiwa yang sama. Perubahan endpoint membatalkan pengiriman lama yang belum dikirim, bukan mengalihkan data pelanggan. Penyelesaian faktur bukan selesainya pembayaran vendor. Jangan pernah mengirim uang hanya karena callback eksternal menyuruhnya.

  • marketplace.invoice.created
  • marketplace.allocations.available
  • marketplace.allocations.held
  • marketplace.payout.approved
  • marketplace.payout.broadcast
  • marketplace.payout.confirmed
  • marketplace.payout.partial
  • marketplace.payout.failed
  • marketplace.payout.cancelled
  • marketplace.refund.prepared
  • marketplace.refund.confirmed
{
  "event_id": "11111111-1111-4111-8111-111111111111",
  "event_type": "marketplace.payout.confirmed",
  "payload_version": 1,
  "project_id": "YOUR_PROJECT_ID",
  "occurred_at": "2026-10-06T12:00:00Z",
  "data": {
    "payout_id": "YOUR_PAYOUT_ID",
    "asset_id": "YOUR_ASSET_ID",
    "amount_atomic": "28800000",
    "transactions": [
      {
        "transaction_id": "EXAMPLE_TRANSACTION_ID",
        "explorer_url": "https://mempool.space/tx/EXAMPLE_TRANSACTION_ID"
      }
    ]
  }
}

Siapkan pembayaran multivendor · Buat faktur Marketplace

Kesalahan & batasan

Tangani validasi, kuota, dan percobaan ulang secara terprediksi.

Periksa status HTTP dan Content-Type sebelum parsing respons. Untuk 429, tunggu setidaknya selama Retry-After sebelum mencoba lagi.

BatasDetail
Laju permintaanKuota per kredensial: bawaan 120 permintaan per menit UTC, dapat dikonfigurasi dari 1 sampai 6000 di Pengaturan → API. Semua pembacaan dan penulisan v1 terautentikasi, termasuk percobaan ulang idempoten serta kegagalan otorisasi/validasi setelah autentikasi, berbagi jatah lintas domain, proyek, dan proses. Kredensial tidak valid, rute konsol, dan checkout publik tidak menggunakannya.
Header pembatasan permintaanRespons v1 terautentikasi mencakup X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset (detik Unix pada batas menit UTC berikutnya). Permintaan berlebih mengembalikan JSON 429 rate_limit_exceeded dan Retry-After dalam detik bulat. Tunggu setidaknya selama itu dan tambahkan variasi acak pada jeda percobaan ulang. Jendela tetap memungkinkan lonjakan pada batas menit; ini bukan jaminan permintaan per detik.
Body merchantMaksimum 32 KiB pada router aplikasi. Edge bisa menolak permintaan terlalu besar sebelum envelope kesalahan JSON dihasilkan.
Daftar fakturlimit bawaan 50 dan menerima 1–100; offset menerima 0–1,000,000. Pencarian paling banyak 100 karakter. Hasil diurutkan dari yang terbaru dan menyertakan metadata total/has_more.
Metode tokoPaling banyak 64 pilihan aset per toko, cukup untuk seluruh 30 blockchain native ditambah katalog token terverifikasi yang dibatasi. Kebijakan proyek, kemampuan pemindai, dan dompet blockchain siap pakai yang sudah dicadangkan tetap menjadi syarat pembuatan faktur.
Penemuan tokenBatas kandidat bawaan 50 dan menerima 1–100. Hasil penemuan belum menjadi aset pembayaran sampai verifikasi on-chain berhasil.
Token proyek terdaftarPaling banyak 20 aset token persisten per proyek. Aset yang sudah terdaftar bisa digunakan kembali tanpa memakai slot lain.
IdempotensiWajib untuk pembuatan faktur. 1–128 karakter ASCII terlihat tanpa spasi; kunci unik per toko, dan replay harus menggunakan kredensial asli serta body mentah persis.
MetadataHanya objek JSON, maksimum 4,096 byte terenkode dan lima tingkat penyarangan.
CallbackURL HTTPS publik hingga 2,048 byte. Body permintaan notifikasi dibatasi 256 KiB; payload peristiwa faktur tersimpan dibatasi 64 KiB dengan riwayat pembayaran terbatas.
Aset checkoutRespons QR SVG bersifat private dan no-store karena kekurangan pembayaran mengubah sisa presisi. Logo PNG dengan revisi disimpan dalam cache publik selama satu tahun dan tidak dapat diubah.
Edge APIPermintaan upstream API yang dikelola memiliki batas waktu baca 30 detik. Rancang pemanggil dengan batas waktu eksplisit yang lebih pendek dari anggaran waktu pekerjaannya.
Kegagalan non-JSONEkstraksi UUID/kueri yang salah format, metode yang salah, dan batas panjang 32 KiB bisa mengembalikan respons teks/kosong framework. Path /v1 yang tidak dikenal saat ini mengembalikan HTML konsol 404; validasi status dan Content-Type sebelum parsing.

Referensi kesalahan

HTTPKode kesalahanArti
400invalid_reconciliation_actionFilter status pengecualian, alasan, pencarian, atau halaman riwayat tidak valid.
500reconciliation_unavailableAntrean pengecualian atau bukti tidak bisa dimuat. Coba ulang pembacaan dengan jeda yang bertambah.
402billing_requiredAkun kredit berpasangan yang terverifikasi dan otorisasi aktif diperlukan untuk setiap faktur baru. Kredit prabayar yang tidak cukup tidak memblokir pembuatan atau pembayaran masuk: IPN, webhook, dan Sweep yang dijeda, sementara biaya terus terakumulasi. Pembuatan tetap diblokir untuk akun ditangguhkan, verifikasi penagihan kedaluwarsa/tidak valid, layanan kredit tidak terjangkau, atau dasar fiat faktur yang tidak diotorisasi. Biaya menggunakan jumlah fiat faktur asli, bukan kripto diterima, spread, kelebihan pembayaran, atau biaya jaringan. Jumlah tersebut dan konversi independen didaftarkan sebelum pembuatan checkout. Pemantauan dan pengambilan faktur yang ada berlanjut selama gangguan. Setelah pendanaan, notifikasi dalam antrean dilanjutkan dalam masa retensi payload normal, dan aturan sweep aktif dilanjutkan. Periksa Pengaturan → Biaya dan coba ulang pembuatan gagal dengan Idempotency-Key yang sama.
400invalid_jsonJSON salah format, kolom tidak dikenal, atau body yang tidak sesuai dengan permintaan terdokumentasi.
400idempotency_key_requiredPembuatan faktur tidak menyertakan Idempotency-Key.
400invalid_idempotency_keyKunci kosong, lebih dari 128 byte, non-ASCII, mengandung spasi, atau mengandung byte kontrol.
400invalid_payment_requestKolom tervalidasi atau metode aktif yang dipilih gagal. Baca error.message dan error.details.payment_methods (PaymentMethodIssue[]) untuk penyebab tepatnya. SDK 2.4.0+ menambahkan ringkasan pengecualian aman yang bisa ditindaklanjuti serta helper masalah; SDK PHP lama menyediakan getApiMessage().
400invalid_invoice_statusStatus daftar berada di luar enam status faktur yang didokumentasikan.
400invalid_callback_urlTujuan IPN efektif gagal dalam validasi HTTPS, alamat publik, DNS, atau SSRF.
400invalid_wallet_requestInput penyiapan dompet/alamat tidak valid.
400invalid_token_assetBlockchain token, kueri kandidat, identitas CoinGecko, metadata katalog, atau input kontrak/mint tidak valid.
401authentication_requiredToken bearer tidak ada, salah format, dinonaktifkan, dirotasi, atau tidak dikenal.
403source_ip_deniedPembatasan IP kredensial tidak mencakup alamat sumber publik permintaan secara persis.
403source_ip_not_allowedPembatasan IP sumber nama host mengecualikan klien ini. Administrator bisa mengelola daftar izin host aktif di Pengaturan → Sistem; ini berlaku selain pembatasan IP kredensial.
503source_access_unavailableVerifikasi akses nama host sementara tidak tersedia. Coba lagi nanti; pembatasan tetap menolak akses saat pemeriksaan gagal.
403 / 409 / 500merchant_api_access_deniedOtorisasi gagal: izin/cakupan proyek bisa menghasilkan 403, proyek/toko nonaktif bisa menghasilkan 409, dan kegagalan backend otorisasi bisa menghasilkan 500. Dompet penerimaan Operator dikhususkan untuk panel Operator, bukan kredensial API merchant atau MCP, bahkan dengan izin proyek eksplisit lama.
403project_access_deniedPemeriksaan ulang transaksional saat pembuatan menemukan bahwa kredensial tidak lagi memiliki akses ke proyek.
404invoice_not_foundTidak ada faktur dengan ID publik tersebut dalam proyek yang diotorisasi, atau checkout tidak bisa menampilkannya.
404payment_resource_not_foundProyek, toko, aset, atau dompet yang diperlukan saat menyiapkan faktur tidak lagi ada.
404token_candidate_not_foundProyek tidak tersedia atau token tidak lagi ada dalam katalog penemuan cocok saat ini.
409idempotency_conflictKunci dengan cakupan toko sudah ada dan kredensial atau byte permintaan mentah persis berbeda.
409store_unavailableProyek/toko dinonaktifkan atau tidak tersedia.
409no_ready_payment_methodsTidak ada metode toko yang siap. Baca error.message dan error.details.payment_methods untuk chain_slug, asset_ticker, dan reason_code. Cadangan/aktivasi dompet, adapter terinstal, dan harga harus valid. Mulai 6.0.6, masa tunggu pemindai, pemeriksaan kesehatan gagal atau usang, serta kuorum penyedia yang belum terpenuhi tidak memblokir pembuatan.
409payment_method_unavailableMetode yang dipilih menjadi tidak tersedia saat pemeriksaan ulang atomik pada pembuatan.
409store_payment_method_not_selectedPengesampingan konfirmasi toko diminta untuk aset yang saat ini tidak dipilih toko tersebut.
409wallet_unavailableDompet pembayaran menjadi tidak tersedia saat pemeriksaan ulang atomik pada pembuatan.
409ipn_secret_requiredURL IPN efektif ada, tetapi toko tidak memiliki rahasia penandatanganan IPN.
409payment_resource_not_readyAset pembayaran atau dompet yang diperlukan dinonaktifkan, belum dicadangkan, menunggu bukti aktivasi akun bersama, habis, atau belum siap karena alasan lain.
409account_activation_unverifiedAktivasi akun XRP Ledger atau Stellar tidak bisa dibuktikan melalui jumlah endpoint mainnet sehat yang dikonfigurasi (bawaan 2, opsional 1); danai akun yang tepat dan coba ulang verifikasi.
400invalid_monero_wallet_rpcEndpoint HTTPS, alamat utama mainnet persis, label, atau input autentikasi Digest/Basic/header lengkap tidak valid.
404monero_wallet_rpc_not_foundIkatan wallet-RPC Monero dengan cakupan proyek tidak ada.
409monero_wallet_rpc_not_readyAset Monero, kuorum dua daemon, ikatan yang tidak dapat diubah, atau pernyataan cadangan/hanya lihat eksplisit belum siap.
409monero_wallet_rpc_unavailablePembuatan faktur memerlukan ikatan wallet-RPC Monero proyek yang aktif, terverifikasi, dan telah dinyatakan, dengan kredensial sisi server valid.
503lightning_unavailableSatu-satunya metode toko yang siap adalah Lightning dan dompet atau kuotasinya tidak bisa diverifikasi. Coba lagi dengan kunci idempotensi yang sama. Jika ada metode on-chain lain yang siap, metode Lightning yang tidak tersedia dihilangkan.
422monero_wallet_rpc_verification_failedDompet persis, pinning HTTPS, sinkronisasi, kuorum daemon mainnet, atau bukti penolakan metode gateway gagal.
503monero_wallet_rpc_failedwallet-RPC hanya pantau eksternal tidak bisa menyiapkan dan membaca ulang subalamat faktur dengan aman; tidak ada alamat cadangan yang direkayasa.
409token_chain_not_readyAset blockchain native dinonaktifkan, pemetaan penemuan berubah saat verifikasi, atau proyek sudah memiliki maksimum saat ini sebanyak 20 aset token terdaftar.
503dex_price_unavailablePenyedia DEX tidak tersedia, sibuk, dibatasi permintaan, memberikan respons usang, atau data salah format. Coba lagi setelah satu menit; harga tetap masih tersedia.
422invalid_dex_priceKombinasi mode harga tidak valid atau pool yang dipilih tidak bisa menyediakan harga yang memenuhi syarat untuk kontrak persis. Pilih pool lain atau harga USD tetap.
422token_verification_failedSetiap node yang memenuhi syarat gagal memverifikasi identitas blockchain, kode kontrak, desimal, kueri saldo, atau mint.
422invalid_store_confirmation_policyPengesampingan toko tidak tersedia untuk mode finalitas ini, berada di luar batas khusus blockchain yang dikembalikan, atau meminta penerimaan nol konfirmasi yang tidak didukung.
409invoice_not_payableFaktur checkout berada pada status akhir atau tenggat pembayarannya telah berlalu.
409invoice_payment_method_lockedPembayaran valid sudah memilih aset lain; lanjutkan dengan active_payment_method_id.
409payment_method_not_payableMetode yang dipilih sudah selesai atau tidak lagi menerima pembayaran lain.
422payment_qr_unavailablePermintaan pembayaran checkout terlalu besar untuk dienkode sebagai gambar QR SVG.
503payment_rates_unavailableTidak ada kuotasi terbaru yang tepercaya untuk metode pembayaran siap mana pun.
500authentication_unavailableAutentikasi bearer tidak bisa membaca atau memvalidasi kredensial tersimpannya dengan aman.
429rate_limit_exceededKredensial ini telah menghabiskan jatah menit UTC saat ini. Tunggu setidaknya sejumlah detik Retry-After; coba ulang pembuatan faktur dengan kunci idempotensi yang sama.
500database_error / internal_errorKegagalan sementara sisi server; coba ulang dengan aman menggunakan kunci idempotensi yang sama.

Ikhtisar API

Pilih endpoint untuk melihat kolom, contoh, dan responsnya.

Faktur

POSTBuat faktur/v1/projects/{project_id}/stores/{store_id}/invoicesGETDaftar faktur/v1/projects/{project_id}/invoicesGETAmbil faktur/v1/projects/{project_id}/invoices/{invoice_id}GETDaftar pembayaran faktur/v1/projects/{project_id}/invoices/{invoice_id}/payments

Metode pembayaran

GETDaftar aset pembayaran proyek/v1/projects/{project_id}/payment-assetsPUTPerbarui kebijakan aset proyek/v1/projects/{project_id}/payment-assets/{asset_id}GETJelajahi kandidat token pembayaran/v1/projects/{project_id}/payment-token-candidatesPOSTVerifikasi dan daftarkan token/v1/projects/{project_id}/payment-token-assetsGETTemukan pool DEX token kustom/v1/projects/{project_id}/payment-token-dex-poolsPOSTTambahkan atau ubah harga token kustom/v1/projects/{project_id}/payment-token-assets/customGETDaftar metode pembayaran toko/v1/projects/{project_id}/stores/{store_id}/payment-assetsPUTGanti metode pembayaran toko/v1/projects/{project_id}/stores/{store_id}/payment-assetsPUTTetapkan kebijakan konfirmasi toko/v1/projects/{project_id}/stores/{store_id}/payment-assets/{asset_id}/confirmation-policy

Dompet

GETDaftar dompet dan saldo proyek/v1/projects/{project_id}/wallets

Rekonsiliasi

GETDaftar pengecualian pembayaran/v1/projects/{project_id}/reconciliationGETBaca bukti rekonsiliasi/v1/projects/{project_id}/reconciliation/{invoice_id}

API Marketplace

GETKemampuan/v1/marketplace/capabilitiesGETLaporan Marketplace/v1/marketplace/overviewGETPengaturan proyek/v1/marketplace/settingsPOSTSimpan pengaturan proyek/v1/marketplace/settingsGETDaftar vendor/v1/marketplace/vendorsPOSTBuat vendor/v1/marketplace/vendorsGETAmbil vendor/v1/marketplace/vendors/{vendor_id}POSTPerbarui vendor/v1/marketplace/vendors/{vendor_id}/updatePOSTArsipkan vendor/v1/marketplace/vendors/{vendor_id}/archiveGETTujuan vendor/v1/marketplace/vendors/{vendor_id}/destinationsPOSTTambahkan tujuan pembayaran/v1/marketplace/vendors/{vendor_id}/destinationsPOSTSetujui tujuan/v1/marketplace/vendors/{vendor_id}/destinations/{destination_id}/approvePOSTNonaktifkan tujuan/v1/marketplace/vendors/{vendor_id}/destinations/{destination_id}/disableGETSaldo vendor/v1/marketplace/vendors/{vendor_id}/balancesGETFaktur Marketplace/v1/marketplace/invoicesPOSTBuat faktur multivendor/v1/marketplace/invoicesGETFaktur dan alokasi/v1/marketplace/invoices/{invoice_id}GETBukti pembayaran faktur/v1/marketplace/invoices/{invoice_id}/paymentsGETAlokasi faktur/v1/marketplace/invoices/{invoice_id}/allocationsPOSTBatalkan faktur belum dibayar/v1/marketplace/invoices/{invoice_id}/cancelPOSTTahan alokasi/v1/marketplace/invoices/{invoice_id}/allocations/holdPOSTTinjau dan lepaskan alokasi/v1/marketplace/invoices/{invoice_id}/allocations/releasePOSTTautkan ulang tujuan yang belum dibayar/v1/marketplace/invoices/{invoice_id}/allocations/{allocation_id}/destinationPOSTSiapkan pengembalian dana penuh/v1/marketplace/invoices/{invoice_id}/refundGETTemukan alokasi pembayaran/v1/marketplace/allocationsGETSaldo buku besar proyek/v1/marketplace/balancesGETJurnal yang tidak dapat diubah/v1/marketplace/ledgerGETRiwayat pembayaran/v1/marketplace/payoutsPOSTPratinjau rencana alokasi/v1/marketplace/payouts/previewPOSTSiapkan pembayaran/v1/marketplace/payoutsGETDetail pembayaran/v1/marketplace/payouts/{payout_id}POSTSetujui dan kirim/v1/marketplace/payouts/{payout_id}/approvePOSTTinjau dan lanjutkan pembayaran/v1/marketplace/payouts/{payout_id}/resumePOSTBatalkan pekerjaan yang belum ditandatangani/v1/marketplace/payouts/{payout_id}/cancelGETKebijakan pembayaran otomatis/v1/marketplace/policiesPOSTOtorisasi kebijakan pembayaran/v1/marketplace/policiesGETWebhook Marketplace/v1/marketplace/webhooksPOSTBuat webhook Marketplace/v1/marketplace/webhooksPOSTPerbarui webhook Marketplace/v1/marketplace/webhooks/{webhook_id}/updatePOSTNonaktifkan webhook Marketplace/v1/marketplace/webhooks/{webhook_id}/disableGETPeristiwa Marketplace/v1/marketplace/eventsGETBaca peristiwa tersimpan/v1/marketplace/events/{event_id}GETRiwayat pengiriman Marketplace/v1/marketplace/webhook-deliveriesGETDetail pengiriman/v1/marketplace/webhook-deliveries/{delivery_id}POSTKirim ulang peristiwa yang sama/v1/marketplace/webhook-deliveries/{delivery_id}/resend

API Operator

GETKemampuan/v1/operator/capabilitiesGETKesehatan/v1/operator/healthGETDaftar Merchant/v1/operator/merchantsPOSTBuat Merchant/v1/operator/merchantsGETAmbil Merchant/v1/operator/merchants/{merchant_id}POSTPerbarui Merchant/v1/operator/merchants/{merchant_id}GETDaftar Pengguna/v1/operator/merchants/{merchant_id}/usersPOSTBuat Pengguna/v1/operator/merchants/{merchant_id}/usersGETAmbil Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}POSTPerbarui Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}POSTTetapkan Kata Sandi Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}/passwordPOSTCabut Sesi Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}/revoke-sessionsGETDaftar Undangan/v1/operator/merchants/{merchant_id}/invitationsPOSTBuat Undangan/v1/operator/merchants/{merchant_id}/invitationsGETAmbil Undangan/v1/operator/invitations/{invitation_id}POSTKirim Ulang Undangan/v1/operator/invitations/{invitation_id}/resendPOSTCabut Undangan/v1/operator/invitations/{invitation_id}/revokeGETAmbil Kredit/v1/operator/merchants/{merchant_id}/creditsGETDaftar Buku Besar Kredit/v1/operator/merchants/{merchant_id}/credits/ledgerPOSTSesuaikan Kredit/v1/operator/merchants/{merchant_id}/credits/adjustmentsGETDaftar Isi Ulang/v1/operator/merchants/{merchant_id}/topupsPOSTBuat Isi Ulang/v1/operator/merchants/{merchant_id}/topupsGETAmbil Isi Ulang/v1/operator/merchants/{merchant_id}/topups/{topup_id}GETLaporan/v1/operator/reportsGETDaftar Audit/v1/operator/auditGETDaftar Peristiwa/v1/operator/eventsGETDaftar Webhook/v1/operator/webhooksPOSTBuat Webhook/v1/operator/webhooksPOSTPerbarui Webhook/v1/operator/webhooks/{webhook_id}POSTRotasi Rahasia Webhook/v1/operator/webhooks/{webhook_id}/rotateGETDaftar Pengiriman Webhook/v1/operator/webhooks/{webhook_id}/deliveriesGETDaftar Proyek/v1/operator/merchants/{merchant_id}/projectsPOSTBuat Proyek/v1/operator/merchants/{merchant_id}/projectsGETAmbil Proyek/v1/operator/merchants/{merchant_id}/projects/{project_id}POSTPerbarui Proyek/v1/operator/merchants/{merchant_id}/projects/{project_id}GETDaftar Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/storesPOSTBuat Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/storesGETAmbil Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}POSTPerbarui Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}GETAmbil Tampilan Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/checkout-appearancePOSTPerbarui Tampilan Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/checkout-appearanceGETDaftar Aset Pembayaran Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/payment-assetsPOSTPerbarui Aset Pembayaran Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/payment-assetsGETDaftar Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooksPOSTBuat Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooksPOSTPerbarui Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooks/{webhook_id}GETDaftar Faktur/v1/operator/merchants/{merchant_id}/projects/{project_id}/invoicesGETAmbil Faktur/v1/operator/merchants/{merchant_id}/projects/{project_id}/invoices/{invoice_id}GETDaftar Dompet/v1/operator/merchants/{merchant_id}/projects/{project_id}/walletsGETDaftar Alamat Dompet/v1/operator/merchants/{merchant_id}/projects/{project_id}/wallets/{wallet_id}/addressesGETDaftar Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentialsPOSTBuat Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentialsPOSTPerbarui Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}POSTRotasi Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}/rotatePOSTCabut Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}/revokePOSTPeriksa token undangan/v1/onboarding/invitations/checkPOSTTerima undangan atau reset kata sandi/v1/onboarding/invitations/accept

Checkout

GETKerangka checkout/GETHalaman checkout yang dihosting/invoice/{invoice_id}GETFaktur yang aman untuk checkout/checkout-api/invoices/{invoice_id}GETPratinjau checkout toko/invoice/preview/{project_id}GETData pratinjau checkout/checkout-api/previews/{project_id}GETGambar checkout toko/checkout-api/invoices/{invoice_id}/appearance-images/{kind}/{revision}/image.pngGETGambar pratinjau toko/checkout-api/previews/{project_id}/stores/{store_id}/appearance-images/{kind}/{revision}/image.pngGETLogo pratinjau dengan revisi/checkout-api/previews/{project_id}/logo/{revision}/image.pngGETGambar QR pembayaran/checkout-api/invoices/{invoice_id}/payment-methods/{intent_id}/qr.svgGETLogo checkout dengan revisi/checkout-api/invoices/{invoice_id}/logo/{revision}/image.png

Layanan

GETPenemuan layanan API/GETKesehatan layanan/healthz
GETKemampuan/v1/operator/capabilitiesHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/capabilities" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "api_version": "v1",
  "operator_version": "7.4.0",
  "scopes": [
    "health.read"
  ],
  "all_merchants": false,
  "merchant_ids": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "onboarding": [
    "direct",
    "invitation"
  ],
  "write_methods": [
    "POST"
  ],
  "idempotency_required": true
}

Kolom respons

api_versionstring
operator_versionstring
scopes[]array
all_merchantsboolean
merchant_ids[]array
onboarding[]array
write_methods[]array
idempotency_requiredboolean
Catatan penggunaan
  • Memerlukan health.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETKesehatan/v1/operator/healthHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/health" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "version": "7.4.0",
  "nodes": []
}

Kolom respons

versionstring
nodes[]array
Catatan penggunaan
  • Memerlukan health.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Merchant/v1/operator/merchantsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan merchants.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Merchant/v1/operator/merchantsBaca + tulis

Buat merchant yang dihosting dan administrator pertama secara atomik, langsung dengan kata sandi atau melalui undangan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Example shop",
  "email": "admin@example.test",
  "onboarding": "direct",
  "password": "REPLACE_WITH_A_UNIQUE_TEMPORARY_PASSWORD",
  "require_password_change": true,
  "currency": "EUR",
  "starting_credit": "0",
  "external_id": "customer-1042"
}'

Body permintaan

namestringwajib

Nama merchant dan email admin pertama yang unik secara global.

emailstringwajib

Nama merchant dan email admin pertama yang unik secara global.

onboardingdirect | invitationwajib

direct memerlukan password, tidak mengirim email undangan. invitation tidak menyertakan password.

passwordstring · direct only

12–128 karakter (paling banyak 512 byte UTF-8); tidak pernah dikembalikan atau dikirim melalui email. Gunakan require_password_change untuk kata sandi sementara.

require_password_changebooleanopsional

Memerlukan kata sandi baru saat login pertama. Setiap akun yang disiapkan langsung harus mengakui kustodi dompet oleh host.

currencyfiat codeopsional

Mata uang akun prabayar; bawaan mengikuti mata uang regional dan tidak bisa diubah kemudian.

fee_bpsintegeropsional

0–10000; 100 berarti 1%. Menggunakan pengaturan bawaan operator jika tidak disertakan. Memerlukan fees.write.

starting_creditdecimal stringopsional

Pemberian lokal presisi satu kali. Nilai bukan nol memerlukan credits.write. Tidak mengisi ulang saldo instalasi operator.

external_idstringopsional

Referensi integrasi unik, 1–120 karakter.

default_timezoneIANA timezoneopsional

Bawaan mengikuti zona waktu regional instalasi.

send_invitation_emailbooleanopsional

Khusus undangan. Memerlukan SMTP yang dikonfigurasi; respons membedakan penerimaan relay dari pembuatan akun.

Respons 201 or 200 application/json

Contoh respons
{
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "user_id": "22222222-2222-4222-8222-222222222222",
  "merchant": {
    "id": "11111111-1111-4111-8111-111111111111",
    "name": "Example shop",
    "currency": "EUR",
    "balance": "0"
  },
  "onboarding": "direct",
  "access_link": null,
  "email_delivery": {
    "status": "not_requested"
  },
  "custody_acceptance_required": true
}

Kolom respons

merchant_idstring
user_idstring
merchantobject
idstring
namestring
currencystring
balancestring
onboardingstring
email_deliveryobject
statusstring
custody_acceptance_requiredboolean
Catatan penggunaan
  • Memerlukan merchants.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Akses merchant global diperlukan. Pengesampingan biaya eksplisit juga memerlukan fees.write; starting_credit bukan nol memerlukan credits.write. Pendaftaran melalui undangan juga memerlukan invitations.write. Tanpa login otomatis, tanpa melewati Basic Auth, tanpa kredit retroaktif saat percobaan ulang.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Merchant/v1/operator/merchants/{merchant_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "11111111-1111-4111-8111-111111111111",
  "name": "Example shop",
  "currency": "EUR",
  "balance": "10",
  "fee_bps": 300,
  "enabled": true,
  "payments_paused": false,
  "external_id": "customer-1042"
}

Kolom respons

idstring
namestring
currencystring
balancestring
fee_bpsinteger
enabledboolean
payments_pausedboolean
external_idstring
Catatan penggunaan
  • Memerlukan merchants.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Merchant/v1/operator/merchants/{merchant_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "payments_paused": true
}'

Body permintaan

namefieldsopsional
Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.Detail

Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.

enabledfieldsopsional
Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.Detail

Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.

payments_pausedfieldsopsional
Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.Detail

Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.

fee_bpsfieldsopsional
Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.Detail

Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.

external_idfieldsopsional
Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.Detail

Penonaktifan mencabut sesi. payments_paused memblokir faktur baru, bukan pemindaian pembayaran yang ada. Perubahan biaya memerlukan fees.write dan memengaruhi faktur mendatang; mata uang akun tidak bisa berubah.

Respons 200 application/json

Contoh respons
{
  "id": "11111111-1111-4111-8111-111111111111",
  "name": "Example shop",
  "currency": "EUR",
  "balance": "10",
  "fee_bps": 300,
  "enabled": true,
  "payments_paused": false
}

Kolom respons

idstring
namestring
currencystring
balancestring
fee_bpsinteger
enabledboolean
payments_pausedboolean
Catatan penggunaan
  • Memerlukan merchants.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Pengguna/v1/operator/merchants/{merchant_id}/usersHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan users.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Pengguna/v1/operator/merchants/{merchant_id}/usersBaca + tulis

Tambahkan administrator merchant atau pengguna yang dibatasi ke proyek tertentu.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "email": "staff@example.test",
  "display_name": "Store team",
  "onboarding": "invitation",
  "access_level": "projects",
  "project_ids": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "send_invitation_email": false
}'

Body permintaan

emailstringswajib

Email unik dalam instalasi.

display_namestringswajib

Email unik dalam instalasi.

onboardingsame as merchant creation

Pembuatan undangan juga memerlukan invitations.write.

passwordsame as merchant creation

Pembuatan undangan juga memerlukan invitations.write.

require_password_changesame as merchant creation

Pembuatan undangan juga memerlukan invitations.write.

send_invitation_emailsame as merchant creation

Pembuatan undangan juga memerlukan invitations.write.

access_leveladmin | projectsopsional

admin hanya administrator merchant ini, tidak pernah administrator instalasi/operator.

project_ids[]UUID[]

Hanya proyek milik merchant. Pilihan wajib untuk akses terbatas proyek; tidak pernah lintas tenant.

default_timezoneIANA timezoneopsional

Pengaturan regional bawaan jika tidak disertakan.

Respons 201 or 200 application/json

Contoh respons
{
  "user": {
    "id": "22222222-2222-4222-8222-222222222222",
    "merchant_id": "11111111-1111-4111-8111-111111111111",
    "email": "admin@example.test",
    "display_name": "Shop administrator",
    "access_level": "admin",
    "project_ids": [],
    "enabled": true,
    "password_setup_required": false,
    "custody_acceptance_required": true,
    "password_change_required": true
  },
  "user_id": "22222222-2222-4222-8222-222222222222",
  "access_link": null,
  "email_delivery": {
    "status": "not_requested"
  },
  "merchant_id": "11111111-1111-4111-8111-111111111111"
}

Kolom respons

userobject
idstring
merchant_idstring
emailstring
display_namestring
access_levelstring
project_ids[]array
enabledboolean
password_setup_requiredboolean
custody_acceptance_requiredboolean
password_change_requiredboolean
user_idstring
email_deliveryobject
statusstring
merchant_idstring
Catatan penggunaan
  • Memerlukan users.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

user_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users/YOUR_USER_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "22222222-2222-4222-8222-222222222222",
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "email": "admin@example.test",
  "display_name": "Shop administrator",
  "access_level": "admin",
  "project_ids": [],
  "enabled": true,
  "password_setup_required": false,
  "custody_acceptance_required": true,
  "password_change_required": true
}

Kolom respons

idstring
merchant_idstring
emailstring
display_namestring
access_levelstring
project_ids[]array
enabledboolean
password_setup_requiredboolean
custody_acceptance_requiredboolean
password_change_requiredboolean
Catatan penggunaan
  • Memerlukan users.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

user_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users/YOUR_USER_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "display_name": "Store manager"
}'

Body permintaan

emailfieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

display_namefieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

enabledfieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

access_levelfieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

project_idsfieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

default_timezonefieldsopsional

Memperbarui kolom yang diberikan; perlindungan admin terakhir tetap berlaku. Kata sandi memiliki operasi users.security terpisah.

Respons 200 application/json

Contoh respons
{
  "id": "22222222-2222-4222-8222-222222222222",
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "email": "admin@example.test",
  "display_name": "Shop administrator",
  "access_level": "admin",
  "project_ids": [],
  "enabled": true,
  "password_setup_required": false,
  "custody_acceptance_required": true,
  "password_change_required": true
}

Kolom respons

idstring
merchant_idstring
emailstring
display_namestring
access_levelstring
project_ids[]array
enabledboolean
password_setup_requiredboolean
custody_acceptance_requiredboolean
password_change_requiredboolean
Catatan penggunaan
  • Memerlukan users.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTetapkan Kata Sandi Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}/passwordBaca + tulis

Tetapkan kata sandi akun yang dihosting dan cabut sesi. TOTP yang ada dipertahankan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

user_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users/YOUR_USER_ID/password" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "password": "REPLACE_WITH_A_NEW_UNIQUE_PASSWORD",
  "require_password_change": true
}'

Body permintaan

passwordstringwajib

Mengubah kata sandi dan mencabut sesi, mempertahankan TOTP. Memerlukan users.security.

require_password_changebooleanopsional

Pengguna harus menetapkan kata sandinya sendiri pada login berhasil berikutnya.

Respons 200 application/json

Contoh respons
{
  "user_id": "11111111-1111-4111-8111-111111111111",
  "sessions_revoked": true,
  "totp_preserved": true
}

Kolom respons

user_idstring
sessions_revokedboolean
totp_preservedboolean
Catatan penggunaan
  • Memerlukan users.security; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTCabut Sesi Pengguna/v1/operator/merchants/{merchant_id}/users/{user_id}/revoke-sessionsBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

user_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/users/YOUR_USER_ID/revoke-sessions" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'

Respons 200 application/json

Contoh respons
{
  "user_id": "11111111-1111-4111-8111-111111111111",
  "sessions_revoked": true,
  "totp_preserved": true
}

Kolom respons

user_idstring
sessions_revokedboolean
totp_preservedboolean
Catatan penggunaan
  • Memerlukan users.security; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Undangan/v1/operator/merchants/{merchant_id}/invitationsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/invitations" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan invitations.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Undangan/v1/operator/merchants/{merchant_id}/invitationsBaca + tulis

Buat atau ganti tautan undangan atau reset kata sandi sekali pakai.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/invitations" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "user_id": "11111111-1111-4111-8111-111111111111",
  "send_email": false
}'

Body permintaan

user_idUUID, boolean

Terbitkan/ganti tautan sekali pakai untuk akun yang ada. Pengguna aktif menerima tautan reset satu jam dan memerlukan users.security.

send_emailUUID, boolean

Terbitkan/ganti tautan sekali pakai untuk akun yang ada. Pengguna aktif menerima tautan reset satu jam dan memerlukan users.security.

new user fieldsalternative to user_id

Gunakan email, display_name, access_level, dan project_ids untuk membuat pengguna yang diundang; memerlukan users.write.

Respons 201 or 200 application/json

Contoh respons
{
  "user_id": "22222222-2222-4222-8222-222222222222",
  "email": "admin@example.test",
  "kind": "invitation",
  "expires_at": "2026-10-03T12:00:00Z",
  "url": "https://merchant.example.com/account-access.html#token=YOUR_PRIVATE_INVITATION_TOKEN"
}

Kolom respons

user_idstring
emailstring
kindstring
expires_atstring
urlstring
Catatan penggunaan
  • Memerlukan invitations.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Undangan/v1/operator/invitations/{invitation_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

invitation_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/invitations/YOUR_INVITATION_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "user_id": "22222222-2222-4222-8222-222222222222",
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "kind": "invitation",
  "status": "pending",
  "created_at": "2026-10-01T12:00:00Z",
  "expires_at": "2026-10-03T12:00:00Z"
}

Kolom respons

idstring
user_idstring
merchant_idstring
kindstring
statusstring
created_atstring
expires_atstring
Catatan penggunaan
  • Memerlukan invitations.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTKirim Ulang Undangan/v1/operator/invitations/{invitation_id}/resendBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

invitation_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/invitations/YOUR_INVITATION_ID/resend" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "send_email": false
}'

Body permintaan

send_emailbooleanopsional

Mengganti token sebelumnya, tidak pernah menambah kredit. Mengembalikan tautan baru yang dihasilkan satu kali. Akun yang sudah aktif memerlukan users.security.

Respons 200 application/json

Contoh respons
{
  "user_id": "22222222-2222-4222-8222-222222222222",
  "email": "admin@example.test",
  "kind": "invitation",
  "expires_at": "2026-10-03T12:00:00Z",
  "url": "https://merchant.example.com/account-access.html#token=YOUR_PRIVATE_INVITATION_TOKEN"
}

Kolom respons

user_idstring
emailstring
kindstring
expires_atstring
urlstring
Catatan penggunaan
  • Memerlukan invitations.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTCabut Undangan/v1/operator/invitations/{invitation_id}/revokeBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

invitation_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/invitations/YOUR_INVITATION_ID/revoke" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'

Respons 200 application/json

Contoh respons
{
  "revoked": true,
  "invitation_id": "44444444-4444-4444-8444-444444444444"
}

Kolom respons

revokedboolean
invitation_idstring
Catatan penggunaan
  • Memerlukan invitations.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Kredit/v1/operator/merchants/{merchant_id}/creditsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/credits" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "11111111-1111-4111-8111-111111111111",
  "name": "Example shop",
  "currency": "EUR",
  "balance": "10",
  "fee_bps": 300,
  "enabled": true,
  "payments_paused": false,
  "external_id": "customer-1042"
}

Kolom respons

idstring
namestring
currencystring
balancestring
fee_bpsinteger
enabledboolean
payments_pausedboolean
external_idstring
Catatan penggunaan
  • Memerlukan credits.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Buku Besar Kredit/v1/operator/merchants/{merchant_id}/credits/ledgerHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

qopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/credits/ledger" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan credits.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSesuaikan Kredit/v1/operator/merchants/{merchant_id}/credits/adjustmentsBaca + tulis

Tambahkan pemberian atau koreksi beserta alasan ke buku besar prabayar merchant ini.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/credits/adjustments" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "amount": "10.00",
  "note": "Promotional credit",
  "request_id": "11111111-1111-4111-8111-111111111111"
}'

Body permintaan

amountsigned decimal stringwajib

Pemberian positif atau koreksi negatif, hingga enam desimal dalam mata uang kredit merchant. Bukan transfer on-chain.

notestringwajib

Alasan disimpan dalam buku besar yang hanya dapat ditambahi.

request_idUUIDwajib

Simpan secara persisten bersama jumlah dan alasan, selain HTTP Idempotency-Key.

Respons 200 application/json

Contoh respons
{
  "balance": "25"
}

Kolom respons

balancestring
Catatan penggunaan
  • Memerlukan credits.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Isi Ulang/v1/operator/merchants/{merchant_id}/topupsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/topups" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan topups.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Isi Ulang/v1/operator/merchants/{merchant_id}/topupsBaca + tulis

Buat checkout untuk kredit prabayar; jangan pernah menandainya lunas secara manual.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/topups" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "amount": "25.00",
  "request_id": "11111111-1111-4111-8111-111111111111"
}'

Body permintaan

amountdecimal stringwajib

Setidaknya satu unit mata uang kredit merchant. Memerlukan toko penerimaan Operator yang siap.

request_idUUIDwajib

Pertahankan pada setiap percobaan ulang. Mengembalikan faktur yang ada jika sudah dibuat. Kredit diterapkan hanya setelah penyelesaian teramati.

Respons 201 or 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "invoice_id": "33333333-3333-4333-8333-333333333333",
  "checkout_url": "https://pay.example.com/invoice/33333333-3333-4333-8333-333333333333"
}

Kolom respons

idstring
invoice_idstring
checkout_urlstring
Catatan penggunaan
  • Memerlukan topups.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Isi Ulang/v1/operator/merchants/{merchant_id}/topups/{topup_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

topup_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/topups/YOUR_TOPUP_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "merchant_id": "11111111-1111-4111-8111-111111111111",
  "invoice_id": "33333333-3333-4333-8333-333333333333",
  "amount": "25",
  "currency": "EUR",
  "status": "pending",
  "invoice_status": "new",
  "checkout_url": "https://pay.example.com/invoice/33333333-3333-4333-8333-333333333333"
}

Kolom respons

idstring
merchant_idstring
invoice_idstring
amountstring
currencystring
statusstring
invoice_statusstring
checkout_urlstring
Catatan penggunaan
  • Memerlukan topups.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETLaporan/v1/operator/reportsHanya baca

Baca ikhtisar keuangan Operator. Memerlukan akses ke semua merchant yang dihosting.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter kueri

periodopsional

Filter keuangan. period bawaan last30; gunakan custom dengan start/end YYYY-MM-DD. Hanya kredensial semua merchant.

startopsional

Filter keuangan. period bawaan last30; gunakan custom dengan start/end YYYY-MM-DD. Hanya kredensial semua merchant.

endopsional

Filter keuangan. period bawaan last30; gunakan custom dengan start/end YYYY-MM-DD. Hanya kredensial semua merchant.

currencyopsional

Filter keuangan. period bawaan last30; gunakan custom dengan start/end YYYY-MM-DD. Hanya kredensial semua merchant.

merchant_idopsional

Filter keuangan. period bawaan last30; gunakan custom dengan start/end YYYY-MM-DD. Hanya kredensial semua merchant.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/reports" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "summary": {
    "fees": "10",
    "costs": "3",
    "margin": "7",
    "credits": "25",
    "pending": 0,
    "missing_rates": 0
  },
  "merchants": [],
  "filters": {
    "period": "last30",
    "currency": "EUR",
    "timezone": "UTC"
  },
  "basis": "first_settlement_latest_net_fees"
}

Kolom respons

summaryobject
feesstring
costsstring
marginstring
creditsstring
pendinginteger
missing_ratesinteger
merchants[]array
filtersobject
periodstring
currencystring
timezonestring
basisstring
Catatan penggunaan
  • Memerlukan reports.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Baris, biaya, dan hitungan bisnis sendiri dikecualikan sebelum total dihitung. Filter merchant_id bisnis sendiri mengembalikan 404. Pelaporan menggunakan zona waktu instalasi.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Audit/v1/operator/auditHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter kueri

merchant_idopsional

Filter merchant yang diizinkan, jenis peristiwa persis (events), atau teks tindakan (audit). Peristiwa disimpan: 30 hari.

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/audit" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan audit.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Peristiwa/v1/operator/eventsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter kueri

merchant_idopsional

Filter merchant yang diizinkan, jenis peristiwa persis (events), atau teks tindakan (audit). Peristiwa disimpan: 30 hari.

event_typeopsional

Filter merchant yang diizinkan, jenis peristiwa persis (events), atau teks tindakan (audit). Peristiwa disimpan: 30 hari.

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/events" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Webhook/v1/operator/webhooksHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/webhooks" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Webhook/v1/operator/webhooksBaca + tulis

Berlangganan peristiwa siklus hidup Operator mendatang. Bukan webhook pembayaran toko.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/webhooks" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "url": "https://shop.example.test/operator-events",
  "events": [
    "merchant.created",
    "topup.settled"
  ],
  "merchant_ids": [],
  "enabled": true
}'

Body permintaan

urlpublic HTTPS URLwajib

Tanpa kredensial, IP privat, atau pengalihan. DNS/IP diperiksa kembali saat pengiriman.

events[]string[]wajib

Pilih peristiwa siklus hidup dalam panduan Operator, bukan callback faktur.

merchant_ids[]UUID[]opsional

Kosong berarti semua merchant yang diizinkan kredensial ini. Pembatasan cakupan terkini diperiksa ulang.

enabledbooleanopsional

Endpoint yang dijeda mempertahankan pengiriman dalam antrean; pengaktifan kembali melanjutkan pekerjaan valid yang tersimpan.

Respons 201 or 200 application/json

Contoh respons
{
  "id": "11111111-1111-4111-8111-111111111111",
  "signing_secret": "wco_whsec_EXAMPLE_ONLY_SAVE_ONCE"
}

Kolom respons

idstring
signing_secretstring
Catatan penggunaan
  • Memerlukan webhooks.write + events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Webhook/v1/operator/webhooks/{webhook_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

webhook_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/webhooks/YOUR_WEBHOOK_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "url": "https://shop.example.test/operator-events",
  "events": [
    "topup.settled"
  ],
  "merchant_ids": [],
  "enabled": false
}'

Body permintaan

urlpublic HTTPS URLwajib

Tanpa kredensial, IP privat, atau pengalihan. DNS/IP diperiksa kembali saat pengiriman.

events[]string[]wajib

Pilih peristiwa siklus hidup dalam panduan Operator, bukan callback faktur.

merchant_ids[]UUID[]opsional

Kosong berarti semua merchant yang diizinkan kredensial ini. Pembatasan cakupan terkini diperiksa ulang.

enabledbooleanopsional

Endpoint yang dijeda mempertahankan pengiriman dalam antrean; pengaktifan kembali melanjutkan pekerjaan valid yang tersimpan.

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "signing_secret": null
}

Kolom respons

idstring
signing_secretJSON | null
Catatan penggunaan
  • Memerlukan webhooks.write + events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTRotasi Rahasia Webhook/v1/operator/webhooks/{webhook_id}/rotateBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

webhook_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/webhooks/YOUR_WEBHOOK_ID/rotate" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'

Respons 200 application/json

Contoh respons
{
  "id": "11111111-1111-4111-8111-111111111111",
  "signing_secret": "wco_whsec_EXAMPLE_ONLY_SAVE_ONCE"
}

Kolom respons

idstring
signing_secretstring
Catatan penggunaan
  • Memerlukan webhooks.write + events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Pengiriman Webhook/v1/operator/webhooks/{webhook_id}/deliveriesHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

webhook_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/webhooks/YOUR_WEBHOOK_ID/deliveries" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan events.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Proyek/v1/operator/merchants/{merchant_id}/projectsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Proyek/v1/operator/merchants/{merchant_id}/projectsBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Online shop",
  "slug": "online-shop",
  "enabled": false
}'

Body permintaan

namestringswajib

Nama dan pengenal proyek stabil yang unik. Membuat dompet lokal menggunakan bootstrap proyek yang ada, tidak pernah mentransfer dana.

slugstringswajib

Nama dan pengenal proyek stabil yang unik. Membuat dompet lokal menggunakan bootstrap proyek yang ada, tidak pernah mentransfer dana.

enabledopsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

reporting_timezoneopsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

checkout_titleopsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

checkout_descriptionopsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

checkout_themeopsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

checkout_accent_coloropsional

enabled bawaan true; disarankan membuat dalam keadaan dijeda dan mengonfigurasi toko terlebih dahulu.

Respons 201 or 200 application/json

Contoh respons
{
  "id": "33333333-3333-4333-8333-333333333333",
  "slug": "example-shop",
  "name": "Example shop",
  "enabled": false,
  "reporting_currency": "EUR",
  "reporting_timezone": "Europe/Berlin",
  "stores": []
}

Kolom respons

idstring
slugstring
namestring
enabledboolean
reporting_currencystring
reporting_timezonestring
stores[]array
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Proyek/v1/operator/merchants/{merchant_id}/projects/{project_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "33333333-3333-4333-8333-333333333333",
  "slug": "example-shop",
  "name": "Example shop",
  "enabled": false,
  "reporting_currency": "EUR",
  "reporting_timezone": "Europe/Berlin",
  "stores": []
}

Kolom respons

idstring
slugstring
namestring
enabledboolean
reporting_currencystring
reporting_timezonestring
stores[]array
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Proyek/v1/operator/merchants/{merchant_id}/projects/{project_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "enabled": true
}'

Body permintaan

nameopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

enabledopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

reporting_currencyopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

reporting_timezoneopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

checkout_titleopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

checkout_descriptionopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

checkout_themeopsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

checkout_accent_coloropsional

Pembaruan parsial. Pengenal dan kepemilikan merchant tidak bisa berubah.

Respons 200 application/json

Contoh respons
{
  "id": "33333333-3333-4333-8333-333333333333",
  "slug": "example-shop",
  "name": "Example shop",
  "enabled": false,
  "reporting_currency": "EUR",
  "reporting_timezone": "Europe/Berlin",
  "stores": []
}

Kolom respons

idstring
slugstring
namestring
enabledboolean
reporting_currencystring
reporting_timezonestring
stores[]array
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/storesHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/storesBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Web checkout",
  "slug": "web-checkout",
  "default_currency": "EUR",
  "enabled": false
}'

Body permintaan

namestringswajib

Nama toko dan pengenal stabil.

slugstringswajib

Nama toko dan pengenal stabil.

default_currencyopsional

Gunakan string desimal untuk persentase. Toko baru mewarisi tampilan toko bawaan proyek.

invoice_expiry_minutesopsional

Gunakan string desimal untuk persentase. Toko baru mewarisi tampilan toko bawaan proyek.

exchange_rate_spread_percentopsional

Gunakan string desimal untuk persentase. Toko baru mewarisi tampilan toko bawaan proyek.

underpayment_tolerance_percentopsional

Gunakan string desimal untuk persentase. Toko baru mewarisi tampilan toko bawaan proyek.

enabledopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

is_defaultopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

allow_zero_amount_invoicesopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

allow_underpaymentsopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

allow_overpaymentsopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

allowed_chain_slugsopsional

Konfigurasikan aset yang diterima dengan payment-assets; faktur bernilai nol nonaktif secara bawaan.

ipn_enabledopsional

URL IPN dan kembali mengikuti validasi URL yang ada. Tanpa HTML/JavaScript sembarang.

default_ipn_urlopsional

URL IPN dan kembali mengikuti validasi URL yang ada. Tanpa HTML/JavaScript sembarang.

default_redirect_urlopsional

URL IPN dan kembali mengikuti validasi URL yang ada. Tanpa HTML/JavaScript sembarang.

default_cancel_urlopsional

URL IPN dan kembali mengikuti validasi URL yang ada. Tanpa HTML/JavaScript sembarang.

redirect_automaticallyopsional

URL IPN dan kembali mengikuti validasi URL yang ada. Tanpa HTML/JavaScript sembarang.

checkout_languageopsional

Gunakan bahasa yang didukung dan domain peran aktif; konfigurasikan origin penyematan secara eksplisit.

embed_enabledopsional

Gunakan bahasa yang didukung dan domain peran aktif; konfigurasikan origin penyematan secara eksplisit.

allowed_embed_originsopsional

Gunakan bahasa yang didukung dan domain peran aktif; konfigurasikan origin penyematan secara eksplisit.

domainsopsional

Gunakan bahasa yang didukung dan domain peran aktif; konfigurasikan origin penyematan secara eksplisit.

Respons 201 or 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "project_id": "33333333-3333-4333-8333-333333333333",
  "slug": "online",
  "name": "Online shop",
  "enabled": false,
  "default_currency": "EUR",
  "invoice_expiry_minutes": 60
}

Kolom respons

idstring
project_idstring
slugstring
namestring
enabledboolean
default_currencystring
invoice_expiry_minutesinteger
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "project_id": "33333333-3333-4333-8333-333333333333",
  "slug": "online",
  "name": "Online shop",
  "enabled": false,
  "default_currency": "EUR",
  "invoice_expiry_minutes": 60
}

Kolom respons

idstring
project_idstring
slugstring
namestring
enabledboolean
default_currencystring
invoice_expiry_minutesinteger
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "enabled": true
}'

Body permintaan

store fieldsopsional

Pengaturan yang bisa diubah sama dengan pembuatan toko, kecuali slug. Hanya kolom yang diberikan yang berubah.

enabledboolean

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "project_id": "33333333-3333-4333-8333-333333333333",
  "slug": "online",
  "name": "Online shop",
  "enabled": false,
  "default_currency": "EUR",
  "invoice_expiry_minutes": 60
}

Kolom respons

idstring
project_idstring
slugstring
namestring
enabledboolean
default_currencystring
invoice_expiry_minutesinteger
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Tampilan Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/checkout-appearanceHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/checkout-appearance" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "revision": 1,
  "settings": {
    "inherit_default_store": true
  },
  "effective": {
    "title": "Pay securely"
  }
}

Kolom respons

revisioninteger
settingsobject
inherit_default_storeboolean
effectiveobject
titlestring
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Tampilan Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/checkout-appearanceBaca + tulis

Simpan desain toko yang tervalidasi dan dilindungi revisi.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/checkout-appearance" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "revision": 1,
  "settings": {
    "inherit_default_store": false,
    "title": "Pay securely",
    "theme": "light"
  }
}'

Body permintaan

revisionintegerwajib

Baca revisi terkini dengan GET terlebih dahulu. Revisi usang gagal tanpa menimpa perubahan editor lain.

settingsobjectwajib
Tampilan checkout tervalidasi, termasuk inherit_default_store, merek, intro/outro, ukuran font, dan visibilitas. Tanpa HTML/JavaScript sembarang. Mengunggah byte gambar hanya melalui konsol.Detail

Tampilan checkout tervalidasi, termasuk inherit_default_store, merek, intro/outro, ukuran font, dan visibilitas. Tanpa HTML/JavaScript sembarang. Mengunggah byte gambar hanya melalui konsol.

inherit_default_storeboolean
titlestring
themestring

Respons 200 application/json

Contoh respons
{
  "settings": {
    "inherit_default_store": false,
    "title": "Pay securely",
    "theme": "light"
  },
  "revision": 2
}

Kolom respons

settingsobject
inherit_default_storeboolean
titlestring
themestring
revisioninteger
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Aset Pembayaran Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/payment-assetsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/payment-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": []
}

Kolom respons

data[]array
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Aset Pembayaran Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/payment-assetsBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/payment-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "assets": [
    {
      "asset_id": "11111111-1111-4111-8111-111111111111",
      "display_order": 0
    }
  ]
}'

Body permintaan

assets[]object[]wajib
Penggantian penuh metode on-chain: UUID asset_id dan display_order. [] menghapus aset on-chain yang diterima. Hanya aset proyek terverifikasi; tidak mengonfigurasi Lightning.Detail

Penggantian penuh metode on-chain: UUID asset_id dan display_order. [] menghapus aset on-chain yang diterima. Hanya aset proyek terverifikasi; tidak mengonfigurasi Lightning.

asset_idstring
display_orderinteger

Respons 200 application/json

Contoh respons
{
  "data": []
}

Kolom respons

data[]array
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooksHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/webhooks" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan projects.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooksBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/webhooks" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Orders",
  "url": "https://shop.example.test/payments",
  "event_types": [
    "invoice.settled"
  ],
  "enabled": true,
  "automatic_redelivery": true
}'

Body permintaan

namestrings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

urlstrings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

event_types[]strings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

enabledbooleansopsional

Pembuatan mengembalikan rahasia penandatanganan satu kali. Ini callback pembayaran toko, bukan peristiwa siklus hidup Operator.

automatic_redeliverybooleansopsional

Pembuatan mengembalikan rahasia penandatanganan satu kali. Ini callback pembayaran toko, bukan peristiwa siklus hidup Operator.

Respons 201 or 200 application/json

Contoh respons
{
  "signing_secret": "EXAMPLE_ONLY_SAVE_ONCE",
  "endpoint": {
    "id": "44444444-4444-4444-8444-444444444444",
    "name": "Orders",
    "enabled": true
  },
  "secret_visible_once": true
}

Kolom respons

signing_secretstring
endpointobject
idstring
namestring
enabledboolean
secret_visible_onceboolean
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Webhook Toko/v1/operator/merchants/{merchant_id}/projects/{project_id}/stores/{store_id}/webhooks/{webhook_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

store_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

webhook_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/webhooks/YOUR_WEBHOOK_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Orders",
  "url": "https://shop.example.test/payments",
  "event_types": [
    "invoice.settled"
  ],
  "enabled": false,
  "automatic_redelivery": true
}'

Body permintaan

namestrings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

urlstrings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

event_types[]strings / arraywajib

Penerima HTTPS publik dan nama peristiwa faktur dari dokumentasi IPN & webhook.

enabledbooleansopsional

Pembuatan mengembalikan rahasia penandatanganan satu kali. Ini callback pembayaran toko, bukan peristiwa siklus hidup Operator.

automatic_redeliverybooleansopsional

Pembuatan mengembalikan rahasia penandatanganan satu kali. Ini callback pembayaran toko, bukan peristiwa siklus hidup Operator.

Respons 200 application/json

Contoh respons
{
  "id": "44444444-4444-4444-8444-444444444444",
  "name": "Orders",
  "enabled": true
}

Kolom respons

idstring
namestring
enabledboolean
Catatan penggunaan
  • Memerlukan projects.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Faktur/v1/operator/merchants/{merchant_id}/projects/{project_id}/invoicesHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

limitopsional

Paginasi dan filter faktur, sama dengan daftar faktur proyek.

offsetopsional

Paginasi dan filter faktur, sama dengan daftar faktur proyek.

statusopsional

Paginasi dan filter faktur, sama dengan daftar faktur proyek.

store_idopsional

Paginasi dan filter faktur, sama dengan daftar faktur proyek.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/invoices" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "limit": 25,
    "offset": 0,
    "total": 0,
    "has_more": false
  }
}

Kolom respons

data[]array
paginationobject
limitinteger
offsetinteger
totalinteger
has_moreboolean
Catatan penggunaan
  • Memerlukan reports.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil Faktur/v1/operator/merchants/{merchant_id}/projects/{project_id}/invoices/{invoice_id}Hanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

invoice_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/invoices/YOUR_INVOICE_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "invoice_id": "44444444-4444-4444-8444-444444444444",
  "project_id": "33333333-3333-4333-8333-333333333333",
  "amount": "25",
  "currency": "EUR",
  "status": "new",
  "metadata": {},
  "payment_intents": []
}

Kolom respons

invoice_idstring
project_idstring
amountstring
currencystring
statusstring
metadataobject
payment_intents[]array
Catatan penggunaan
  • Memerlukan reports.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.
  • invoice_id adalah ID faktur publik yang dikembalikan saat pembuatan dan dalam callback, bukan id internal.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Dompet/v1/operator/merchants/{merchant_id}/projects/{project_id}/walletsHanya baca

Baca saldo dompet publik dalam cache, jangan pernah kunci privat atau frasa pemulihan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/wallets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan reports.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Saldo adalah observasi dalam cache dengan kolom kebaruan, bukan jaminan saldo yang bisa dibelanjakan. Pengiriman dan ekspor kunci tidak tersedia melalui API ini.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Alamat Dompet/v1/operator/merchants/{merchant_id}/projects/{project_id}/wallets/{wallet_id}/addressesHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

project_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

wallet_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

limitopsional
Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.Detail

Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.

beforeopsional
Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.Detail

Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.

has_balanceopsional
Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.Detail

Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.

hide_small_balancesopsional
Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.Detail

Batas 1–50, bawaan 25. Kirim next_cursor sebagai before untuk halaman berikutnya. Jangan sertakan before untuk halaman 1. has_balance=false dan hide_small_balances=false menyertakan saldo kosong/kecil.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/projects/YOUR_PROJECT_ID/wallets/YOUR_WALLET_ID/addresses" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "wallet": {
    "id": "22222222-2222-4222-8222-222222222222",
    "chain_slug": "ethereum"
  },
  "items": [],
  "total": 0,
  "total_pages": 1,
  "next_cursor": null,
  "reporting_currency": "EUR",
  "has_balance": true,
  "hide_small_balances": true,
  "small_balance_threshold": {
    "amount": "0.20",
    "currency": "EUR"
  }
}

Kolom respons

walletobject
idstring
chain_slugstring
items[]array
totalinteger
total_pagesinteger
next_cursorJSON | null
reporting_currencystring
has_balanceboolean
hide_small_balancesboolean
small_balance_thresholdobject
amountstring
currencystring
Catatan penggunaan
  • Memerlukan reports.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentialsHanya baca

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Parameter kueri

pageopsional
Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.Detail

Halaman berbasis 1, 25 item per halaman. Pencarian didukung pada merchant, pengguna, proyek, toko, dompet, kredensial, dan webhook; daftar peristiwa native menggunakan filter khususnya.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/api-credentials" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "page": 1,
  "page_size": 25,
  "total": 0
}

Kolom respons

data[]array
pageinteger
page_sizeinteger
totalinteger
Catatan penggunaan
  • Memerlukan merchant_credentials.read; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentialsBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/api-credentials" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Store integration",
  "access_level": "read_only",
  "enabled": true,
  "ip_restriction_enabled": false,
  "allowed_ips": [],
  "project_ids": [
    "11111111-1111-4111-8111-111111111111"
  ]
}'

Body permintaan

namestringwajib

Label untuk kunci merchant biasa baru, bukan kunci Operator.

access_levelread_only | read_writeopsional

Baca/tulis mengaktifkan kontrak API merchant yang ada.

project_ids[]UUID[]

Hanya proyek milik merchant yang dipilih; daftar kosong mengikuti kebijakan semua proyek merchant yang ada.

enabledopsional

Kontrol kunci merchant yang ada. Rahasia dikembalikan hanya sekali; memerlukan merchant_credentials.write.

ip_restriction_enabledopsional

Kontrol kunci merchant yang ada. Rahasia dikembalikan hanya sekali; memerlukan merchant_credentials.write.

allowed_ips[]opsional

Kontrol kunci merchant yang ada. Rahasia dikembalikan hanya sekali; memerlukan merchant_credentials.write.

requests_per_minuteopsional

Kontrol kunci merchant yang ada. Rahasia dikembalikan hanya sekali; memerlukan merchant_credentials.write.

Respons 201 or 200 application/json

Contoh respons
{
  "credential": {
    "id": "22222222-2222-4222-8222-222222222222",
    "name": "Checkout",
    "access_level": "read_only",
    "project_ids": [
      "33333333-3333-4333-8333-333333333333"
    ],
    "enabled": true
  },
  "token": "wc_live_EXAMPLE_ONLY_SAVE_ONCE"
}

Kolom respons

credentialobject
idstring
namestring
access_levelstring
project_ids[]array
enabledboolean
tokenstring
Catatan penggunaan
  • Memerlukan merchant_credentials.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}Baca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

credential_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/api-credentials/YOUR_CREDENTIAL_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "name": "Checkout",
  "access_level": "read_only",
  "enabled": true,
  "ip_restriction_enabled": false,
  "allowed_ips": [],
  "project_ids": [
    "33333333-3333-4333-8333-333333333333"
  ]
}'

Body permintaan

namefieldswajib

Kirim konfigurasi kredensial terkini lengkap dengan perubahan. project_ids bawaan []; requests_per_minute bawaan mengikuti kuota API merchant.

access_levelfieldswajib

Kirim konfigurasi kredensial terkini lengkap dengan perubahan. project_ids bawaan []; requests_per_minute bawaan mengikuti kuota API merchant.

enabledfieldswajib

Kirim konfigurasi kredensial terkini lengkap dengan perubahan. project_ids bawaan []; requests_per_minute bawaan mengikuti kuota API merchant.

ip_restriction_enabledfieldswajib

Kirim konfigurasi kredensial terkini lengkap dengan perubahan. project_ids bawaan []; requests_per_minute bawaan mengikuti kuota API merchant.

allowed_ips[]fieldswajib

Kirim konfigurasi kredensial terkini lengkap dengan perubahan. project_ids bawaan []; requests_per_minute bawaan mengikuti kuota API merchant.

project_ids[]array

Respons 200 application/json

Contoh respons
{
  "id": "22222222-2222-4222-8222-222222222222",
  "name": "Checkout",
  "access_level": "read_only",
  "project_ids": [
    "33333333-3333-4333-8333-333333333333"
  ],
  "enabled": true
}

Kolom respons

idstring
namestring
access_levelstring
project_ids[]array
enabledboolean
Catatan penggunaan
  • Memerlukan merchant_credentials.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTRotasi Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}/rotateBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

credential_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/api-credentials/YOUR_CREDENTIAL_ID/rotate" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'

Respons 200 application/json

Contoh respons
{
  "credential": {
    "id": "22222222-2222-4222-8222-222222222222",
    "name": "Checkout",
    "access_level": "read_only",
    "project_ids": [
      "33333333-3333-4333-8333-333333333333"
    ],
    "enabled": true
  },
  "token": "wc_live_EXAMPLE_ONLY_SAVE_ONCE"
}

Kolom respons

credentialobject
idstring
namestring
access_levelstring
project_ids[]array
enabledboolean
tokenstring
Catatan penggunaan
  • Memerlukan merchant_credentials.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTCabut Kredensial Merchant/v1/operator/merchants/{merchant_id}/api-credentials/{credential_id}/revokeBaca + tulis

Kelola atau periksa resource merchant yang dihosting yang disebutkan menggunakan kredensial Operator terpisah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_OPERATOR_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; disimpan secara persisten untuk operasi ini

Parameter path

merchant_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

credential_idUUIDwajib

UUID resource kanonis huruf kecil; harus termasuk dalam cakupan merchant kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/operator/merchants/YOUR_MERCHANT_ID/api-credentials/YOUR_CREDENTIAL_ID/revoke" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: operator-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{}'

Respons 200 application/json

Contoh respons
{
  "revoked": true
}

Kolom respons

revokedboolean
Catatan penggunaan
  • Memerlukan merchant_credentials.write; hanya merchant yang dihosting yang diizinkan. Kunci Operator tidak mengakses ruang kerja bisnis milik pemilik sendiri.
  • Simpan Idempotency-Key unik dan body persis secara persisten sebelum mengirim. Percobaan ulang tidak pernah mengulangi tindakan yang sudah di-commit. Kolom rahasia dihilangkan pada replay; jika respons rahasia hilang, periksa resource yang dibuat dan rotasi/terbitkan ulang secara eksplisit. 409 operator_request_in_progress bisa berarti permintaan terputus dengan hasil tidak diketahui: periksa resource/audit; jangan sembarangan mencoba ulang dengan kunci baru.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPeriksa token undangan/v1/onboarding/invitations/checkPublik

Pendaftaran hanya dengan token. Tidak menerima kunci Operator atau login otomatis. Login konsol tetap memerlukan Basic Auth situs dan TOTP yang ada.

Autentikasi & header

Publik

Permintaan

curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/onboarding/invitations/check" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "token": "YOUR_PRIVATE_INVITATION_TOKEN"
}'

Body permintaan

tokenstringwajib

Rahasia dari fragmen URL undangan. Jangan pernah mencatatnya dalam log.

Respons 200 application/json

Contoh respons
{
  "kind": "invitation",
  "email": "admin@example.test",
  "merchant_name": "Example shop"
}

Kolom respons

kindstring
emailstring
merchant_namestring
Catatan penggunaan
  • Undangan 48 jam; tautan reset kata sandi satu jam. Token hash sekali pakai. Penerbitan ulang mencabut tautan sebelumnya. Penerimaan mempertahankan TOTP dan mencabut sesi lama.
  • Tanpa percobaan ulang otomatis. Jika penerimaan melewati batas waktu, periksa status tautan dan coba login; jangan menganggapnya gagal. Dibatasi berdasarkan IP sumber teramati. Penerima harus memberikan pengakuan kustodinya sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTerima undangan atau reset kata sandi/v1/onboarding/invitations/acceptPublik

Pendaftaran hanya dengan token. Tidak menerima kunci Operator atau login otomatis. Login konsol tetap memerlukan Basic Auth situs dan TOTP yang ada.

Autentikasi & header

Publik

Permintaan

curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/onboarding/invitations/accept" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "token": "YOUR_PRIVATE_INVITATION_TOKEN",
  "password": "REPLACE_WITH_YOUR_OWN_UNIQUE_PASSWORD",
  "custody_acknowledged": true
}'

Body permintaan

tokenstringwajib

Rahasia dari fragmen URL undangan. Jangan pernah mencatatnya dalam log.

passwordstringwajib

Kata sandi baru, 12–128 karakter (paling banyak 512 byte UTF-8).

custody_acknowledgedboolean

Harus true saat menerima undangan dompet yang dihosting baru.

Respons 200 application/json

Contoh respons
{
  "password_set": true
}

Kolom respons

password_setboolean
Catatan penggunaan
  • Undangan 48 jam; tautan reset kata sandi satu jam. Token hash sekali pakai. Penerbitan ulang mencabut tautan sebelumnya. Penerimaan mempertahankan TOTP dan mencabut sesi lama.
  • Tanpa percobaan ulang otomatis. Jika penerimaan melewati batas waktu, periksa status tautan dan coba login; jangan menganggapnya gagal. Dibatasi berdasarkan IP sumber teramati. Penerima harus memberikan pengakuan kustodinya sendiri.
  • Contoh respons menampilkan kolom yang dipilih. Perlakukan kolom respons tambahan sebagai penambahan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETKemampuan/v1/marketplace/capabilitiesHanya baca

Toko yang berpartisipasi, aset yang dikonfigurasi, jalur pembayaran vendor yang didukung, aset biaya native, dan alasan kesiapan. Ketersediaan pemindai sementara tidak memperluas kumpulan aset yang diizinkan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/capabilities?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETLaporan Marketplace/v1/marketplace/overviewHanya baca

Filter store_id, asset_id, from, dan to (YYYY-MM-DD inklusif, UTC; bawaan 30 hari terakhir; hingga sepuluh tahun). Saldo akun presisi pada akhir tanggal dan perubahan dalam periode. Tanpa perkiraan pendapatan fiat. Filter toko mengecualikan biaya seluruh proyek yang tidak memiliki faktur.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/overview?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETPengaturan proyek/v1/marketplace/settingsHanya baca

Mengembalikan enabled, payouts_paused, commission_percent, revision, dan toko yang berpartisipasi.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/settings?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSimpan pengaturan proyek/v1/marketplace/settingsBaca + tulis

Ganti pilihan toko yang berpartisipasi. revision 0 menginisialisasi pengaturan; perubahan selanjutnya memerlukan revisi yang dikembalikan. Komisi berupa persentase desimal, 0–100 dengan paling banyak dua angka desimal.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepolicies.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/settings" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 0,
  "enabled": true,
  "payouts_paused": true,
  "commission_percent": "4",
  "stores": [
    {
      "store_id": "YOUR_STORE_ID",
      "enabled": true,
      "commission_percent": null
    }
  ]
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

0

enabled

true

payouts_paused

true

commission_percent

"4"

stores[]object[]

[{"store_id":"YOUR_STORE_ID","enabled":true,"commission_percent":null}]

store_idstring
enabledboolean
commission_percentJSON | null

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan policies.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar vendor/v1/marketplace/vendorsHanya baca

Vendor berhalaman. Cari q berdasarkan nama, ID eksternal, atau email; status active, suspended, atau archived.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/vendors?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat vendor/v1/marketplace/vendorsBaca + tulis

Nama wajib (160 karakter); external_id opsional dan unik dalam proyek (128); email opsional (254); description hingga 2000. commission_percent null mewarisi toko. Pengesampingan bukan null juga memerlukan commissions.override. Vendor bukan akun merchant yang dihosting.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopevendors.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "name": "Example vendor",
  "external_id": "vendor-1042",
  "email": "vendor@example.com",
  "description": "",
  "status": "active",
  "commission_percent": null
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

name

"Example vendor"

external_id

"vendor-1042"

email

"vendor@example.com"

description

""

status

"active"

commission_percent

null

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan vendors.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil vendor/v1/marketplace/vendors/{vendor_id}Hanya baca

Kembalikan satu vendor, revisi, dan pengesampingan komisi.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui vendor/v1/marketplace/vendors/{vendor_id}/updateBaca + tulis

Perbarui detail vendor; status active atau suspended. Mengubah atau menghapus commission_percent juga memerlukan commissions.override; nilai yang tidak berubah hanya memerlukan vendors.write. Memulihkan vendor yang diarsipkan juga memerlukan reconciliation.write. Perubahan keuangan konsol memerlukan autentikasi ulang akun. Alokasi yang ada mempertahankan komisi dan tujuan aslinya.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopevendors.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/update" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "name": "Example vendor",
  "external_id": "vendor-1042",
  "email": "vendor@example.com",
  "description": "",
  "status": "active",
  "commission_percent": null,
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

name

"Example vendor"

external_id

"vendor-1042"

email

"vendor@example.com"

description

""

status

"active"

commission_percent

null

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan vendors.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTArsipkan vendor/v1/marketplace/vendors/{vendor_id}/archiveBaca + tulis

Arsipkan hanya setelah kewajiban belum dibayar dan faktur terbuka diselesaikan; jika tidak, mengembalikan 409 vendor_has_obligations. Riwayat dipertahankan. Gunakan status suspended untuk sementara, atau pulihkan vendor lama yang diarsipkan dengan rute pembaruan dan reconciliation.write.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopevendors.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/archive" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan vendors.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETTujuan vendor/v1/marketplace/vendors/{vendor_id}/destinationsHanya baca

Tujuan berversi dan status pending/approved/disabled. Persetujuan tidak membuktikan kepemilikan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/destinations?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTambahkan tujuan pembayaran/v1/marketplace/vendors/{vendor_id}/destinationsBaca + tulis

Daftarkan alamat BTC mainnet atau EVM yang didukung yang valid, menunggu persetujuan. Alamat milik proyek, jaringan salah, dan alamat EVM nol ditolak.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopedestinations.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/destinations" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "chain_slug": "bitcoin",
  "network": "mainnet",
  "address": "VERIFIED_VENDOR_BTC_ADDRESS",
  "label": "Vendor BTC"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

chain_slug

"bitcoin"

network

"mainnet"

address

"VERIFIED_VENDOR_BTC_ADDRESS"

label

"Vendor BTC"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan destinations.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSetujui tujuan/v1/marketplace/vendors/{vendor_id}/destinations/{destination_id}/approveBaca + tulis

Verifikasi kepemilikan secara independen terlebih dahulu. Nonaktifkan tujuan disetujui yang sudah ada pada vendor/jaringan ini terlebih dahulu; snapshot lama tidak dialihkan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopedestinations.approve

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/destinations/YOUR_DESTINATION_ID/approve" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan destinations.approve. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTNonaktifkan tujuan/v1/marketplace/vendors/{vendor_id}/destinations/{destination_id}/disableBaca + tulis

Hentikan pekerjaan baru/belum dikirim yang menggunakan versi ini. Transaksi yang ditandatangani tidak bisa dicabut.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopedestinations.approve

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/destinations/YOUR_DESTINATION_ID/disable" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan destinations.approve. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETSaldo vendor/v1/marketplace/vendors/{vendor_id}/balancesHanya baca

Jumlah buku besar tersimpan yang presisi, dikelompokkan berdasarkan identitas aset dan jenis akun yang tidak dapat diubah; bukan saldo dompet langsung yang bisa dibelanjakan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/vendors/YOUR_VENDOR_ID/balances?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETFaktur Marketplace/v1/marketplace/invoicesHanya baca

Faktur berhalaman; q mencari pesanan, email, deskripsi, metadata, dan UUID faktur. Filter store_id, vendor_id, dan status Marketplace. Faktur biasa dikecualikan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/invoices?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat faktur multivendor/v1/marketplace/invoicesBaca + tulis

Gunakan kembali kolom InvoiceCreateInput normal, ditambah store_id dan allocations. Setiap vendor muncul satu kali, 1–100 bagian positif, total sama persis dengan amount. commission_percent opsional pada faktur/per alokasi memerlukan commissions.override dan autentikasi ulang konsol untuk permintaan sesi. Mengembalikan data.invoice_id dan links.checkout. Tidak adanya metode bersama yang kompatibel mengembalikan kesalahan terperinci; tidak beralih ke aset yang tidak kompatibel.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopeinvoices.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "store_id": "YOUR_STORE_ID",
  "amount": "300.00",
  "currency": "USD",
  "order_id": "cart-1042",
  "allocations": [
    {
      "vendor_id": "VENDOR_A_UUID",
      "gross_amount": "100.00"
    },
    {
      "vendor_id": "VENDOR_B_UUID",
      "gross_amount": "100.00"
    },
    {
      "vendor_id": "VENDOR_C_UUID",
      "gross_amount": "100.00"
    }
  ]
}'

Body permintaan

amountstringwajib
String desimal biasa tanpa tanda; tanpa tanda positif/negatif atau eksponen, hingga 48 digit bilangan bulat dan 30 angka desimal. Harus positif secara bawaan. Toko bisa mengizinkan faktur bernilai nol di Toko → Faktur; total nol diselesaikan tanpa menerima dana, mengalokasikan alamat, atau biaya pemrosesan.Detail

String desimal biasa tanpa tanda; tanpa tanda positif/negatif atau eksponen, hingga 48 digit bilangan bulat dan 30 angka desimal. Harus positif secara bawaan. Toko bisa mengizinkan faktur bernilai nol di Toko → Faktur; total nol diselesaikan tanpa menerima dana, mengalokasikan alamat, atau biaya pemrosesan.

currencystring | nullopsional
Mata uang fiat tiga huruf yang didukung, dinormalisasi menjadi huruf besar. Tidak disertakan atau null mewarisi mata uang faktur toko. Pembuatan juga memerlukan kurs konversi penagihan yang tersedia secara independen.Detail

Mata uang fiat tiga huruf yang didukung, dinormalisasi menjadi huruf besar. Tidak disertakan atau null mewarisi mata uang faktur toko. Pembuatan juga memerlukan kurs konversi penagihan yang tersedia secara independen.

payment_methods[]object[] | nullopsional
Pilih metode yang diaktifkan toko untuk faktur ini. Merchant 5.4.0+: abaikan pilihan tidak dikenal/nonaktif/tidak diterima; jika tidak ada yang cocok, gunakan pengaturan bawaan toko. Tidak disertakan/null juga menggunakan pengaturan bawaan toko; [] tidak valid. Tidak pernah mengaktifkan metode atau mengubah pengaturan toko. Lihat skema pilihan di bawah.Detail

Pilih metode yang diaktifkan toko untuk faktur ini. Merchant 5.4.0+: abaikan pilihan tidak dikenal/nonaktif/tidak diterima; jika tidak ada yang cocok, gunakan pengaturan bawaan toko. Tidak disertakan/null juga menggunakan pengaturan bawaan toko; [] tidak valid. Tidak pernah mengaktifkan metode atau mengubah pengaturan toko. Lihat skema pilihan di bawah.

chain_slugstringwajib
Salin chain_slug di Proyek → Toko → Metode pembayaran, atau baca dari GET /v1/projects/{project_id}/stores/{store_id}/payment-assets, seperti ethereum, base, atau bitcoin. Pasangan blockchain/jalur hanya boleh muncul satu kali.Detail

Salin chain_slug di Proyek → Toko → Metode pembayaran, atau baca dari GET /v1/projects/{project_id}/stores/{store_id}/payment-assets, seperti ethereum, base, atau bitcoin. Pasangan blockchain/jalur hanya boleh muncul satu kali.

asset_ids[]UUID[] | nullopsional
UUID asset.id on-chain, bukan alamat kontrak atau ID metode pembayaran faktur. Gunakan ini ATAU asset_tickers. Jangan sertakan kedua pemilih untuk semua aset aktif yang diterima pada blockchain ini. [] dan ID duplikat/nil tidak valid. Pada 5.4.0+, abaikan ID yang tidak aktif/diterima pada blockchain ini di toko ini; pilihan yang sepenuhnya tidak cocok menggunakan pengaturan bawaan toko.Detail

UUID asset.id on-chain, bukan alamat kontrak atau ID metode pembayaran faktur. Gunakan ini ATAU asset_tickers. Jangan sertakan kedua pemilih untuk semua aset aktif yang diterima pada blockchain ini. [] dan ID duplikat/nil tidak valid. Pada 5.4.0+, abaikan ID yang tidak aktif/diterima pada blockchain ini di toko ini; pilihan yang sepenuhnya tidak cocok menggunakan pengaturan bawaan toko.

asset_tickers[]string[] | nullopsional
Merchant 5.3.0+. Simbol seperti BTC, USDC, atau PEPE, dibatasi pada chain_slug dan toko ini. 1–64 ticker unik; spasi tepi dipangkas/tidak peka huruf besar-kecil, 1–40 huruf ASCII/angka/titik/garis bawah/tanda hubung. Gunakan ini ATAU asset_ids. Pada 5.4.0+, abaikan ticker tidak dikenal/nonaktif/tidak diterima. Simbol diterima yang ambigu tetap gagal: gunakan asset_ids. Metode aktif yang dipilih memerlukan dompet dan harga valid; gangguan pemindai on-chain sementara tidak memblokir pembuatan mulai 6.0.6. Lightning secara opsional hanya menerima BTC.Detail

Merchant 5.3.0+. Simbol seperti BTC, USDC, atau PEPE, dibatasi pada chain_slug dan toko ini. 1–64 ticker unik; spasi tepi dipangkas/tidak peka huruf besar-kecil, 1–40 huruf ASCII/angka/titik/garis bawah/tanda hubung. Gunakan ini ATAU asset_ids. Pada 5.4.0+, abaikan ticker tidak dikenal/nonaktif/tidak diterima. Simbol diterima yang ambigu tetap gagal: gunakan asset_ids. Metode aktif yang dipilih memerlukan dompet dan harga valid; gangguan pemindai on-chain sementara tidak memblokir pembuatan mulai 6.0.6. Lightning secara opsional hanya menerima BTC.

payment_railonchain | lightningopsional
Bawaan onchain. Untuk memilih Bitcoin Lightning, gunakan {chain_slug: bitcoin, payment_rail: lightning} tanpa asset_ids; asset_tickers secara opsional boleh [BTC]. Bitcoin on-chain tidak mencakup Lightning. Koneksi Lightning toko harus sudah aktif dan siap.Detail

Bawaan onchain. Untuk memilih Bitcoin Lightning, gunakan {chain_slug: bitcoin, payment_rail: lightning} tanpa asset_ids; asset_tickers secara opsional boleh [BTC]. Bitcoin on-chain tidak mencakup Lightning. Koneksi Lightning toko harus sudah aktif dan siap.

order_idstring | nullopsional

Referensi pesanan merchant, 1–128 karakter setelah pemangkasan spasi; karakter kontrol ditolak.

emailstring | nullopsional

Email pelanggan khusus merchant, dinormalisasi ke alamat ASCII praktis dengan paling banyak 254 karakter. Tidak disertakan atau null tidak menyimpan email.

descriptionstring | nullopsional

Deskripsi yang ditampilkan kepada pelanggan, 1–500 karakter; baris baru dan tab diizinkan.

expires_in_secondsinteger | nullopsional

Masa kuotasi faktur dari 300 sampai 86,400 detik; tidak disertakan atau null mewarisi kebijakan toko.

exchange_rate_spread_percentdecimal string | nullopsional
Markup kuotasi dari 0 sampai 100, dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko; "0" menonaktifkannya untuk faktur ini. Diterapkan sebelum pembulatan ke atas, lalu dikunci. Tidak mengubah jumlah fiat faktur atau dasar biaya pemrosesan.Detail

Markup kuotasi dari 0 sampai 100, dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko; "0" menonaktifkannya untuk faktur ini. Diterapkan sebelum pembulatan ke atas, lalu dikunci. Tidak mengubah jumlah fiat faktur atau dasar biaya pemrosesan.

underpayment_tolerance_percentdecimal string | nullopsional

Kekurangan yang diterima dari 0 sampai 99.99 dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko.

ipn_urlstring | nullopsional

Callback HTTPS publik, paling banyak 2,048 byte dan tanpa kredensial atau fragmen. Menggantikan pengaturan bawaan toko; null/tidak disertakan mewarisinya.

redirect_urlstring | nullopsional

URL sukses HTTPS yang digunakan setelah penyelesaian, paling banyak 2,048 byte dan tanpa kredensial tersemat. Tidak disertakan atau null mewarisi pengaturan bawaan toko dan tidak bisa menghapusnya.

cancel_urlstring | nullopsional

URL kembali HTTPS yang digunakan saat checkout berakhir tanpa pembayaran berhasil. Tidak disertakan atau null mewarisi pengaturan bawaan toko dan tidak bisa menghapusnya.

redirect_automaticallyboolean | nullopsional

Tidak disertakan atau null mewarisi kebijakan toko. true memerlukan redirect_url efektif.

languagestring | nullopsional
Bahasa pelanggan: en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja. pt berarti Portugis Brasil dan zh berarti Mandarin Sederhana. Tag regional yang didukung seperti de-DE dinormalisasi ke bahasa yang tercantum. Tidak disertakan atau null mewarisi bahasa toko. Bahasa konsol terpisah.Detail

Bahasa pelanggan: en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja. pt berarti Portugis Brasil dan zh berarti Mandarin Sederhana. Tag regional yang didukung seperti de-DE dinormalisasi ke bahasa yang tercantum. Tidak disertakan atau null mewarisi bahasa toko. Bahasa konsol terpisah.

checkout_appearanceobject | nullopsional
Pengaturan tampilan parsial untuk faktur ini. Tidak disertakan/null mengikuti desain toko saat ini. Objek, termasuk {}, membekukan desain dan gambar yang telah ditentukan saat pembuatan. Lihat skema pengesampingan di bawah; tanpa pengaturan keuangan, HTML, CSS, JavaScript, atau URL gambar jarak jauh.Detail

Pengaturan tampilan parsial untuk faktur ini. Tidak disertakan/null mengikuti desain toko saat ini. Objek, termasuk {}, membekukan desain dan gambar yang telah ditentukan saat pembuatan. Lihat skema pengesampingan di bawah; tanpa pengaturan keuangan, HTML, CSS, JavaScript, atau URL gambar jarak jauh.

inherit_default_storebooleanopsional
true memilih desain toko bawaan proyek sebagai dasar; jika tidak, gunakan desain efektif toko tujuan. Pengesampingan lalu diterapkan dan disimpan secara independen; nilai flag faktur hasilnya false.Detail

true memilih desain toko bawaan proyek sebagai dasar; jika tidak, gunakan desain efektif toko tujuan. Pengesampingan lalu diterapkan dan disimpan secara independen; nilai flag faktur hasilnya false.

titlestringopsional

Judul checkout, hingga 120 karakter. Kosong menggunakan judul standar.

introstringopsional
Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.Detail

Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.

outrostringopsional
Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.Detail

Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.

intro_font_sizeintegeropsional

Piksel: 12, 14, 16, 18, 20, atau 24. Bawaan 16 kecuali mewarisi nilai berbeda.

outro_font_sizeintegeropsional

Piksel: 12, 14, 16, 18, 20, atau 24. Bawaan 16 kecuali mewarisi nilai berbeda.

themesystem | light | dim | darkopsional

Ikuti perangkat pelanggan atau gunakan tema tetap.

accent_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

background_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

card_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

button_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

logo_sizestringopsional

small, medium, atau large; left atau center.

logo_alignmentstringopsional

small, medium, atau large; left atau center.

imagesobjectopsional
Kunci logo_light, logo_dark, favicon. Kunci yang tidak disertakan mempertahankan gambar dasar; null menghapusnya. Objek {store_id: UUID, kind?: logo_light|logo_dark|favicon} memakai kembali gambar unggahan efektif toko tersebut dalam proyek yang SAMA. kind bawaan mengikuti kunci tujuan. Unggah di Toko → Checkout terlebih dahulu; salin ID API Toko dari Dasar → ID API. Gambar tidak tersedia atau ID lintas proyek mengembalikan 400. URL eksternal atau data gambar tidak diterima.Detail

Kunci logo_light, logo_dark, favicon. Kunci yang tidak disertakan mempertahankan gambar dasar; null menghapusnya. Objek {store_id: UUID, kind?: logo_light|logo_dark|favicon} memakai kembali gambar unggahan efektif toko tersebut dalam proyek yang SAMA. kind bawaan mengikuti kunci tujuan. Unggah di Toko → Checkout terlebih dahulu; salin ID API Toko dari Dasar → ID API. Gambar tidak tersedia atau ID lintas proyek mengembalikan 400. URL eksternal atau data gambar tidak diterima.

logo_lightobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
logo_darkobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
faviconobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
show_order_idbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

show_descriptionbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

details_expandedbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

show_project_namebooleanopsional
Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.Detail

Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.

show_store_namebooleanopsional
Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.Detail

Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.

featured_chains[]string[]opsional
Slug blockchain berurutan, paling banyak 60 nilai unik (huruf kecil, angka, tanda hubung; hingga 64 karakter). [] menghapus. Hanya metode faktur yang tersedia yang diurutkan ulang.Detail

Slug blockchain berurutan, paling banyak 60 nilai unik (huruf kecil, angka, tanda hubung; hingga 64 karakter). [] menghapus. Hanya metode faktur yang tersedia yang diurutkan ulang.

featured_asset_ids[]UUID[]opsional
Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.Detail

Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.

default_asset_idUUID|nullopsional
Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.Detail

Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.

messagesobjectopsional
Objek bahasa dengan kunci en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja, dengan string biasa waiting, confirming, paid, underpaid, expired (masing-masing 500 karakter). Hanya bahasa/status yang diberikan yang berubah; {} menghapus semua pesan, {en:{}} menghapus bahasa Inggris, dan string status kosong menghapus status tersebut. Bahasa Inggris menjadi cadangan. Tidak mengganti status sebenarnya.Detail

Objek bahasa dengan kunci en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja, dengan string biasa waiting, confirming, paid, underpaid, expired (masing-masing 500 karakter). Hanya bahasa/status yang diberikan yang berubah; {} menghapus semua pesan, {en:{}} menghapus bahasa Inggris, dan string status kosong menghapus status tersebut. Bahasa Inggris menjadi cadangan. Tidak mengganti status sebenarnya.

enobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
deobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
esobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
pt-BRobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
itobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
ruobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
zh-CNobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
frobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
koobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
jaobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
support_emailstringopsional

Email ASCII, hingga 254 karakter. Kosong menghapus.

support_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

terms_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

privacy_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

return_button_textstringopsional

Label hingga 60 karakter. Gunakan redirect_url/cancel_url/redirect_automatically/language tingkat atas untuk perilaku faktur.

show_return_buttonbooleanopsional
Tampilkan tombol manual Kembali ke merchant/batal di checkout, termasuk status akhir. Jangan sertakan untuk mewarisi tampilan toko (bawaan true); false menyembunyikannya. Tidak membatalkan faktur, menyembunyikan URL dalam JSON, atau menonaktifkan pengalihan sukses otomatis. Tetapkan redirect_automatically tingkat atas ke false secara terpisah jika diperlukan. Memerlukan merchant 8.1.4 atau yang lebih baru.Detail

Tampilkan tombol manual Kembali ke merchant/batal di checkout, termasuk status akhir. Jangan sertakan untuk mewarisi tampilan toko (bawaan true); false menyembunyikannya. Tidak membatalkan faktur, menyembunyikan URL dalam JSON, atau menonaktifkan pengalihan sukses otomatis. Tetapkan redirect_automatically tingkat atas ke false secara terpisah jika diperlukan. Memerlukan merchant 8.1.4 atau yang lebih baru.

metadataobject | nullopsional
Objek JSON khusus merchant; tidak disertakan atau null menjadi {}, maksimum 4,096 byte terenkode dan lima tingkat penyarangan. firstname, lastname, street, street2, zip, city, country, countryiso2, company, dan vatid divalidasi, dinormalisasi, dan diproyeksikan ke kolom ringkasan pelanggan.Detail

Objek JSON khusus merchant; tidak disertakan atau null menjadi {}, maksimum 4,096 byte terenkode dan lima tingkat penyarangan. firstname, lastname, street, street2, zip, city, country, countryiso2, company, dan vatid divalidasi, dinormalisasi, dan diproyeksikan ke kolom ringkasan pelanggan.

firstnamestringopsional
lastnamestringopsional
streetstringopsional
street2stringopsional
zipstringopsional
citystringopsional
countrystringopsional
countryiso2stringopsional
companystringopsional
vatidstringopsional
project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

store_id

"YOUR_STORE_ID"

allocations[]object[]
[{"vendor_id":"VENDOR_A_UUID","gross_amount":"100.00"},{"vendor_id":"VENDOR_B_UUID","gross_amount":"100.00"},{"vendor_id":"VENDOR_C_UUID","gross_amount":"100.00"}]Detail

[{"vendor_id":"VENDOR_A_UUID","gross_amount":"100.00"},{"vendor_id":"VENDOR_B_UUID","gross_amount":"100.00"},{"vendor_id":"VENDOR_C_UUID","gross_amount":"100.00"}]

vendor_idstring
gross_amountstring

Respons 200 application/json

Contoh respons
{
  "data": {
    "invoice_id": "YOUR_INVOICE_ID",
    "status": "new",
    "marketplace": {
      "state": "pending",
      "allocations": []
    }
  },
  "links": {
    "checkout": "https://pay.example.com/invoice/YOUR_INVOICE_ID"
  }
}

Kolom respons

dataobject
invoice_idstring
statusstring
marketplaceobject
statestring
allocations[]array
Catatan penggunaan
  • Memerlukan invoices.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETFaktur dan alokasi/v1/marketplace/invoices/{invoice_id}Hanya baca

Detail faktur normal ditambah status marketplace, revision, hold_reason, alokasi beku, snapshot kebijakan, 200 pembayaran terbaru, dan 100 pembayaran vendor terkait terbaru dengan penanda pemotongan. Checkout publik tidak menampilkan data vendor.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETBukti pembayaran faktur/v1/marketplace/invoices/{invoice_id}/paymentsHanya baca

Bukti pembayaran normal dengan page/per_page. Observasi bukan pembayaran vendor.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/payments?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAlokasi faktur/v1/marketplace/invoices/{invoice_id}/allocationsHanya baca

Snapshot bagian/komisi/tujuan yang tidak dapat diubah serta nilai atomik kotor, komisi, dan bersih yang presisi setelah penyelesaian memenuhi syarat.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/allocations?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBatalkan faktur belum dibayar/v1/marketplace/invoices/{invoice_id}/cancelBaca + tulis

Hanya faktur new atau expired yang belum dibayar. Penerimaan terlambat ditahan untuk ditinjau. Revisi adalah revisi faktur Marketplace.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopeinvoices.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/cancel" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan invoices.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTahan alokasi/v1/marketplace/invoices/{invoice_id}/allocations/holdBaca + tulis

Tahan alokasi yang belum ditandatangani tanpa menghapus kewajiban. Pembayaran yang ditandatangani atau belum pasti tetap dilacak.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopereconciliation.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/allocations/hold" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "reason": "Verify customer request"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

reason

"Verify customer request"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan reconciliation.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTinjau dan lepaskan alokasi/v1/marketplace/invoices/{invoice_id}/allocations/releaseBaca + tulis

Periksa ulang kecukupan dana/finalitas. approved_amount_atomic opsional secara eksplisit menerima pembagian lebih kecil yang sepenuhnya didukung dana sebelum pembekuan alokasi; tidak pernah merekayasa dana penerimaan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopereconciliation.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/allocations/release" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "reason": "Verified payment evidence"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

reason

"Verified payment evidence"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan reconciliation.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTautkan ulang tujuan yang belum dibayar/v1/marketplace/invoices/{invoice_id}/allocations/{allocation_id}/destinationBaca + tulis

Revisi alokasi wajib. Hanya pekerjaan yang belum dicadangkan/ditandatangani dan versi yang disetujui terpisah untuk vendor yang sama pada jaringan asli. Diaudit; pekerjaan bertanda tangan tidak bisa berubah.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopereconciliation.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/allocations/YOUR_ALLOCATION_ID/destination" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "destination_id": "YOUR_DESTINATION_ID",
  "reason": "Vendor verified replacement address"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

destination_id

"YOUR_DESTINATION_ID"

reason

"Vendor verified replacement address"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan reconciliation.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSiapkan pengembalian dana penuh/v1/marketplace/invoices/{invoice_id}/refundBaca + tulis

Siapkan pengembalian penuh jumlah yang diterima dalam aset yang sama, yang disetujui secara terpisah. Sebelum pembayaran vendor, cadangkan dana yang belum dibayar dan balikkan komisi saat konfirmasi. Setelah semua vendor dibayar, gunakan dana bebas terpisah dari alamat utama. Jangan pernah menyimpulkan alamat pengembalian dana pelanggan dari pengirim.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopereconciliation.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/invoices/YOUR_INVOICE_ID/refund" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "payment_method_id": "YOUR_PAYMENT_METHOD_ID",
  "destination_address": "VERIFIED_CUSTOMER_REFUND_ADDRESS",
  "reason": "Customer cancellation",
  "maximum_network_fee_atomic": "10000",
  "maximum_gas_funding_atomic": "0",
  "fee_tier": "medium"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

payment_method_id

"YOUR_PAYMENT_METHOD_ID"

destination_address

"VERIFIED_CUSTOMER_REFUND_ADDRESS"

reason

"Customer cancellation"

maximum_network_fee_atomic

"10000"

maximum_gas_funding_atomic

"0"

fee_tier

"medium"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan reconciliation.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETTemukan alokasi pembayaran/v1/marketplace/allocationsHanya baca

Kandidat berhalaman; filter status (available dan lainnya), asset_id, vendor_id, store_id, dan q (vendor/pesanan/faktur).

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/allocations?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETSaldo buku besar proyek/v1/marketplace/balancesHanya baca

Total aset/akun terkelompok yang presisi, termasuk yang ditahan, tersedia, dicadangkan, dibayar, komisi, pengembalian dana, dan biaya jaringan. Akun penyeimbang eksternal dikecualikan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/balances?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETJurnal yang tidak dapat diubah/v1/marketplace/ledgerHanya baca

Pergerakan berhalaman yang hanya dapat ditambahi; filter q referensi/akun, asset_id, dan vendor_id. Jumlah menggunakan string atomik; tidak ada entri yang bisa diedit atau ditandai lunas secara manual.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/ledger?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETRiwayat pembayaran/v1/marketplace/payoutsHanya baca

Induk berhalaman; filter state, asset_id, vendor_id, atau q ID/simbol. Paid berarti konfirmasi independen, bukan sekadar penyiaran.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/payouts?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPratinjau rencana alokasi/v1/marketplace/payouts/previewBaca + tulis

Rencana akuntansi hanya baca, tanpa pencadangan dana atau wewenang pembelanjaan. Biaya maksimum adalah batas pengguna, bukan perkiraan biaya sebenarnya. Penyiapan melakukan pemeriksaan langsung kemudian.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepayouts.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/payouts/preview" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "allocation_ids": [
    "YOUR_ALLOCATION_ID"
  ],
  "maximum_network_fee_atomic": "10000",
  "maximum_gas_funding_atomic": "0",
  "fee_tier": "medium"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

allocation_ids[]

["YOUR_ALLOCATION_ID"]

maximum_network_fee_atomic

"10000"

maximum_gas_funding_atomic

"0"

fee_tier

"medium"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan payouts.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSiapkan pembayaran/v1/marketplace/payoutsBaca + tulis

Cadangkan 1–100 ID alokasi tersedia dalam satu aset/dompet. BTC memerlukan semua bagian yang belum dibayar untuk setiap faktur terpilih dalam satu batch multi-output. Anggaran berupa string atomik dalam aset biaya native. Membuat rencana awaiting_approval, tidak menyiarkan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepayouts.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/payouts" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "allocation_ids": [
    "YOUR_ALLOCATION_ID"
  ],
  "maximum_network_fee_atomic": "10000",
  "maximum_gas_funding_atomic": "0",
  "fee_tier": "medium"
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

allocation_ids[]

["YOUR_ALLOCATION_ID"]

maximum_network_fee_atomic

"10000"

maximum_gas_funding_atomic

"0"

fee_tier

"medium"

Respons 200 application/json

Contoh respons
{
  "data": {
    "id": "YOUR_PAYOUT_ID",
    "state": "awaiting_approval",
    "revision": 1,
    "plan_hash": "RETAINED_PLAN_HASH",
    "plan": {
      "amount_atomic": "28800000",
      "maximum_network_fee_atomic": "10000",
      "maximum_gas_funding_atomic": "0",
      "items": []
    },
    "transactions": []
  }
}

Kolom respons

dataobject
idstring
statestring
revisioninteger
plan_hashstring
planobject
amount_atomicstring
maximum_network_fee_atomicstring
maximum_gas_funding_atomicstring
items[]array
transactions[]array
Catatan penggunaan
  • Memerlukan payouts.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDetail pembayaran/v1/marketplace/payouts/{payout_id}Hanya baca

Rencana/hash yang tidak dapat diubah, revisi, kedaluwarsa, item penerima, percobaan turunan yang dipertahankan, progres, biaya presisi, dan tautan penjelajah. Tidak pernah kunci privat atau byte bertanda tangan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/payouts/YOUR_PAYOUT_ID?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {
    "id": "YOUR_PAYOUT_ID",
    "state": "awaiting_approval",
    "revision": 1,
    "plan_hash": "RETAINED_PLAN_HASH",
    "plan": {
      "amount_atomic": "28800000",
      "maximum_network_fee_atomic": "10000",
      "maximum_gas_funding_atomic": "0",
      "items": []
    },
    "transactions": []
  }
}

Kolom respons

dataobject
idstring
statestring
revisioninteger
plan_hashstring
planobject
amount_atomicstring
maximum_network_fee_atomicstring
maximum_gas_funding_atomicstring
items[]array
transactions[]array
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTSetujui dan kirim/v1/marketplace/payouts/{payout_id}/approveBaca + tulis

Otorisasi secara eksplisit rencana tersimpan yang persis dalam masa berlakunya. Antrekan pendanaan gas terbatas dan transaksi vendor di latar belakang.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepayouts.approve

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/payouts/YOUR_PAYOUT_ID/approve" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "expected_plan_hash": "COPY_EXACT_PLAN_HASH_FROM_PREPARE",
  "confirm": true
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

expected_plan_hash

"COPY_EXACT_PLAN_HASH_FROM_PREPARE"

confirm

true

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan payouts.approve. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTinjau dan lanjutkan pembayaran/v1/marketplace/payouts/{payout_id}/resumeBaca + tulis

Hanya needs_attention. Gunakan kembali rencana/hash tersimpan; penerima terkonfirmasi tidak pernah dikirim ulang. Dua penyedia independen harus membuktikan revert EVM kanonis dengan konfirmasi cukup sebelum transaksi turunan gagal bisa diganti. Biaya sebelumnya tetap memakai anggaran yang disetujui dan semua hash tetap dalam riwayat. Pengiriman token tidak diketahui/parsial mengembalikan payout_recovery_unverified; dana yang dicadangkan tetap ditahan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepayouts.approve

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/payouts/YOUR_PAYOUT_ID/resume" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "expected_plan_hash": "COPY_EXACT_PLAN_HASH_FROM_PREPARE",
  "confirm": true
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

expected_plan_hash

"COPY_EXACT_PLAN_HASH_FROM_PREPARE"

confirm

true

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan payouts.approve. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBatalkan pekerjaan yang belum ditandatangani/v1/marketplace/payouts/{payout_id}/cancelBaca + tulis

Lepaskan hanya pencadangan dana yang aman karena belum ditandatangani/diajukan. Penerima terkonfirmasi dan audit tetap ada. Pekerjaan bertanda tangan/belum pasti tidak bisa dibatalkan. Revert terbukti yang secara eksplisit dipulihkan tidak lagi memblokir pembatalan sisa pekerjaan yang belum ditandatangani.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepayouts.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/payouts/YOUR_PAYOUT_ID/cancel" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan payouts.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETKebijakan pembayaran otomatis/v1/marketplace/policiesHanya baca

Baca kebijakan per aset, revision, next_attempt_at, last_checked_at, dan last_error aman saat penyiapan atau otorisasi perlu perhatian.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/policies?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": []
}

Kolom respons

data[]array
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTOtorisasi kebijakan pembayaran/v1/marketplace/policiesBaca + tulis

String atomik presisi; minimum <= transfer <= pokok harian, batas biaya/gas <= anggaran harian masing-masing. interval_seconds 60–604800; minimum_confirmations 1–100000 tunduk pada batas minimum blockchain. Revision 0 membuat. Kebijakan aktif bisa mengirim tanpa klik tambahan; pertahankan false sampai ditinjau.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopepolicies.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/policies" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "asset_id": "YOUR_ASSET_ID",
  "revision": 0,
  "enabled": false,
  "minimum_atomic": "100000",
  "transfer_limit_atomic": "10000000",
  "daily_limit_atomic": "30000000",
  "fee_limit_atomic": "10000",
  "daily_fee_limit_atomic": "30000",
  "gas_limit_atomic": "0",
  "daily_gas_limit_atomic": "0",
  "interval_seconds": 3600,
  "minimum_confirmations": 2
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

asset_id

"YOUR_ASSET_ID"

revision

0

enabled

false

minimum_atomic

"100000"

transfer_limit_atomic

"10000000"

daily_limit_atomic

"30000000"

fee_limit_atomic

"10000"

daily_fee_limit_atomic

"30000"

gas_limit_atomic

"0"

daily_gas_limit_atomic

"0"

interval_seconds

3600

minimum_confirmations

2

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan policies.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETWebhook Marketplace/v1/marketplace/webhooksHanya baca

Hingga 20 endpoint ditambah event_types yang didukung. Tidak pernah mengembalikan rahasia penandatanganan terenkripsi atau teks biasa.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/webhooks?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {
    "endpoints": [],
    "event_types": [
      "marketplace.invoice.created",
      "marketplace.allocations.available",
      "marketplace.allocations.held",
      "marketplace.payout.approved",
      "marketplace.payout.broadcast",
      "marketplace.payout.confirmed",
      "marketplace.payout.partial",
      "marketplace.payout.failed",
      "marketplace.payout.cancelled",
      "marketplace.refund.prepared",
      "marketplace.refund.confirmed"
    ]
  }
}

Kolom respons

dataobject
endpoints[]array
event_types[]array
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat webhook Marketplace/v1/marketplace/webhooksBaca + tulis

Hanya HTTPS publik, tanpa kredensial, tujuan privat, atau pengalihan. Mengembalikan signing_secret satu kali per respons pembuatan idempoten tersimpan; simpan dengan aman. Terpisah dari rahasia IPN toko.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopewebhooks.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/webhooks" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "url": "https://shop.example.com/marketplace-events",
  "enabled": true,
  "events": [
    "marketplace.payout.confirmed",
    "marketplace.payout.failed"
  ]
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

url

"https://shop.example.com/marketplace-events"

enabled

true

events[]

["marketplace.payout.confirmed","marketplace.payout.failed"]

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan webhooks.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTPerbarui webhook Marketplace/v1/marketplace/webhooks/{webhook_id}/updateBaca + tulis

Perubahan membatalkan pengiriman lama yang belum dikirim. Rahasia tetap sama; payload lama yang tidak dapat diubah tidak pernah dialihkan ke URL baru.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopewebhooks.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/webhooks/YOUR_WEBHOOK_ID/update" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1,
  "url": "https://shop.example.com/marketplace-events",
  "enabled": true,
  "events": [
    "marketplace.payout.confirmed"
  ]
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

url

"https://shop.example.com/marketplace-events"

enabled

true

events[]

["marketplace.payout.confirmed"]

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan webhooks.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTNonaktifkan webhook Marketplace/v1/marketplace/webhooks/{webhook_id}/disableBaca + tulis

Hentikan pengiriman baru; riwayat peristiwa tersimpan tetap ada.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopewebhooks.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/webhooks/YOUR_WEBHOOK_ID/disable" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "revision": 1
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

revision

1

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan webhooks.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETPeristiwa Marketplace/v1/marketplace/eventsHanya baca

Referensi peristiwa berhalaman yang tidak dapat diubah. q mencari tipe/referensi; status memfilter event_type.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/events?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETBaca peristiwa tersimpan/v1/marketplace/events/{event_id}Hanya baca

Mengembalikan payload peristiwa asli yang tidak dapat diubah, bukan rekonstruksi dari saldo terkini.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/events/YOUR_EVENT_ID?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {
    "event_id": "11111111-1111-4111-8111-111111111111",
    "event_type": "marketplace.payout.confirmed",
    "payload_version": 1,
    "project_id": "YOUR_PROJECT_ID",
    "occurred_at": "2026-10-06T12:00:00Z",
    "data": {
      "payout_id": "YOUR_PAYOUT_ID",
      "asset_id": "YOUR_ASSET_ID",
      "amount_atomic": "28800000",
      "transactions": [
        {
          "transaction_id": "EXAMPLE_TRANSACTION_ID",
          "explorer_url": "https://mempool.space/tx/EXAMPLE_TRANSACTION_ID"
        }
      ]
    }
  }
}

Kolom respons

dataobject
event_idstring
event_typestring
payload_versioninteger
project_idstring
occurred_atstring
dataobject
payout_idstring
asset_idstring
amount_atomicstring
transactions[]object[]
transaction_idstring
explorer_urlstring
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETRiwayat pengiriman Marketplace/v1/marketplace/webhook-deliveriesHanya baca

Pengiriman berhalaman, jenis peristiwa, percobaan, dan hasil terakhir. Filter status pending/sending/succeeded/failed/cancelled; q jenis peristiwa.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/webhook-deliveries?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 0,
    "pages": 1
  }
}

Kolom respons

data[]array
paginationobject
pageinteger
per_pageinteger
totalinteger
pagesinteger
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDetail pengiriman/v1/marketplace/webhook-deliveries/{delivery_id}Hanya baca

URL asli, payload tersimpan, hasil HTTP, dan kesalahan aman; tanpa rahasia penandatanganan.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
ParameterTipe / lokasiAturan
permissioncredential scopemarketplace.read

Parameter kueri

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

per_pageopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

qopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

statusopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

store_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

vendor_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

asset_idopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

fromopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

toopsional

Gunakan hanya filter yang didokumentasikan untuk resource ini. Daftar berhalaman secara bawaan berisi 25 dan mengizinkan hingga 100 baris.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/marketplace/webhook-deliveries/YOUR_DELIVERY_ID?project_id=YOUR_PROJECT_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan marketplace.read. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTKirim ulang peristiwa yang sama/v1/marketplace/webhook-deliveries/{delivery_id}/resendBaca + tulis

Hanya pengiriman selesai dan endpoint aktif yang tidak berubah; hingga 20 percobaan ulang manual. Menggunakan kembali event_id. Notifikasi gagal tidak pernah mengotorisasi pembayaran kedua.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MARKETPLACE_API_TOKEN
Idempotency-Keywajib16–128 huruf, angka, -, _, atau .; simpan secara persisten bersama permintaan persis ini
ParameterTipe / lokasiAturan
permissioncredential scopewebhooks.write

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new operation.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/marketplace/webhook-deliveries/YOUR_DELIVERY_ID/resend" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: marketplace-request-1042' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "project_id": "YOUR_PROJECT_ID",
  "confirm": true
}'

Body permintaan

project_idUUIDwajib

Proyek yang diotorisasi. Wajib pada setiap permintaan, termasuk URL item.

confirm

true

Respons 200 application/json

Contoh respons
{
  "data": {}
}

Kolom respons

dataobject
Catatan penggunaan
  • Memerlukan webhooks.write. Contoh respons menampilkan kolom yang dipilih; GET resource untuk bukti tersimpan lengkap.
  • Setiap POST memerlukan Idempotency-Key 16–128 karakter yang disimpan secara persisten (huruf, angka, -, _, atau .). Gunakan kembali kunci dan instruksi JSON yang sama setelah batas waktu terlampaui. Instruksi berbeda mengembalikan 409. Respons selesai disimpan selama 30 hari; kunci lama menjadi penanda yang tidak bisa digunakan ulang. Jangan pernah mengganti kunci hanya untuk melewati hasil yang belum pasti.
  • Kunci memiliki daftar proyek, pembatasan toko faktur opsional, kedaluwarsa, daftar izin IP, dan kuota 1–600/menit (bawaan 60). HTTP 429 menyertakan Retry-After. Kunci yang dibatasi ke toko tidak bisa melihat vendor, saldo proyek, buku besar, pembayaran, atau pengaturan. Simpan kredensial pembelanjaan hanya di server tepercaya, jangan pernah di browser atau aplikasi seluler yang didistribusikan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar pengecualian pembayaran/v1/projects/{project_id}/reconciliationHanya baca

Satu antrean tinjauan berhalaman untuk pembayaran kurang bayar, lebih bayar, terlambat, terkena reorg, atau ambigu, pengiriman gagal, serta metode nonaktif/kedaluwarsa. Kasus yang diakui operator dibuka kembali saat bukti baru tiba.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial ini.

Parameter kueri

statusstring

open (bawaan), resolved, atau all.

reasonstring

underpaid, overpaid, late, reorged, ambiguous, delivery_failed, disabled_method, atau expired_method.

store_idUUID

Filter toko opsional.

pageinteger

1–40001. Tetap 25 kasus per halaman.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/reconciliation?status=open&page=1" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{"data":[],"pagination":{"page":1,"per_page":25,"total":0,"has_more":false},"counts":{"open":0,"resolved":0}}

Kolom respons

data[]object[]selalu

Kasus yang paling baru diperbarui lebih dahulu. Gunakan invoice_id, bukan id internal, dalam URL detail merchant.

idUUIDselalu

ID catatan internal / UUID faktur yang ditampilkan kepada pelanggan. invoice_id cocok dengan payload callback.

invoice_idUUIDselalu

ID catatan internal / UUID faktur yang ditampilkan kepada pelanggan. invoice_id cocok dengan payload callback.

store_idUUIDselalu

Toko pemilik.

store_namestringselalu

Toko pemilik.

order_idstring | nullselalu

Referensi pesanan merchant dan email pelanggan yang bersifat pribadi.

emailstring | nullselalu

Referensi pesanan merchant dan email pelanggan yang bersifat pribadi.

amountdecimal stringselalu

Jumlah dan mata uang fiat faktur asli.

currencystringselalu

Jumlah dan mata uang fiat faktur asli.

invoice_statusinvoice statusselalu

Status siklus hidup pembayaran saat ini.

statusopen|resolvedselalu

Status kasus dan jenis pengecualian yang tercantum dalam filter alasan.

reasons[]string[]selalu

Status kasus dan jenis pengecualian yang tercantum dalam filter alasan.

revisionintegerselalu

Revisi tinjauan dan waktu pembaruan terkini.

updated_attimestampselalu

Revisi tinjauan dan waktu pembaruan terkini.

paginationobjectselalu

page (1–40001), per_page (25), total baris yang cocok, has_more.

pageinteger
per_pageinteger
totalinteger
has_moreboolean
countsobjectselalu

Total open dan resolved untuk seluruh proyek, independen dari filter saat ini.

openinteger
resolvedinteger
Catatan penggunaan
  • Hanya baca, dibatasi ke proyek, dan tercakup dalam kuota kredensial. Keputusan keuangan dan pengembalian dana tetap hanya melalui konsol.
  • Baris berisi id (UUID internal), invoice_id (UUID publik, sama dengan callback), informasi toko, jumlah/mata uang fiat asli, invoice_status, status kasus, alasan, revisi, dan updated_at. Gunakan invoice_id pada endpoint detail merchant.
  • Deteksi otomatis mengikuti jendela pemantauan faktur asli; Pindai ulang memperpanjang observasi satu jam tanpa mengaktifkan checkout. Metode setelah penyelesaian/dibatalkan terus dipantau dalam jendela tersebut.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETBaca bukti rekonsiliasi/v1/projects/{project_id}/reconciliation/{invoice_id}Hanya baca

Mengembalikan faktur, kasus, total metode presisi dan jumlah pengembalian dana tersedia, transaksi teramati, riwayat pengiriman, keputusan merchant, serta transfer pengembalian dana tertaut. Tidak pernah menampilkan kunci penandatanganan atau rahasia callback.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan.

invoice_idUUIDwajib

UUID faktur publik, bukan id internal.

Parameter kueri

pageinteger

Halaman riwayat keputusan, dimulai dari 1; 25 keputusan per halaman.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/reconciliation/YOUR_PUBLIC_INVOICE_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{"invoice":{"invoice_id":"YOUR_PUBLIC_INVOICE_ID","status":"processing"},"case":{"status":"open","reasons":["underpaid"],"revision":1},"methods":[],"history":[],"history_pagination":{"page":1,"per_page":25,"total":0},"refunds":[],"observations":[],"deliveries":[]}

Kolom respons

invoiceobjectselalu

Faktur merchant lengkap: kolom ringkasan, metadata pribadi, dan payment_intents. Tidak dibungkus dalam data.

idUUIDselalu

UUID faktur internal. Jangan gunakan dalam path detail merchant atau checkout.

invoice_idUUIDselalu

UUID faktur publik yang digunakan path detail merchant dan checkout.

project_idUUIDselalu

Proyek pemilik.

store_idUUIDselalu

Toko pemilik.

sourcemanual | apiselalu

Cara faktur dibuat.

order_idstring | nullselalu

Referensi pesanan merchant.

emailstring | nullselalu

Email pelanggan khusus merchant. Tidak pernah dikembalikan oleh checkout publik.

customer_namestring | nullselalu

Nama tampilan yang diturunkan dari metadata pribadi firstname, lastname, dan company.

customer_addressstring | nullselalu

Alamat satu baris untuk merchant yang diturunkan dari metadata pribadi company, street, street2, zip, city, country, countryiso2, dan vatid.

descriptionstring | nullselalu

Deskripsi yang ditampilkan kepada pelanggan.

amountdecimal stringselalu

Jumlah faktur kanonis.

currencystringselalu

Kode mata uang/aset faktur yang dinormalisasi.

exchange_rate_spread_percentdecimal stringselalu

Spread kuotasi terkunci: pengesampingan saat pembuatan, atau pengaturan bawaan toko jika tidak disertakan. Diterapkan sebelum pembulatan ke atas; tidak pernah berubah pada faktur ini.

underpayment_tolerance_percentdecimal stringselalu

Persentase kekurangan yang diterima dan tidak dapat diubah, disimpan dalam snapshot saat faktur dibuat.

statusinvoice statusselalu

new, processing, settled, expired, invalid, atau cancelled.

amount_statusamount statusselalu

none, partial, paid, atau overpaid. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan dengan none dan tanpa metode pembayaran.

timing_statustiming statusselalu

on_time atau late.

resolutionresolutionselalu

automatic, manually_settled, atau manually_invalidated.

sequenceintegerselalu

Urutan status faktur monoton, dimulai dari 1.

winning_payment_intent_idUUID | nullselalu

Metode pembayaran yang menyelesaikan faktur, saat dipilih.

expires_atRFC 3339 timestampselalu

Tenggat kuotasi/pembayaran.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat paling akhir yang dikonfigurasi di antara metode pembayaran.

settled_attimestamp | nullselalu

Waktu penyelesaian saat settled.

cancelled_attimestamp | nullselalu

Waktu pembatalan saat cancelled.

archived_attimestamp | nullselalu

Waktu pengarsipan saat diarsipkan.

created_atRFC 3339 timestampselalu

Waktu pembuatan.

updated_atRFC 3339 timestampselalu

Waktu pembaruan status terakhir.

ipn_urlstring | nullselalu

Tujuan IPN efektif per faktur. Hanya respons merchant; dihilangkan dari checkout publik.

redirect_urlstring | nullselalu

URL sukses efektif yang digunakan setelah penyelesaian.

cancel_urlstring | nullselalu

URL kembali efektif yang digunakan saat checkout berakhir tanpa pembayaran berhasil.

redirect_automaticallybooleanselalu

Apakah checkout harus mengalihkan secara otomatis setelah berhasil.

checkout_languagestringselalu

Tag bahasa checkout efektif.

metadataobjectselalu
Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.Detail

Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.

payment_intents[]object[]selalu

Metode pembayaran yang diberi kuotasi dan status pemantauan.

idUUIDselalu

Pengenal intent pembayaran; juga digunakan sebagai intent_id QR checkout.

payment_railonchain | lightningselalu
Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.Detail

Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.

bolt11string | nullselalu

Permintaan pembayaran Lightning, jika tidak null. Bayar permintaan ini dengan dompet Lightning; jangan pernah mengirim dana on-chain ke hash pembayarannya.

asset_idUUIDselalu

Pengenal aset pembayaran yang dikonfigurasi.

asset_keystringselalu

Kunci aset kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto.

networkstringselalu

Jaringan yang dikonfigurasi, saat ini mainnet untuk aset pembayaran yang didukung.

caip_network_idstringselalu

Pengenal jaringan CAIP-2 kanonis.

caip_asset_idstring | nullselalu

Pengenal CAIP-19 kanonis jika terdaftar.

symbolstringselalu

Simbol aset.

asset_decimalsintegerselalu

Presisi unit atomik. BTC Lightning menggunakan 11 (millisatoshi), bukan 8 seperti Bitcoin on-chain. Kuotasi berupa satoshi utuh; penerimaan mempertahankan presisi millisatoshi.

statusintent statusselalu

pending, partial, paid, overpaid, expired, atau invalid.

finality_modeconfirmations | finalizedselalu

Kebijakan finalitas.

required_confirmationsintegerselalu

Konfirmasi yang diperlukan jika berlaku.

quote_ratedecimal stringselalu

Unit aset per satu unit mata uang faktur, termasuk spread terkunci. Contohnya 1.02 USDC per USD. Bukan kurs kebalikannya.

quote_detailsobject | nullselalu
Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.Detail

Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.

expected_amountdecimal stringselalu
Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.Detail

Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.

expected_amount_atomicinteger stringselalu

Jumlah presisi dalam unit terkecil aset.

minimum_payment_amountdecimal stringselalu

Jumlah terkecil yang diterima sebagai lunas setelah menerapkan toleransi faktur.

minimum_payment_amount_atomicinteger stringselalu

Ambang diterima yang presisi dalam unit terkecil aset.

received_amountdecimal stringselalu

Jumlah teramati.

received_amount_atomicinteger stringselalu

Jumlah atomik teramati.

confirmed_amountdecimal stringselalu

Jumlah terkonfirmasi/final.

confirmed_amount_atomicinteger stringselalu

Jumlah atomik terkonfirmasi/final.

destination_addressstringselalu

Alamat penerimaan on-chain, atau hash pembayaran 64 karakter untuk Lightning. Gunakan bolt11 untuk membayar Lightning; hash-nya bukan alamat Bitcoin.

destination_tagstring | nullselalu

Referensi pembayaran publik wajib jika jalur menggunakannya: destination tag XRP, ID memo Stellar, atau komentar faktur TON. Null untuk jalur dengan alamat unik.

derivation_indexintegerselalu

Indeks turunan dompet yang dicadangkan; hanya detail merchant.

quote_expires_atRFC 3339 timestampselalu

Kedaluwarsa kuotasi.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat untuk metode ini.

next_check_attimestamp | nullselalu

Pemeriksaan blockchain terjadwal berikutnya.

last_checked_attimestamp | nullselalu

Pemeriksaan blockchain terakhir.

last_chain_heightinteger | nullselalu

Ketinggian tepercaya terakhir yang diamati pemantau.

last_anchor_hashstring | nullselalu

Anchor/hash blok pemantau terakhir.

last_monitor_errorstring | nullselalu

Diagnosis pemantauan aman untuk operator.

first_payment_attimestamp | nullselalu

Waktu pembayaran pertama teramati.

fully_paid_attimestamp | nullselalu

Waktu jumlah minimum diterima pertama tercapai.

finalized_attimestamp | nullselalu

Waktu pembayaran memenuhi kebijakan finalitas.

caseobject | nullselalu

Kasus saat ini dengan status, alasan, revisi, dan stempel waktu; null jika tidak ada pengecualian. Bukti internal dikecualikan.

statusstring
reasons[]array
revisioninteger
methods[]object[]selalu
id, wallet_id, asset_id, symbol, chain, decimals, expected_atomic, received_atomic, confirmed_atomic, refundable_atomic, address, tag, monitor_error, last_checked_at, monitoring_expires_at, dan spending_supported. Jumlah atomik berupa string.Detail

id, wallet_id, asset_id, symbol, chain, decimals, expected_atomic, received_atomic, confirmed_atomic, refundable_atomic, address, tag, monitor_error, last_checked_at, monitoring_expires_at, dan spending_supported. Jumlah atomik berupa string.

history[]object[]selalu

25 keputusan terbaru untuk halaman ini: id, action, note, actor, result, created_at.

history_paginationobjectselalu

page, per_page (25), total. Hanya riwayat keputusan yang dipaginasi berdasarkan page.

pageinteger
per_pageinteger
totalinteger
refunds[]object[]selalu
100 pengembalian dana terbaru: id, payment_intent_id, amount_atomic, destination, status, request, treasury_intent_id, transfer_status, created_at, dan transactions (id/status). Pengajuan pengembalian dana hanya melalui konsol.Detail

100 pengembalian dana terbaru: id, payment_intent_id, amount_atomic, destination, status, request, treasury_intent_id, transfer_status, created_at, dan transactions (id/status). Pengajuan pengembalian dana hanya melalui konsol.

observations[]object[]selalu
100 terbaru: payment_intent_id, transaction_id, event_index, amount, status, confirmations, observed_at, symbol, chain, dan disabled_at_detection. explorer_name/explorer_url disertakan jika didukung.Detail

100 terbaru: payment_intent_id, transaction_id, event_index, amount, status, confirmations, observed_at, symbol, chain, dan disabled_at_detection. explorer_name/explorer_url disertakan jika didukung.

deliveries[]object[]selalu

50 terbaru: id, kind, status, attempts, response_status, error, next_attempt_at, event_type, dan created_at. Tanpa rahasia callback.

Catatan penggunaan
  • case bernilai null jika faktur belum menghasilkan pengecualian. 100 observasi dan 50 pengiriman terbaru dikembalikan; riwayat keputusan berhalaman.
  • refundable_atomic memerlukan setidaknya satu konfirmasi jaringan, mengecualikan pencadangan pengembalian dana yang ada, dan bukan janji dana dompet yang bisa dibelanjakan. Kuotasi langsung juga memvalidasi kesiapan dompet, saldo sumber, dan biaya.
  • Pengembalian dana yang disiarkan berarti diajukan ke endpoint blockchain, bukan penerimaan pelanggan yang dikonfirmasi secara independen. Biaya bersifat tambahan dan biaya pemrosesan fiat tidak otomatis dikreditkan dengan menerbitkan pengembalian dana.
  • Menu proyek konsol → Perlu perhatian menyediakan batal, terima, tolak, buka ulang, tinjau, catatan, Pindai ulang, percobaan ulang pengiriman, dan pengembalian dana pada blockchain yang didukung. Keputusan menggunakan sesi yang dilindungi CSRF, request_id unik, revisi kasus terkini, catatan wajib, dan konfirmasi eksplisit; token bearer tidak bisa memanggil perubahan tersebut.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETPenemuan layanan API/Publik

Respons edge host API yang dikelola yang mengonfirmasi peran API publik v1. Respons ini dihasilkan proxy yang dikelola, bukan router Axum merchant.

Autentikasi & header

Publik

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/"

Respons 200 application/json

Contoh respons
{
  "service": "Wholly Crypto API",
  "status": "ready",
  "version": "v1"
}

Kolom respons

servicestring
statusstring
versionstring
Catatan penggunaan
  • Token bearer tidak diperlukan.
  • Hanya nama host API yang dikelola yang menjamin respons root persis ini.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETKesehatan layanan/healthzPublik

Memeriksa keterjangkauan aplikasi dan ping database dua detik. Gunakan untuk pemantauan, bukan sebagai pengganti status faktur.

Autentikasi & header

Publik

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/healthz"

Respons 200 healthy; 503 database unavailable

Contoh respons
{
  "status": "ok",
  "database": "ok",
  "version": "0.1.0"
}

Kolom respons

statusstring
databasestring
versionstring
Catatan penggunaan
  • Token bearer tidak diperlukan.
  • Nilai version adalah versi paket yang berjalan, bukan versi path API.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar aset pembayaran proyek/v1/projects/{project_id}/payment-assetsHanya baca

Mencantumkan aset native dan token terverifikasi dengan kebijakan proyek, kesiapan dompet blockchain, serta kemampuan pemindai/saldo terinstal. scanner_ready adalah gerbang build adapter, bukan hasil kuorum endpoint langsung. Mulai 6.0.6, pembuatan mempertahankan metode yang dikonfigurasi saat pemindai tidak aktif. Verifikasi penerimaan tetap memerlukan ambang penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1).

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "data": [
    {
      "asset": {
        "id": "10000000-0000-4000-8000-000000000003",
        "asset_key": "eip155:1/slip44:60",
        "chain_slug": "ethereum",
        "network": "mainnet",
        "caip_network_id": "eip155:1",
        "caip_asset_id": "eip155:1/slip44:60",
        "asset_kind": "native",
        "payment_rail": "evm-native",
        "symbol": "ETH",
        "name": "Ethereum",
        "decimals": 18,
        "contract_address": null,
        "coingecko_id": "ethereum",
        "icon_path": "/assets/coingecko/ethereum.png",
        "token_standard": null,
        "metadata_verified_at": null,
        "payment_supported": true,
        "scanner_ready": true,
        "balance_ready": true,
        "default_finality_mode": "confirmations",
        "default_required_confirmations": 12,
        "default_monitoring_minutes": 60
      },
      "policy": {
        "enabled": true,
        "finality_mode": "confirmations",
        "required_confirmations": 12,
        "monitoring_minutes": 60,
        "late_monitoring_days": 30
      },
      "wallet": null,
      "wallet_readiness": "wallet_missing",
      "receive_readiness": { "ready": false, "invoice_creatable": false, "checked_at": "2026-09-16T09:00:00Z", "issues": [{ "chain_slug": "ethereum", "asset_id": "10000000-0000-4000-8000-000000000003", "asset_ticker": "ETH", "reason_code": "wallet_missing", "message": "ethereum / ETH: Create a project wallet for this chain.", "action": "wallets" }] }
    }
  ]
}

Kolom respons

data[]object[]
assetobjectselalu

Aset native atau token terverifikasi yang persisten.

idUUIDselalu

Pengenal aset pembayaran persisten yang digunakan rute kebijakan proyek dan toko.

asset_keystringselalu

Identitas aset native atau kontrak kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

networkstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

caip_network_idstringselalu

Identitas jaringan dan aset kanonis.

caip_asset_idstring|nullselalu

Identitas jaringan dan aset kanonis.

asset_kindnative | tokenselalu

Apakah penyelesaian menggunakan mata uang blockchain atau kontrak/mint terverifikasi.

payment_railstringselalu

Jalur runtime: utxo, evm-native, solana-native, account-native, privacy-native, atau token-transfer.

symbolstringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

namestringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

decimalsintegerselalu

Identitas tampilan dan presisi unit atomik yang tepat.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk aset native.

coingecko_idstring | nullselalu

Identitas penemuan/harga. Null untuk kontrak kustom; jangan pernah menyimpulkan harga pasar dari tickernya. Metadata CoinGecko saja tidak pernah membuat token bisa dipilih.

custom_tokenbooleanselalu

Kontrak kustom terverifikasi on-chain dengan harga USD tetap atau pool DEX terpilih yang berlaku dalam proyek.

icon_pathpath | nullselalu

Ikon token dalam cache lokal jika tersedia.

token_standarderc20 | spl-token | nullselalu

Standar token runtime terverifikasi; null untuk aset native.

metadata_verified_attimestamp | nullselalu

Waktu verifikasi metadata on-chain untuk token yang dipromosikan.

payment_supportedbooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

scanner_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

balance_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

default_finality_modeconfirmations | finalizedselalu

Model finalitas bawaan yang diwarisi kebijakan proyek baru.

default_required_confirmationsintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

default_monitoring_minutesintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

policyobject | nullselalu
Kebijakan aktivasi/finalitas proyek, atau null jika belum dikonfigurasi. Mencakup custom_price_mode (fixed/dex), custom_price_usd (string desimal tetap atau null), custom_dex_pair (pool terpilih atau null), dan custom_dex (dex_id, quote_symbol, price_usd saat ini atau null, liquidity_usd, fetched_at, last_error). Harga kustom dibagi oleh toko dalam proyek ini.Detail

Kebijakan aktivasi/finalitas proyek, atau null jika belum dikonfigurasi. Mencakup custom_price_mode (fixed/dex), custom_price_usd (string desimal tetap atau null), custom_dex_pair (pool terpilih atau null), dan custom_dex (dex_id, quote_symbol, price_usd saat ini atau null, liquidity_usd, fetched_at, last_error). Harga kustom dibagi oleh toko dalam proyek ini.

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

walletobject | nullselalu

Dompet proyek nonkustodial blockchain. Token berbagi dompet native blockchain-nya.

idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

wallet_readinessreadiness enumselalu
unsupported, project_disabled, project_asset_disabled, store_disabled, store_asset_disabled, wallet_missing, wallet_pending, wallet_disabled, wallet_error, backup_required, account_activation_required, external_wallet_rpc_required, atau ready.Detail

unsupported, project_disabled, project_asset_disabled, store_disabled, store_asset_disabled, wallet_missing, wallet_pending, wallet_disabled, wallet_error, backup_required, account_activation_required, external_wallet_rpc_required, atau ready.

receive_readinessobject | null5.5.0+
Penilaian penyiapan penerimaan proyek bersama. Mencakup pemeriksaan dompet dan penyedia pemindai independen, terpisah dari kebaruan saldo serta gas pengiriman. Null jika tidak ada kebijakan proyek. Mata uang/kurs faktur diperiksa saat membuat faktur.Detail

Penilaian penyiapan penerimaan proyek bersama. Mencakup pemeriksaan dompet dan penyedia pemindai independen, terpisah dari kebaruan saldo serta gas pengiriman. Null jika tidak ada kebijakan proyek. Mata uang/kurs faktur diperiksa saat membuat faktur.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

Catatan penggunaan
  • Token bisa terdaftar secara global tetapi tetap tidak bisa dipilih jika scanner_ready atau payment_supported false.
  • Matriks kemampuan operator juga memerlukan peran endpoint pemindai yang persis; endpoint sehat yang melayani API tidak kompatibel tidak dihitung.
  • Token berbagi dompet proyek pada blockchain native-nya; tidak membuat frasa seed lain.
  • Ringkasan dompet tersemat hanya mencakup kesiapan dan membiarkan saldo kosong; gunakan GET /v1/projects/{project_id}/wallets untuk saldo yang diperkaya.

Kesalahan

Kode kesalahan & aturan percobaan ulang

PUTPerbarui kebijakan aset proyek/v1/projects/{project_id}/payment-assets/{asset_id}Baca + tulis

Membuat atau mengganti kebijakan proyek untuk satu aset persisten dan mengembalikan daftar aset proyek yang disegarkan. Menonaktifkan blockchain native membuat aset native dan tokennya tidak tersedia untuk faktur baru, tetapi mempertahankan kebijakan token, dompet, dan pilihan toko agar bisa dilanjutkan nanti.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Content-Typewajibapplication/json
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

asset_idUUIDwajib

id aset yang dikembalikan daftar aset proyek atau pendaftaran token.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request PUT \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-assets/YOUR_ASSET_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "enabled": true,
  "finality_mode": "confirmations",
  "required_confirmations": 2,
  "monitoring_minutes": 60,
  "late_monitoring_days": 30
}'

Body permintaan

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

Respons 200 application/json

Contoh respons
{
  "data": [
    { "asset": { "id": "ASSET_UUID", "symbol": "USDC", "asset_kind": "token", "scanner_ready": true }, "policy": { "enabled": true, "finality_mode": "confirmations", "required_confirmations": 2, "monitoring_minutes": 60, "late_monitoring_days": 30 }, "wallet_readiness": "ready" }
  ]
}

Kolom respons

data[]object[]
assetobjectselalu

Aset native atau token terverifikasi yang persisten.

idUUIDselalu

Pengenal aset pembayaran persisten yang digunakan rute kebijakan proyek dan toko.

asset_keystringselalu

Identitas aset native atau kontrak kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

networkstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

caip_network_idstringselalu

Identitas jaringan dan aset kanonis.

caip_asset_idstring|nullselalu

Identitas jaringan dan aset kanonis.

asset_kindnative | tokenselalu

Apakah penyelesaian menggunakan mata uang blockchain atau kontrak/mint terverifikasi.

payment_railstringselalu

Jalur runtime: utxo, evm-native, solana-native, account-native, privacy-native, atau token-transfer.

symbolstringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

namestringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

decimalsintegerselalu

Identitas tampilan dan presisi unit atomik yang tepat.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk aset native.

coingecko_idstring | nullselalu

Identitas penemuan/harga. Null untuk kontrak kustom; jangan pernah menyimpulkan harga pasar dari tickernya. Metadata CoinGecko saja tidak pernah membuat token bisa dipilih.

custom_tokenbooleanselalu

Kontrak kustom terverifikasi on-chain dengan harga USD tetap atau pool DEX terpilih yang berlaku dalam proyek.

icon_pathpath | nullselalu

Ikon token dalam cache lokal jika tersedia.

token_standarderc20 | spl-token | nullselalu

Standar token runtime terverifikasi; null untuk aset native.

metadata_verified_attimestamp | nullselalu

Waktu verifikasi metadata on-chain untuk token yang dipromosikan.

payment_supportedbooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

scanner_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

balance_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

default_finality_modeconfirmations | finalizedselalu

Model finalitas bawaan yang diwarisi kebijakan proyek baru.

default_required_confirmationsintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

default_monitoring_minutesintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

policyobject | nullselalu
Kebijakan aktivasi/finalitas proyek, atau null jika belum dikonfigurasi. Mencakup custom_price_mode (fixed/dex), custom_price_usd (string desimal tetap atau null), custom_dex_pair (pool terpilih atau null), dan custom_dex (dex_id, quote_symbol, price_usd saat ini atau null, liquidity_usd, fetched_at, last_error). Harga kustom dibagi oleh toko dalam proyek ini.Detail

Kebijakan aktivasi/finalitas proyek, atau null jika belum dikonfigurasi. Mencakup custom_price_mode (fixed/dex), custom_price_usd (string desimal tetap atau null), custom_dex_pair (pool terpilih atau null), dan custom_dex (dex_id, quote_symbol, price_usd saat ini atau null, liquidity_usd, fetched_at, last_error). Harga kustom dibagi oleh toko dalam proyek ini.

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

walletobject | nullselalu

Dompet proyek nonkustodial blockchain. Token berbagi dompet native blockchain-nya.

idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

wallet_readinessreadiness enumselalu
unsupported, project_disabled, project_asset_disabled, store_disabled, store_asset_disabled, wallet_missing, wallet_pending, wallet_disabled, wallet_error, backup_required, account_activation_required, external_wallet_rpc_required, atau ready.Detail

unsupported, project_disabled, project_asset_disabled, store_disabled, store_asset_disabled, wallet_missing, wallet_pending, wallet_disabled, wallet_error, backup_required, account_activation_required, external_wallet_rpc_required, atau ready.

receive_readinessobject | null5.5.0+
Penilaian penyiapan penerimaan proyek bersama. Mencakup pemeriksaan dompet dan penyedia pemindai independen, terpisah dari kebaruan saldo serta gas pengiriman. Null jika tidak ada kebijakan proyek. Mata uang/kurs faktur diperiksa saat membuat faktur.Detail

Penilaian penyiapan penerimaan proyek bersama. Mencakup pemeriksaan dompet dan penyedia pemindai independen, terpisah dari kebaruan saldo serta gas pengiriman. Null jika tidak ada kebijakan proyek. Mata uang/kurs faktur diperiksa saat membuat faktur.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

Catatan penggunaan
  • Body adalah penggantian kebijakan penuh dan menolak kolom tidak dikenal.
  • Pengaktifan proyek sendiri tidak memilih aset untuk toko mana pun.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETJelajahi kandidat token pembayaran/v1/projects/{project_id}/payment-token-candidatesHanya baca

Mencari pemetaan kontrak CoinGecko dalam cache lokal hanya pada blockchain yang pemindai faktur token dan adapter saldonya sudah diimplementasikan. Hasilnya adalah kandidat penemuan, bukan aset pembayaran tepercaya.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

Parameter kueri

chain_slugstring

Slug blockchain EVM yang didukung atau solana, wajib.

qstring

Substring nama, simbol, id CoinGecko, kontrak, atau mint opsional; paling banyak 80 karakter.

limitinteger

Opsional 1–100; bawaan 50.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-token-candidates?chain_slug=ethereum&q=USDC&limit=50" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [
    {
      "coingecko_id": "usd-coin",
      "chain_slug": "ethereum",
      "symbol": "USDC",
      "name": "USDC",
      "contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "market_cap_rank": 7,
      "icon_path": "/assets/coingecko/usd-coin.png",
      "current_price_usd": "1.0001",
      "token_standard": "erc20",
      "scanner_ready": true,
      "registered_asset_id": null,
      "project_enabled": false
    }
  ]
}

Kolom respons

data[]object[]
coingecko_idstringselalu

Identitas penemuan CoinGecko yang digunakan permintaan pendaftaran.

chain_slugstringselalu

Blockchain Wholly Crypto yang cocok.

symbolstringselalu

Identitas tampilan katalog.

namestringselalu

Identitas tampilan katalog.

contract_addressstringselalu

Kontrak atau mint yang cocok; diverifikasi on-chain sebelum pendaftaran.

market_cap_rankinteger | nullselalu

Peringkat penemuan, bukan sinyal kepercayaan atau kesiapan pembayaran.

icon_pathpathselalu

Path ikon CoinGecko dalam cache lokal.

current_price_usddecimal string | nullselalu

Harga USD dalam cache sebagai referensi.

token_standarderc20 | spl-tokenselalu

Standar token yang didukung adapter blockchain terpilih.

scanner_readybooleanselalu

True hanya untuk kandidat pada jalur token yang diimplementasikan build ini.

registered_asset_idUUID | nullselalu

Aset persisten yang sudah ada jika telah dipromosikan.

project_enabledbooleanselalu

Apakah aset terdaftar diaktifkan untuk proyek ini.

Catatan penggunaan
  • Adapter token yang didukung: ERC-20 pada Ethereum, Base, BNB Chain, HyperEVM, Avalanche, Polygon, Arbitrum, dan Optimism; SPL pada Solana.
  • Blockchain katalog yang tidak didukung ditolak, bukan ditampilkan seolah bisa dipilih.
  • Peringkat, ikon, dan harga CoinGecko adalah data penemuan sebagai referensi.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTVerifikasi dan daftarkan token/v1/projects/{project_id}/payment-token-assetsBaca + tulis

Mempromosikan satu kandidat terkini ke registri pembayaran persisten hanya setelah node yang dikonfigurasi memverifikasi identitas blockchain, identitas kontrak/mint, desimal, dan kueri saldo yang dapat digunakan. Pendaftaran tidak pernah mempercayai metadata CoinGecko saja, dan setiap proyek dibatasi 20 aset token terdaftar.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Content-Typewajibapplication/json
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-token-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "chain_slug": "ethereum",
  "coingecko_id": "usd-coin",
  "enabled": true
}'

Body permintaan

chain_slugstringwajib

ethereum, base, bnb-chain, hyperliquid, avalanche, polygon, arbitrum, optimism, atau solana.

coingecko_idstringwajib
Identitas kandidat persis yang dikembalikan pencarian token. Pertahankan garis bawah atau tanda hubung awal, seperti _ atau -6. Jangan turunkan ID ini dari nama atau ticker token.Detail

Identitas kandidat persis yang dikembalikan pencarian token. Pertahankan garis bawah atau tanda hubung awal, seperti _ atau -6. Jangan turunkan ID ini dari nama atau ticker token.

enabledbooleanopsional

Status kebijakan proyek setelah verifikasi; bawaan true.

Respons 201 application/json

Contoh respons
{
  "data": {
    "asset_id": "44444444-4444-4444-8444-444444444444",
    "chain_slug": "ethereum",
    "coingecko_id": "usd-coin",
    "contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "token_standard": "erc20",
    "symbol": "USDC",
    "name": "USDC",
    "decimals": 6,
    "enabled": true,
    "metadata_verified_at": "2026-08-31T18:00:00Z"
  }
}

Kolom respons

dataobject
asset_idUUIDselalu

Pengenal aset pembayaran persisten.

chain_slugstringselalu

Blockchain terverifikasi dan identitas penemuan/harga yang dipertahankan.

coingecko_idstringselalu

Blockchain terverifikasi dan identitas penemuan/harga yang dipertahankan.

contract_addressstringselalu

Kontrak atau mint kanonis terverifikasi.

token_standarderc20 | spl-tokenselalu

Standar token runtime terverifikasi.

symbolstringselalu

Identitas tampilan yang dipromosikan dan presisi yang tepat.

namestringselalu

Identitas tampilan yang dipromosikan dan presisi yang tepat.

decimalsintegerselalu

Identitas tampilan yang dipromosikan dan presisi yang tepat.

enabledbooleanselalu

Status kebijakan proyek awal.

metadata_verified_atRFC 3339 timestampselalu

Waktu verifikasi on-chain.

Catatan penggunaan
  • Aktifkan aset proyek native blockchain sebelum mendaftarkan tokennya.
  • Proyek bisa mendaftarkan paling banyak 20 aset token; kandidat baru di atas batas tersebut mengembalikan token_chain_not_ready (409). Menggunakan kembali aset yang sudah terdaftar tidak memakai slot lain.
  • Verifikasi node bisa lebih lama daripada pembacaan katalog; gunakan batas waktu klien eksplisit.
  • Setelah pendaftaran, pilih aset untuk setiap toko yang seharusnya menawarkannya.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETTemukan pool DEX token kustom/v1/projects/{project_id}/payment-token-dex-poolsHanya baca

Temukan hingga 12 pool yang memenuhi syarat berdasarkan blockchain dan kontrak token dasar secara persis melalui DEX Screener, diurutkan menurut likuiditas. Ini tidak mendaftarkan atau mengaktifkan token.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan.

Parameter kueri

chain_slugstring

Blockchain token EVM yang didukung atau solana.

contract_addressstring

Kontrak ERC-20 atau mint SPL klasik secara persis.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-token-dex-pools?chain_slug=ethereum&contract_address=YOUR_TOKEN_CONTRACT" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{"data":[{"pair_address":"0x2222222222222222222222222222222222222222","dex_id":"uniswap","quote_symbol":"WETH","price_usd":"0.25","liquidity_usd":"250000.00","fetched_at":"2026-09-09T12:00:00Z","url":"https://dexscreener.com/ethereum/0x2222222222222222222222222222222222222222"}]}

Kolom respons

data[]object[]
pair_addressstringselalu

Pengenal pool persis, ID bursa (mis. uniswap/pancakeswap), dan ticker pasangan khusus tampilan.

dex_idstringselalu

Pengenal pool persis, ID bursa (mis. uniswap/pancakeswap), dan ticker pasangan khusus tampilan.

quote_symbolstringselalu

Pengenal pool persis, ID bursa (mis. uniswap/pancakeswap), dan ticker pasangan khusus tampilan.

price_usddecimal stringselalu

Harga USD token dasar yang diminta dan total likuiditas pool. Memerlukan likuiditas setidaknya $10,000 dan satu perdagangan dalam satu jam terakhir.

liquidity_usddecimal stringselalu

Harga USD token dasar yang diminta dan total likuiditas pool. Memerlukan likuiditas setidaknya $10,000 dan satu perdagangan dalam satu jam terakhir.

fetched_atRFC 3339 timestampselalu

Waktu server mengambil observasi penyedia, bukan stempel waktu perdagangan on-chain.

urlHTTPS URLselalu

Tautan DEX Screener tervalidasi ke pool ini.

Catatan penggunaan
  • Array data kosong berarti tidak ditemukan pool yang memenuhi syarat. Hanya pool yang token dasarnya merupakan kontrak persis yang diminta yang dikembalikan; harga USD sisi kuotasi tidak pernah diasumsikan.
  • Pencantuman DEX bukan audit keamanan. Likuiditas minimum dan aktivitas terbaru mengurangi kuotasi yang tidak dapat digunakan, tetapi tidak mencegah manipulasi pasar.
  • Uniswap, PancakeSwap, dan DEX terindeks lainnya didukung jika pemindai blockchain yang ada mendukung token. Akses API tetap dibatasi ke proyek dan dibatasi lajunya. Panggilan penyedia juga dijalankan secara berurutan dan dibatasi.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTTambahkan atau ubah harga token kustom/v1/projects/{project_id}/payment-token-assets/customBaca + tulis

Memverifikasi kontrak kustom menggunakan node blockchain yang dikonfigurasi dan mendaftarkannya tanpa memerlukan pencantuman CoinGecko. Harga USD tetap atau pool DEX otomatis terpilih milik proyek ini, bukan milik ticker atau proyek lain. Mengulangi identitas yang sama memperbarui harga proyeknya tanpa mengubah kebijakan aktif/nonaktif yang ada.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Content-Typewajibapplication/json

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial dengan kemampuan tulis ini.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/payment-token-assets/custom" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "chain_slug": "ethereum",
  "contract_address": "YOUR_VERIFIED_TOKEN_CONTRACT",
  "name": "Example token",
  "symbol": "EXAMPLE",
  "price_usd": "0.25"
}'

Body permintaan

chain_slugstringwajib

ethereum, base, bnb-chain, hyperliquid, avalanche, polygon, arbitrum, optimism, atau solana. Tetap untuk kontrak ini.

contract_addressstringwajib
Kontrak ERC-20 (0x ditambah 40 karakter heksadesimal), atau mint SPL klasik. Node memverifikasi identitas jaringan dan desimal persis; desimal serta URL RPC yang diberikan pemanggil ditolak.Detail

Kontrak ERC-20 (0x ditambah 40 karakter heksadesimal), atau mint SPL klasik. Node memverifikasi identitas jaringan dan desimal persis; desimal serta URL RPC yang diberikan pemanggil ditolak.

namestringwajib
Nama tampilan (1–80 karakter) dan ticker (1–16 huruf/angka/titik/garis bawah/tanda hubung, karakter pertama alfanumerik). Identitas yang sudah ada tidak bisa diganti namanya melalui endpoint ini.Detail

Nama tampilan (1–80 karakter) dan ticker (1–16 huruf/angka/titik/garis bawah/tanda hubung, karakter pertama alfanumerik). Identitas yang sudah ada tidak bisa diganti namanya melalui endpoint ini.

symbolstringwajib
Nama tampilan (1–80 karakter) dan ticker (1–16 huruf/angka/titik/garis bawah/tanda hubung, karakter pertama alfanumerik). Identitas yang sudah ada tidak bisa diganti namanya melalui endpoint ini.Detail

Nama tampilan (1–80 karakter) dan ticker (1–16 huruf/angka/titik/garis bawah/tanda hubung, karakter pertama alfanumerik). Identitas yang sudah ada tidak bisa diganti namanya melalui endpoint ini.

price_modefixed | dexopsional

Bawaan fixed untuk kompatibilitas mundur. DEX menggunakan pool tertentu yang ditemukan untuk blockchain dan kontrak persis.

price_usddecimal stringmode fixed

Nilai USD tetap SATU token, positif, paling banyak 30 desimal, maksimum 1000000000000000000000000. Tanpa eksponen atau float. Jangan sertakan dalam mode dex.

dex_pair_addressstringmode dex
Alamat pool dari payment-token-dex-pools. Wajib dalam mode dex; jangan sertakan dalam mode fixed. Server memeriksa ulang identitas pool, harga, likuiditas, dan aktivitas pada setiap penyimpanan.Detail

Alamat pool dari payment-token-dex-pools. Wajib dalam mode dex; jangan sertakan dalam mode fixed. Server memeriksa ulang identitas pool, harga, likuiditas, dan aktivitas pada setiap penyimpanan.

Respons 200 application/json

Contoh respons
{"data":{"asset_id":"44444444-4444-4444-8444-444444444444"}}

Kolom respons

dataobject
asset_idstring
Catatan penggunaan
  • Setelah pendaftaran, pilih asset_id pada endpoint payment-assets toko; pendaftaran saja tidak pernah mengaktifkan metode toko.
  • Token kustom dan katalog berbagi batas 20 token per proyek. Kontrak yang sama pada blockchain berbeda adalah aset pembayaran berbeda.
  • Kontrak katalog yang sudah ada mengembalikan 409: gunakan pendaftaran katalog untuk mempertahankan kurs pasar otomatis. Ticker kustom tidak pernah meminjam harga token dengan nama yang sama.
  • Harga tetap adalah perkiraan operator. Harga DEX otomatis merupakan observasi spot dari pool terpilih melalui DEX Screener, bukan oracle yang tahan manipulasi. Spread toko dan pembulatan ke atas tetap berlaku, dengan kurs fiat terbaru. Kuotasi yang sudah diterbitkan tetap sama.
  • Untuk mode DEX, temukan pool terlebih dahulu, lalu kirim price_mode: dex dan dex_pair_address, tanpa price_usd. Tugas latar belakang bersama menyegarkan pool terpilih setiap menit. Pemeriksaan gagal atau harga lebih dari lima menit menghapus token ini dari kuotasi baru; tidak ada peralihan diam-diam ke harga tetap atau ticker.
  • Hanya token ERC-20 standar dan SPL klasik yang diterima. Token-2022/ekstensi dan blockchain khusus native ditolak. Verifikasi teknis bukan audit keamanan penerbit/kontrak; token dengan fee-on-transfer, rebasing, atau daftar hitam bisa berperilaku tidak kompatibel.
  • Gunakan batas waktu klien setidaknya 60 detik. Verifikasi dibatasi dan bisa mencoba node cadangan. Input tidak valid mengembalikan 400; pemeriksaan blockchain/kontrak gagal mengembalikan 422; konflik identitas atau batas mengembalikan 409.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar metode pembayaran toko/v1/projects/{project_id}/stores/{store_id}/payment-assetsHanya baca

Mencantumkan aset on-chain dalam data dan kesiapan Lightning terpisah dalam lightning. Metode on-chain memerlukan dompet blockchain yang siap. Lightning menggunakan koneksi penerimaan eksternal terverifikasi yang dipilih di toko, independen dari dompet Bitcoin on-chain.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial; boleh dijeda.

store_idUUIDwajib

Toko milik project_id; boleh dijeda.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/payment-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [
    { "asset": { "id": "ASSET_UUID", "chain_slug": "ethereum", "symbol": "USDC", "asset_kind": "token", "token_standard": "erc20", "scanner_ready": true }, "project_policy": { "enabled": true, "required_confirmations": 12 }, "selected": true, "display_order": 0, "confirmation_policy": { "finality_mode": "confirmations", "project_required_confirmations": 12, "override_required_confirmations": 3, "effective_required_confirmations": 3, "editable": true, "minimum_required_confirmations": 0, "maximum_required_confirmations": 48 }, "wallet": { "id": "WALLET_UUID", "status": "active" }, "wallet_readiness": "ready" }
  ],
  "lightning": { "payment_rail": "lightning", "symbol": "BTC", "asset_decimals": 11, "enabled": true, "ready": true }
}

Kolom respons

data[]object[]
assetobjectselalu

Aset native atau token terverifikasi yang terlihat oleh proyek.

idUUIDselalu

Pengenal aset pembayaran persisten yang digunakan rute kebijakan proyek dan toko.

asset_keystringselalu

Identitas aset native atau kontrak kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

networkstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

caip_network_idstringselalu

Identitas jaringan dan aset kanonis.

caip_asset_idstring|nullselalu

Identitas jaringan dan aset kanonis.

asset_kindnative | tokenselalu

Apakah penyelesaian menggunakan mata uang blockchain atau kontrak/mint terverifikasi.

payment_railstringselalu

Jalur runtime: utxo, evm-native, solana-native, account-native, privacy-native, atau token-transfer.

symbolstringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

namestringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

decimalsintegerselalu

Identitas tampilan dan presisi unit atomik yang tepat.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk aset native.

coingecko_idstring | nullselalu

Identitas penemuan/harga. Null untuk kontrak kustom; jangan pernah menyimpulkan harga pasar dari tickernya. Metadata CoinGecko saja tidak pernah membuat token bisa dipilih.

custom_tokenbooleanselalu

Kontrak kustom terverifikasi on-chain dengan harga USD tetap atau pool DEX terpilih yang berlaku dalam proyek.

icon_pathpath | nullselalu

Ikon token dalam cache lokal jika tersedia.

token_standarderc20 | spl-token | nullselalu

Standar token runtime terverifikasi; null untuk aset native.

metadata_verified_attimestamp | nullselalu

Waktu verifikasi metadata on-chain untuk token yang dipromosikan.

payment_supportedbooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

scanner_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

balance_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

default_finality_modeconfirmations | finalizedselalu

Model finalitas bawaan yang diwarisi kebijakan proyek baru.

default_required_confirmationsintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

default_monitoring_minutesintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

project_policyobject | nullselalu

Kebijakan proyek induk.

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

selectedbooleanselalu
Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.Detail

Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.

display_orderinteger | nullselalu

Urutan checkout toko saat dipilih.

confirmation_policyobject | nullselalu

Kebijakan toko efektif untuk aset yang dikonfigurasi proyek. Null jika tidak ada kebijakan proyek.

finality_modeconfirmations | finalizedselalu

Apakah penyelesaian menggunakan jumlah blok yang dapat dikonfigurasi atau finalitas jaringan.

project_required_confirmationsintegerselalu

Pengaturan bawaan proyek terkini yang digunakan faktur mendatang jika tidak ada pengesampingan toko.

override_required_confirmationsinteger | nullselalu

Jumlah khusus toko, atau null untuk mewarisi pengaturan bawaan proyek.

effective_required_confirmationsintegerselalu

Jumlah yang akan disimpan dalam snapshot faktur baru untuk toko dan aset ini.

editablebooleanselalu

False untuk jaringan finalized yang kebijakan finalitasnya tidak bisa diganti.

minimum_required_confirmationsintegerselalu

Batas bawah inklusif yang sesuai blockchain; 0 hanya ditampilkan pada jalur yang mendukung penerimaan saat deteksi.

maximum_required_confirmationsintegerselalu

Batas atas inklusif yang sesuai blockchain.

walletobject | nullselalu

Dompet blockchain yang dibagi aset native dan token.

idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

wallet_readinessreadiness enumselalu

Hanya status dompet/kebijakan; gunakan receive_readiness untuk prasyarat pemindai.

receive_readinessobject | null5.5.0+
Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.Detail

Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

lightningobject
payment_railstring
symbolstring
asset_decimalsinteger
enabledboolean
readyboolean
Catatan penggunaan
  • selected adalah konfigurasi on-chain; wallet_readiness adalah gerbang kelayakan terkininya.
  • Anggota respons lightning berisi payment_rail: lightning, symbol: BTC, asset_decimals: 11, enabled, dan ready. Tidak pernah berisi kredensial node. Konfigurasikan metode ini di konsol toko; memperbarui array assets tidak mengubah Lightning.
  • confirmation_policy hanya berlaku untuk metode on-chain. Lightning diselesaikan tanpa konfirmasi blok dan memerlukan jumlah BOLT11 penuh, tanpa toleransi pembayaran parsial.
  • Metode native dan token pada satu blockchain menggunakan tujuan faktur yang sama untuk dompet blockchain tersebut.
  • Ringkasan dompet tersemat hanya mencakup kesiapan dan membiarkan saldo kosong; gunakan rute dompet proyek khusus untuk nilai terkini.

Kesalahan

Kode kesalahan & aturan percobaan ulang

PUTGanti metode pembayaran toko/v1/projects/{project_id}/stores/{store_id}/payment-assetsBaca + tulis

Secara atomik mengganti seluruh subset aset berurutan toko dan mengembalikan daftar yang disegarkan. Aset yang tidak disertakan dibatalkan pilihannya.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Content-Typewajibapplication/json
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial; boleh dijeda.

store_idUUIDwajib

Toko milik project_id; boleh dijeda.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request PUT \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/payment-assets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "assets": [
    {
      "asset_id": "YOUR_ASSET_ID",
      "display_order": 0
    }
  ]
}'

Body permintaan

assets[]object[]wajib

Daftar penggantian lengkap, paling banyak 64 entri. Setiap entri berisi asset_id unik dan display_order unik dari 0 sampai 10,000.

asset_idUUIDwajib
display_orderintegeropsional

Respons 200 application/json

Contoh respons
{
  "data": [
    { "asset": { "id": "44444444-4444-4444-8444-444444444444", "symbol": "USDC" }, "selected": true, "display_order": 0, "confirmation_policy": { "finality_mode": "confirmations", "project_required_confirmations": 12, "override_required_confirmations": null, "effective_required_confirmations": 12, "editable": true, "minimum_required_confirmations": 0, "maximum_required_confirmations": 48 }, "wallet_readiness": "ready" }
  ]
}

Kolom respons

data[]object[]
assetobjectselalu

Aset native atau token terverifikasi yang terlihat oleh proyek.

idUUIDselalu

Pengenal aset pembayaran persisten yang digunakan rute kebijakan proyek dan toko.

asset_keystringselalu

Identitas aset native atau kontrak kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

networkstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

caip_network_idstringselalu

Identitas jaringan dan aset kanonis.

caip_asset_idstring|nullselalu

Identitas jaringan dan aset kanonis.

asset_kindnative | tokenselalu

Apakah penyelesaian menggunakan mata uang blockchain atau kontrak/mint terverifikasi.

payment_railstringselalu

Jalur runtime: utxo, evm-native, solana-native, account-native, privacy-native, atau token-transfer.

symbolstringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

namestringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

decimalsintegerselalu

Identitas tampilan dan presisi unit atomik yang tepat.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk aset native.

coingecko_idstring | nullselalu

Identitas penemuan/harga. Null untuk kontrak kustom; jangan pernah menyimpulkan harga pasar dari tickernya. Metadata CoinGecko saja tidak pernah membuat token bisa dipilih.

custom_tokenbooleanselalu

Kontrak kustom terverifikasi on-chain dengan harga USD tetap atau pool DEX terpilih yang berlaku dalam proyek.

icon_pathpath | nullselalu

Ikon token dalam cache lokal jika tersedia.

token_standarderc20 | spl-token | nullselalu

Standar token runtime terverifikasi; null untuk aset native.

metadata_verified_attimestamp | nullselalu

Waktu verifikasi metadata on-chain untuk token yang dipromosikan.

payment_supportedbooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

scanner_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

balance_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

default_finality_modeconfirmations | finalizedselalu

Model finalitas bawaan yang diwarisi kebijakan proyek baru.

default_required_confirmationsintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

default_monitoring_minutesintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

project_policyobject | nullselalu

Kebijakan proyek induk.

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

selectedbooleanselalu
Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.Detail

Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.

display_orderinteger | nullselalu

Urutan checkout toko saat dipilih.

confirmation_policyobject | nullselalu

Kebijakan toko efektif untuk aset yang dikonfigurasi proyek. Null jika tidak ada kebijakan proyek.

finality_modeconfirmations | finalizedselalu

Apakah penyelesaian menggunakan jumlah blok yang dapat dikonfigurasi atau finalitas jaringan.

project_required_confirmationsintegerselalu

Pengaturan bawaan proyek terkini yang digunakan faktur mendatang jika tidak ada pengesampingan toko.

override_required_confirmationsinteger | nullselalu

Jumlah khusus toko, atau null untuk mewarisi pengaturan bawaan proyek.

effective_required_confirmationsintegerselalu

Jumlah yang akan disimpan dalam snapshot faktur baru untuk toko dan aset ini.

editablebooleanselalu

False untuk jaringan finalized yang kebijakan finalitasnya tidak bisa diganti.

minimum_required_confirmationsintegerselalu

Batas bawah inklusif yang sesuai blockchain; 0 hanya ditampilkan pada jalur yang mendukung penerimaan saat deteksi.

maximum_required_confirmationsintegerselalu

Batas atas inklusif yang sesuai blockchain.

walletobject | nullselalu

Dompet blockchain yang dibagi aset native dan token.

idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

wallet_readinessreadiness enumselalu

Hanya status dompet/kebijakan; gunakan receive_readiness untuk prasyarat pemindai.

receive_readinessobject | null5.5.0+
Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.Detail

Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

Catatan penggunaan
  • Array menerima paling banyak 64 aset dan urutan tampilan unik.
  • Pilihan adalah konfigurasi yang diinginkan dan disimpan, serta bisa disiapkan sebelum dompet dicadangkan atau saat blockchain dijeda. Pembuatan faktur tetap hanya menawarkan metode yang kebijakan proyek, kebijakan induk native, dompet, dan pemeriksaan runtime-nya siap.
  • Kirim array assets kosong untuk mengonfigurasi tanpa metode pembayaran.

Kesalahan

Kode kesalahan & aturan percobaan ulang

PUTTetapkan kebijakan konfirmasi toko/v1/projects/{project_id}/stores/{store_id}/payment-assets/{asset_id}/confirmation-policyBaca + tulis

Menetapkan atau menghapus satu pengesampingan konfirmasi khusus toko dan mengembalikan daftar metode pembayaran toko yang disegarkan. Aset harus sudah dipilih untuk toko. Konfigurasi tetap tersedia saat proyek, toko, blockchain, atau dompet dijeda.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Content-Typewajibapplication/json
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial; boleh dijeda.

store_idUUIDwajib

Toko milik project_id; boleh dijeda.

asset_idUUIDwajib

Aset pembayaran toko yang saat ini dipilih untuk diperbarui.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request PUT \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/payment-assets/YOUR_ASSET_ID/confirmation-policy" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "strategy": "custom",
  "required_confirmations": 0
}'

Body permintaan

strategyinherit | customwajib

Strategi bertag. inherit menghapus pengesampingan toko; custom memerlukan required_confirmations.

required_confirmationsintegerhanya custom

Bilangan bulat dalam minimum/maksimum yang dikembalikan untuk aset ini. Kolom tidak dikenal atau tambahan ditolak.

Respons 200 application/json

Contoh respons
{
  "data": [
    {
      "asset": { "id": "YOUR_ASSET_ID", "chain_slug": "bitcoin", "symbol": "BTC" },
      "selected": true,
      "display_order": 0,
      "confirmation_policy": {
        "finality_mode": "confirmations",
        "project_required_confirmations": 2,
        "override_required_confirmations": 0,
        "effective_required_confirmations": 0,
        "editable": true,
        "minimum_required_confirmations": 0,
        "maximum_required_confirmations": 10000
      },
      "wallet_readiness": "ready"
    }
  ]
}

Kolom respons

data[]object[]
assetobjectselalu

Aset native atau token terverifikasi yang terlihat oleh proyek.

idUUIDselalu

Pengenal aset pembayaran persisten yang digunakan rute kebijakan proyek dan toko.

asset_keystringselalu

Identitas aset native atau kontrak kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

networkstringselalu

Pengenal blockchain Wholly Crypto dan jaringan yang dikonfigurasi.

caip_network_idstringselalu

Identitas jaringan dan aset kanonis.

caip_asset_idstring|nullselalu

Identitas jaringan dan aset kanonis.

asset_kindnative | tokenselalu

Apakah penyelesaian menggunakan mata uang blockchain atau kontrak/mint terverifikasi.

payment_railstringselalu

Jalur runtime: utxo, evm-native, solana-native, account-native, privacy-native, atau token-transfer.

symbolstringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

namestringselalu

Identitas tampilan dan presisi unit atomik yang tepat.

decimalsintegerselalu

Identitas tampilan dan presisi unit atomik yang tepat.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk aset native.

coingecko_idstring | nullselalu

Identitas penemuan/harga. Null untuk kontrak kustom; jangan pernah menyimpulkan harga pasar dari tickernya. Metadata CoinGecko saja tidak pernah membuat token bisa dipilih.

custom_tokenbooleanselalu

Kontrak kustom terverifikasi on-chain dengan harga USD tetap atau pool DEX terpilih yang berlaku dalam proyek.

icon_pathpath | nullselalu

Ikon token dalam cache lokal jika tersedia.

token_standarderc20 | spl-token | nullselalu

Standar token runtime terverifikasi; null untuk aset native.

metadata_verified_attimestamp | nullselalu

Waktu verifikasi metadata on-chain untuk token yang dipromosikan.

payment_supportedbooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

scanner_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

balance_readybooleanselalu
Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.Detail

Gerbang registri saat build. scanner_ready berarti runtime pemindai pembayaran terinstal; konfirmasi pembayaran memerlukan jumlah penyedia sehat dengan peran persis yang dikonfigurasi (bawaan 2, opsional 1); ketersediaan pemindai sementara tidak memblokir pembuatan faktur mulai 6.0.6. balance_ready hanya true untuk adapter saldo yang diimplementasikan.

default_finality_modeconfirmations | finalizedselalu

Model finalitas bawaan yang diwarisi kebijakan proyek baru.

default_required_confirmationsintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

default_monitoring_minutesintegerselalu

Kebijakan konfirmasi dan pemantauan bawaan.

project_policyobject | nullselalu

Kebijakan proyek induk.

enabledbooleanwajib

Mengaktifkan atau menonaktifkan aset untuk proyek. Blockchain native harus diaktifkan sebelum token apa pun.

finality_modeconfirmations | finalizedwajib

Kebijakan finalitas yang didukung jalur aset. finalized memerlukan required_confirmations=1.

required_confirmationsintegerwajib
Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.Detail

Jalur Bitcoin dan EVM menerima nol; jalur konfirmasi lain memerlukan setidaknya satu, jalur khusus finalized memerlukan tepat satu, dan jalur EVM dibatasi 0–48 agar setiap transfer tetap dalam jendela replay transaksi.

monitoring_minutesintegerwajib

Jendela polling 1–10,080 menit selama faktur aktif.

late_monitoring_daysintegerwajib

Pemantauan 0–3,650 hari setelah faktur kedaluwarsa.

selectedbooleanselalu
Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.Detail

Apakah metode ini bagian dari konfigurasi yang diinginkan dan disimpan toko. Metode ditawarkan jika kebijakan proyek, dompet, adapter terinstal, dan harga valid. Gangguan pemindai sementara tidak menghapusnya dari faktur baru.

display_orderinteger | nullselalu

Urutan checkout toko saat dipilih.

confirmation_policyobject | nullselalu

Kebijakan toko efektif untuk aset yang dikonfigurasi proyek. Null jika tidak ada kebijakan proyek.

finality_modeconfirmations | finalizedselalu

Apakah penyelesaian menggunakan jumlah blok yang dapat dikonfigurasi atau finalitas jaringan.

project_required_confirmationsintegerselalu

Pengaturan bawaan proyek terkini yang digunakan faktur mendatang jika tidak ada pengesampingan toko.

override_required_confirmationsinteger | nullselalu

Jumlah khusus toko, atau null untuk mewarisi pengaturan bawaan proyek.

effective_required_confirmationsintegerselalu

Jumlah yang akan disimpan dalam snapshot faktur baru untuk toko dan aset ini.

editablebooleanselalu

False untuk jaringan finalized yang kebijakan finalitasnya tidak bisa diganti.

minimum_required_confirmationsintegerselalu

Batas bawah inklusif yang sesuai blockchain; 0 hanya ditampilkan pada jalur yang mendukung penerimaan saat deteksi.

maximum_required_confirmationsintegerselalu

Batas atas inklusif yang sesuai blockchain.

walletobject | nullselalu

Dompet blockchain yang dibagi aset native dan token.

idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

wallet_readinessreadiness enumselalu

Hanya status dompet/kebijakan; gunakan receive_readiness untuk prasyarat pemindai.

receive_readinessobject | null5.5.0+
Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.Detail

Penyiapan penerimaan bersama ditambah penerimaan toko. Menggunakan observasi cache; bukan pencadangan atau jaminan. Pembuatan memeriksa ulang persyaratan dan kurs faktur sebenarnya.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

Catatan penggunaan
  • Gunakan {"strategy":"inherit"} untuk menghapus pengesampingan toko dan mengikuti pengaturan bawaan proyek saat ini untuk faktur mendatang.
  • Jaringan finalized mengembalikan editable false dan menggunakan Finalitas jaringan; tidak menerima pengesampingan jumlah blok kustom.
  • Nilai 0 berarti menerima saat deteksi tanpa konfirmasi jaringan dan tanpa perlindungan reorg. Hanya diterima jika minimum_required_confirmations adalah 0.
  • Perubahan kebijakan hanya memengaruhi faktur baru. Faktur yang ada mempertahankan snapshot kebijakan konfirmasi proyek/toko yang dicatat saat pembuatan.
  • Pembaruan dilakukan satu aset setiap kali; jalankan perubahan bersamaan untuk aset toko yang sama secara berurutan dan gunakan respons yang disegarkan sebagai status terkini.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar dompet dan saldo proyek/v1/projects/{project_id}/walletsHanya baca

Mengembalikan metadata dompet publik beserta setiap aset terdaftar yang mampu dibaca saldonya pada blockchain dan jaringan dompet secara persis. Semua 30 jalur blockchain native tercakup; aset ERC-20 dan SPL terverifikasi juga dilacak. Aset langsung muncul, bahkan sebelum pemindaian pertama atau saat tidak diterima untuk pembayaran. project_enabled melaporkan penerimaan pembayaran; tracking_active secara independen melaporkan kelayakan penyegaran hanya baca. Monero memerlukan wallet-RPC hanya lihat eksternal yang terikat ke proyek. Pindai saldo di konsol memprioritaskan pembacaan terbatas dengan progres/kesalahan per aset; hanya siklus lengkap yang memperbarui total terbaru. Penyelesaian faktur tetap digerakkan pemantauan tingkat transaksi dan kebijakan konfirmasi, bukan saldo cache ini.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/wallets" \
  --header "Authorization: Bearer $WHOLLY_TOKEN"

Respons 200 application/json

Contoh respons
{
  "data": [
    {
      "id": "55555555-5555-4555-8555-555555555555",
      "project_id": "11111111-1111-4111-8111-111111111111",
      "native_asset_id": "10000000-0000-4000-8000-000000000003",
      "chain_slug": "ethereum",
      "network": "mainnet",
      "asset_symbol": "ETH",
      "asset_name": "Ethereum",
      "status": "active",
      "label": "Primary Ethereum wallet",
      "public_key": "0x…",
      "primary_address": "0x…",
      "derivation_scheme": "bip44",
      "address_format": "eip55",
      "backup_confirmed_at": "2026-08-31T17:00:00Z",
      "last_secret_revealed_at": null,
      "secret_reveal_count": 0,
      "next_receive_index": 43,
      "last_scanned_height": 23123456,
      "last_scanned_at": "2026-08-31T18:05:00Z",
      "last_error": null,
      "balances": [
        { "wallet_id": "55555555-5555-4555-8555-555555555555", "asset_id": "10000000-0000-4000-8000-000000000003", "project_enabled": true, "tracking_active": true, "asset_kind": "native", "contract_address": null, "symbol": "ETH", "name": "Ethereum", "decimals": 18, "coingecko_id": "ethereum", "balance": "0.125", "balance_atomic": "125000000000000000", "price_usd": "4500", "value_usd": "562.50", "status": "fresh", "checked_at": "2026-08-31T18:05:00Z", "last_error": null },
        { "wallet_id": "55555555-5555-4555-8555-555555555555", "asset_id": "10000000-0000-4000-8000-000000000099", "project_enabled": false, "tracking_active": true, "asset_kind": "token", "contract_address": "0xA0b86991c6218b36c1d19d4a2e9eb0cE3606eB48", "symbol": "USDC", "name": "USDC", "decimals": 6, "coingecko_id": "usd-coin", "balance": null, "balance_atomic": null, "price_usd": "1", "value_usd": null, "status": "pending", "checked_at": null, "last_error": null }
      ],
      "total_value_usd": "562.50",
      "balance_status": "fresh",
      "balance_checked_at": "2026-08-31T18:05:00Z",
      "recent_payments": [
        { "invoice_public_id": "0a6a98db-d93d-48ee-8c3c-fd45f90c4a50", "chain_slug": "ethereum", "symbol": "USDC", "transaction_id": "0x…", "event_index": 0, "amount": "25", "status": "final", "confirmations": 12, "observed_at": "2026-08-31T18:04:00Z" }
      ],
      "created_at": "2026-08-31T16:00:00Z",
      "updated_at": "2026-08-31T18:05:00Z"
    }
  ]
}

Kolom respons

data[]object[]
idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

project_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

native_asset_idUUIDselalu

Pengenal dompet, proyek pemilik, dan aset native blockchain.

chain_slugstringselalu

Blockchain dan jaringan dompet.

networkstringselalu

Blockchain dan jaringan dompet.

asset_symbolstringselalu

Identitas tampilan native blockchain.

asset_namestringselalu

Identitas tampilan native blockchain.

statuspending | active | disabled | errorselalu

Status operasional dompet.

labelstringselalu

Label operator.

public_keystring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

primary_addressstring | nullselalu

Identitas dompet publik; tidak ada frasa seed atau kunci privat yang ditampilkan.

derivation_schemestring | nullselalu

Kebijakan dan format alamat.

address_formatstring | nullselalu

Kebijakan dan format alamat.

backup_confirmed_attimestamp | nullselalu

Bukan null setelah operator mengonfirmasi cadangan pemulihan.

activation_requiredbooleanselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

activation_verified_attimestamp|nullselalu
Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.Detail

Akun bersama XRP dan Stellar tetap tidak tersedia sampai operator mendanai alamat yang ditampilkan dan penyedia pemindai yang dikonfigurasi memverifikasi akun persis tersebut. Bukti persisten tidak kedaluwarsa; kesehatan pemindai langsung diperiksa terpisah untuk verifikasi pembayaran, bukan pembuatan faktur.

receive_readinessobject | null5.5.0+
Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.Detail

Disertakan pada daftar dompet: penyiapan penerimaan proyek dan prasyarat pemindai blockchain. Terpisah dari saldo, gas token, dan kesiapan pengiriman. Respons dompet lain mungkin membiarkannya null.

readybooleanselalu

Pemeriksaan penyiapan penerimaan lulus. Tidak menjelaskan kesiapan pembelanjaan, gas, penyegaran saldo, atau jaminan kuotasi mendatang.

invoice_creatableboolean6.0.6+
Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.Detail

Konfigurasi mengizinkan metode faktur meskipun ada peringatan pemindai sementara. Harga mata uang diperiksa saat pembuatan. Ini bukan verifikasi pembayaran: ready bisa false sementara invoice_creatable true. Dompet yang belum ada, kebijakan nonaktif, dan adapter yang tidak didukung tetap gagal dengan aman.

checked_attimestampselalu

Waktu penilaian. Daftar tidak melakukan permintaan jaringan atau alokasi alamat.

issues[]object[]selalu
Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.Detail

Kosong saat siap; jika tidak, berisi peringatan penerimaan atau penghalang konfigurasi. Periksa invoice_creatable untuk membedakan peringatan pemindai sementara dari kegagalan penyiapan faktur.

chain_slugstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_idUUIDjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

asset_tickerstringjika diketahui

Mengidentifikasi blockchain dan aset terkait. Lightning bisa tidak menyertakan asset_id.

reason_codestringselalu
scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.Detail

scanner_provider_quorum, scanner_not_checked, scanner_unavailable, wallet_missing, wallet_disabled, wallet_backup_required, wallet_key_unavailable, wallet_activation_required, monero_binding_unavailable, rate_unavailable, custom_rate_unavailable, lightning_unavailable, project_disabled, store_disabled, chain_disabled, asset_disabled, atau asset_not_accepted.

messagestringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

actionstringjika tersedia
Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.Detail

Penjelasan untuk merchant dan pengenal tindakan: chain_connections, wallets, rates, payment_methods, project_settings, atau store_settings. Tanpa kredensial atau URL penyedia privat.

required_endpoint_rolestring | nullon-chain
Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.Detail

Peran API pemindai yang diutamakan (kolom lama). Gunakan accepted_endpoint_roles untuk daftar kompatibilitas lengkap. Kesehatan node dasar tidak membuktikan dukungan riwayat pembayaran.

accepted_endpoint_roles[]string[] | nullon-chain
Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.Detail

Dialek API yang kompatibel, bukan bukti riwayat atau kapasitas endpoint. node-rpc mentah mendukung BTC/BCH/LTC/DOGE/DASH dan ZEC transparan (blok terdekode lengkap, 1–48 konfirmasi), TRX native tersolidifikasi, ALGO native melalui algod, XTZ melalui Octez, DOT Asset Hub final melalui metadata SCALE, dan XLM native melalui Stellar RPC dengan ID memo faktur. Riwayat yang dipangkas atau tidak lengkap tidak memenuhi syarat. Adapter mentah ini tidak menambahkan jalur token. API terindeks tetap menjadi alternatif; lihat tabel jalur di bawah. Sumber campuran mentah/terindeks memverifikasi jendela terbatas secara independen; bawaan tetap dua penyedia independen, bukan alias satu operator. Ketinggian node dasar, info blockchain ORDnet, dan relay EVM untuk jalur non-EVM bukan bukti penerimaan. Monero tetap memerlukan wallet-RPC hanya lihat yang terikat ke proyek.

healthy_endpointsintegeron-chain

Endpoint cocok yang sehat, bukan jumlah penyedia independen.

usable_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

required_independent_providersintegeron-chain
Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.Detail

Slot verifikasi yang bisa digunakan, dibatasi dua. required_independent_providers adalah pengaturan blockchain: bawaan 2, atau 1 setelah pilihan eksplisit administrator. Dalam mode dua penyedia, kunci penyedia DAN host harus berbeda. Sumber nonaktif, usang (lebih dari sepuluh menit), atau sedang dalam masa tunggu tidak mengisi slot. Lightning menggunakan aturan koneksinya sendiri.

last_checked_attimestamp | nullon-chain

Pemeriksaan kesehatan endpoint cocok terbaru, terpisah dari waktu penilaian.

monero_wallet_rpcMoneroWalletRpcBinding | nullselalu
Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.Detail

Status ikatan wallet-RPC hanya lihat eksternal untuk Monero yang telah dibersihkan dari informasi sensitif. Mencakup endpoint, mode autentikasi, alamat utama account-0, penanda/ketinggian bukti teknis, dan stempel waktu pernyataan operator; kredensial, kunci dompet, serta file dompet tidak pernah diserialisasi.

last_secret_revealed_attimestamp|nullselalu

Metadata audit pengungkapan rahasia sisi konsol.

secret_reveal_countintegerselalu

Metadata audit pengungkapan rahasia sisi konsol.

next_receive_indexintegerselalu

Indeks alamat turunan berikutnya yang dicadangkan.

last_scanned_heightinteger|nullselalu

Status pemindai dompet.

last_scanned_attimestamp|nullselalu

Status pemindai dompet.

last_errorstring|nullselalu

Status pemindai dompet.

balances[]object[]selalu
Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.Detail

Saldo dalam cache untuk masing-masing dari 30 jalur blockchain native, ditambah aset ERC-20 dan SPL terverifikasi. Monero memerlukan wallet-RPC hanya lihat eksternal yang dikonfigurasi.

wallet_idUUIDselalu

Identitas dompet dan aset persisten.

asset_idUUIDselalu

Identitas dompet dan aset persisten.

project_enabledbooleanselalu

Apakah aset ini saat ini diaktifkan oleh kebijakan aset proyek.

active_store_countintegerselalu

Jumlah toko aktif yang saat ini memilih aset ini. Ini gambaran penerimaan; pelacakan saldo hanya baca tetap independen.

active_store_ids[]UUID[]selalu

Toko aktif dalam proyek ini yang saat ini menerima aset. Ini memungkinkan pemfilteran toko lokal yang presisi tanpa permintaan API lain.

tracking_activebooleanselalu
Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.Detail

Apakah dompet yang mampu membaca ini dan aset terdaftar pada blockchain yang sama memenuhi syarat untuk penyegaran saldo latar belakang. Sakelar proyek dan penerimaan metode pembayaran tidak menjeda pelacakan hanya baca.

asset_kindnative | tokenselalu

Mata uang native atau aset kontrak/mint terverifikasi.

contract_addressstring | nullselalu

Kontrak atau mint token; null untuk mata uang native.

symbolstringselalu

Identitas tampilan dan presisi atomik.

namestringselalu

Identitas tampilan dan presisi atomik.

decimalsintegerselalu

Identitas tampilan dan presisi atomik.

coingecko_idstring | nullselalu

Identitas harga jika dipetakan.

balancedecimal string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

balance_atomicinteger string|nullselalu

Saldo tampilan dan atomik presisi di seluruh alamat utama dompet serta alamat faktur yang diterbitkan. Null selama nilai lengkap belum tersedia.

price_usddecimal string | nullselalu

Harga unit USD dalam cache sebagai referensi untuk penilaian.

value_usddecimal string | nullselalu

Penilaian fiat sebagai referensi jika kurs terkini tersedia.

statuspending | refreshing | fresh | stale | errorselalu
Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.Detail

Status pemindaian dalam cache. refreshing bisa mempertahankan saldo lengkap: gunakan checked_at untuk usianya. Pending berarti belum ada snapshot lengkap. Tidak satu pun status ini membuktikan transfer tertunda atau faktur selesai.

checked_attimestamp | nullselalu

Waktu yang diwakili oleh pemindaian saldo yang selesai.

last_errorstring | nullselalu

Diagnosis aman untuk operator.

total_value_usddecimal string | nullselalu

Jumlah saldo sebagai referensi yang memiliki harga USD terkini.

balance_statuspending | refreshing | fresh | stale | error | unknownselalu

Kebaruan cache gabungan; unknown adalah cadangan defensif dan tidak satu pun status ini membuktikan penyelesaian faktur.

balance_checked_attimestamp | nullselalu

Pemeriksaan saldo berhasil paling lama yang relevan dan diwakili oleh agregat.

recent_payments[]object[]selalu

Hingga tiga observasi valid terbaru berstatus detected, confirming, atau final yang diatribusikan ke dompet persis ini.

invoice_public_idUUIDselalu

Identitas faktur yang ditampilkan kepada pelanggan yang terkait dengan observasi.

chain_slugstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

symbolstringselalu

Blockchain dan simbol tampilan native atau token terverifikasi.

transaction_idstringselalu

Identitas transaksi dan peristiwa transfer kanonis.

event_indexintegerselalu

Identitas transaksi dan peristiwa transfer kanonis.

amountdecimal stringselalu

Jumlah aset teramati yang presisi tanpa konversi floating point.

statusdetected | confirming | finalselalu

Status observasi valid saat ini. Observasi reorged, replaced, dan invalid dikecualikan.

confirmationsintegerselalu

Jumlah konfirmasi teramati terbaru.

observed_atRFC 3339 timestampselalu

Waktu Wholly Crypto pertama mengamati pembayaran.

created_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

updated_atRFC 3339 timestampselalu

Waktu pembuatan dan pembaruan dompet terakhir.

Catatan penggunaan
  • Rute bearer ini tidak pernah mengembalikan frasa pemulihan, kunci privat, rahasia terenkripsi, atau metode pembelanjaan.
  • Aset pada blockchain yang sama yang baru didaftarkan dikembalikan dengan saldo null dan status pending sebelum pemindaian pertama selesai; tidak pernah dilaporkan sebagai nol yang direkayasa.
  • Menonaktifkan proyek, dompet untuk penerimaan pembayaran, jalur native, atau aset individual tidak menghentikan pelacakan saldo hanya baca: dompet aktif dan nonaktif dengan alamat utama terus menyegarkan setiap aset terdaftar yang didukung pada blockchain yang sama. Dompet pending dan error tidak dipindai.
  • project_enabled hanya melaporkan kebijakan penerimaan aset proyek dan bisa false sementara tracking_active tetap true.
  • balance dan balance_atomic adalah string presisi; price_usd, value_usd, dan total_value_usd bersifat referensi serta bisa null. Status saldo terbaru tidak menjamin harga pasar terbaru.
  • Penilaian mengutamakan harga CoinGecko berusia hingga dua jam. Koin native dan USDC/USDT kanonis terverifikasi bisa beralih ke kuotasi USD Kraken/Binance aktif yang berusia hingga lima menit, penyedia utama lebih dahulu. Tidak mengasumsikan patokan dolar atau harga token kustom berdasarkan ticker saja; harga fixed/DEX proyek tetap terpisah. Kuotasi faktur tetap sama.
  • Pending belum memiliki snapshot lengkap. Refreshing mempertahankan jumlah terakhir yang selesai dan checked_at; tidak berarti transfer blockchain tertunda. Jumlah stale/error juga bisa mempertahankan nilai lama. Jangan pernah menganggap cache tidak tersedia sebagai nol atau pembayaran hilang. Penyegaran rutin EVM/Solana menggunakan kembali alamat kosong yang baru diperiksa hingga 30 menit di antara audit, sementara alamat berisi dana, baru, dan berubah diperiksa ulang. Pindai saldo eksplisit di konsol meminta pemindaian penuh.
  • recent_payments dibatasi tiga observasi per dompet dan mengecualikan riwayat yang dibatalkan validitasnya.

Kesalahan

Kode kesalahan & aturan percobaan ulang

POSTBuat faktur/v1/projects/{project_id}/stores/{store_id}/invoicesBaca + tulis

Membuat faktur secara atomik dengan tujuan dompet, kuotasi presisi terbaru, riwayat audit, dan entri kotak keluar notifikasi. Memutar ulang byte body mentah identik dengan kredensial dan Idempotency-Key yang sama mengembalikan faktur asli.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Idempotency-Keywajib1–128 karakter ASCII terlihat yang unik tanpa spasi.
Content-Typedirekomendasikanapplication/json. Handler body mentah saat ini mem-parsing JSON tanpa mewajibkan tipe media.
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Salin ID API Proyek dari Proyek → Pengaturan → ID API. Harus ditetapkan ke kredensial; pengenal proyek yang mudah dibaca tidak diterima.

store_idUUIDwajib

Salin ID API Toko dari Proyek → Toko → pilih toko → Dasar → ID API. Wajib bahkan untuk toko bawaan; harus aktif dan milik project_id.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new invoice.
curl --fail-with-body --max-time 30 \
  --request POST \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Idempotency-Key: order-1042-attempt-1' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "amount": "49.90",
  "currency": "USD"
}'

Body permintaan

amountstringwajib
String desimal biasa tanpa tanda; tanpa tanda positif/negatif atau eksponen, hingga 48 digit bilangan bulat dan 30 angka desimal. Harus positif secara bawaan. Toko bisa mengizinkan faktur bernilai nol di Toko → Faktur; total nol diselesaikan tanpa menerima dana, mengalokasikan alamat, atau biaya pemrosesan.Detail

String desimal biasa tanpa tanda; tanpa tanda positif/negatif atau eksponen, hingga 48 digit bilangan bulat dan 30 angka desimal. Harus positif secara bawaan. Toko bisa mengizinkan faktur bernilai nol di Toko → Faktur; total nol diselesaikan tanpa menerima dana, mengalokasikan alamat, atau biaya pemrosesan.

currencystring | nullopsional
Mata uang fiat tiga huruf yang didukung, dinormalisasi menjadi huruf besar. Tidak disertakan atau null mewarisi mata uang faktur toko. Pembuatan juga memerlukan kurs konversi penagihan yang tersedia secara independen.Detail

Mata uang fiat tiga huruf yang didukung, dinormalisasi menjadi huruf besar. Tidak disertakan atau null mewarisi mata uang faktur toko. Pembuatan juga memerlukan kurs konversi penagihan yang tersedia secara independen.

payment_methods[]object[] | nullopsional
Pilih metode yang diaktifkan toko untuk faktur ini. Merchant 5.4.0+: abaikan pilihan tidak dikenal/nonaktif/tidak diterima; jika tidak ada yang cocok, gunakan pengaturan bawaan toko. Tidak disertakan/null juga menggunakan pengaturan bawaan toko; [] tidak valid. Tidak pernah mengaktifkan metode atau mengubah pengaturan toko. Lihat skema pilihan di bawah.Detail

Pilih metode yang diaktifkan toko untuk faktur ini. Merchant 5.4.0+: abaikan pilihan tidak dikenal/nonaktif/tidak diterima; jika tidak ada yang cocok, gunakan pengaturan bawaan toko. Tidak disertakan/null juga menggunakan pengaturan bawaan toko; [] tidak valid. Tidak pernah mengaktifkan metode atau mengubah pengaturan toko. Lihat skema pilihan di bawah.

chain_slugstringwajib
Salin chain_slug di Proyek → Toko → Metode pembayaran, atau baca dari GET /v1/projects/{project_id}/stores/{store_id}/payment-assets, seperti ethereum, base, atau bitcoin. Pasangan blockchain/jalur hanya boleh muncul satu kali.Detail

Salin chain_slug di Proyek → Toko → Metode pembayaran, atau baca dari GET /v1/projects/{project_id}/stores/{store_id}/payment-assets, seperti ethereum, base, atau bitcoin. Pasangan blockchain/jalur hanya boleh muncul satu kali.

asset_ids[]UUID[] | nullopsional
UUID asset.id on-chain, bukan alamat kontrak atau ID metode pembayaran faktur. Gunakan ini ATAU asset_tickers. Jangan sertakan kedua pemilih untuk semua aset aktif yang diterima pada blockchain ini. [] dan ID duplikat/nil tidak valid. Pada 5.4.0+, abaikan ID yang tidak aktif/diterima pada blockchain ini di toko ini; pilihan yang sepenuhnya tidak cocok menggunakan pengaturan bawaan toko.Detail

UUID asset.id on-chain, bukan alamat kontrak atau ID metode pembayaran faktur. Gunakan ini ATAU asset_tickers. Jangan sertakan kedua pemilih untuk semua aset aktif yang diterima pada blockchain ini. [] dan ID duplikat/nil tidak valid. Pada 5.4.0+, abaikan ID yang tidak aktif/diterima pada blockchain ini di toko ini; pilihan yang sepenuhnya tidak cocok menggunakan pengaturan bawaan toko.

asset_tickers[]string[] | nullopsional
Merchant 5.3.0+. Simbol seperti BTC, USDC, atau PEPE, dibatasi pada chain_slug dan toko ini. 1–64 ticker unik; spasi tepi dipangkas/tidak peka huruf besar-kecil, 1–40 huruf ASCII/angka/titik/garis bawah/tanda hubung. Gunakan ini ATAU asset_ids. Pada 5.4.0+, abaikan ticker tidak dikenal/nonaktif/tidak diterima. Simbol diterima yang ambigu tetap gagal: gunakan asset_ids. Metode aktif yang dipilih memerlukan dompet dan harga valid; gangguan pemindai on-chain sementara tidak memblokir pembuatan mulai 6.0.6. Lightning secara opsional hanya menerima BTC.Detail

Merchant 5.3.0+. Simbol seperti BTC, USDC, atau PEPE, dibatasi pada chain_slug dan toko ini. 1–64 ticker unik; spasi tepi dipangkas/tidak peka huruf besar-kecil, 1–40 huruf ASCII/angka/titik/garis bawah/tanda hubung. Gunakan ini ATAU asset_ids. Pada 5.4.0+, abaikan ticker tidak dikenal/nonaktif/tidak diterima. Simbol diterima yang ambigu tetap gagal: gunakan asset_ids. Metode aktif yang dipilih memerlukan dompet dan harga valid; gangguan pemindai on-chain sementara tidak memblokir pembuatan mulai 6.0.6. Lightning secara opsional hanya menerima BTC.

payment_railonchain | lightningopsional
Bawaan onchain. Untuk memilih Bitcoin Lightning, gunakan {chain_slug: bitcoin, payment_rail: lightning} tanpa asset_ids; asset_tickers secara opsional boleh [BTC]. Bitcoin on-chain tidak mencakup Lightning. Koneksi Lightning toko harus sudah aktif dan siap.Detail

Bawaan onchain. Untuk memilih Bitcoin Lightning, gunakan {chain_slug: bitcoin, payment_rail: lightning} tanpa asset_ids; asset_tickers secara opsional boleh [BTC]. Bitcoin on-chain tidak mencakup Lightning. Koneksi Lightning toko harus sudah aktif dan siap.

order_idstring | nullopsional

Referensi pesanan merchant, 1–128 karakter setelah pemangkasan spasi; karakter kontrol ditolak.

emailstring | nullopsional

Email pelanggan khusus merchant, dinormalisasi ke alamat ASCII praktis dengan paling banyak 254 karakter. Tidak disertakan atau null tidak menyimpan email.

descriptionstring | nullopsional

Deskripsi yang ditampilkan kepada pelanggan, 1–500 karakter; baris baru dan tab diizinkan.

expires_in_secondsinteger | nullopsional

Masa kuotasi faktur dari 300 sampai 86,400 detik; tidak disertakan atau null mewarisi kebijakan toko.

exchange_rate_spread_percentdecimal string | nullopsional
Markup kuotasi dari 0 sampai 100, dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko; "0" menonaktifkannya untuk faktur ini. Diterapkan sebelum pembulatan ke atas, lalu dikunci. Tidak mengubah jumlah fiat faktur atau dasar biaya pemrosesan.Detail

Markup kuotasi dari 0 sampai 100, dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko; "0" menonaktifkannya untuk faktur ini. Diterapkan sebelum pembulatan ke atas, lalu dikunci. Tidak mengubah jumlah fiat faktur atau dasar biaya pemrosesan.

underpayment_tolerance_percentdecimal string | nullopsional

Kekurangan yang diterima dari 0 sampai 99.99 dengan paling banyak dua angka desimal. Tidak disertakan atau null mewarisi pengaturan bawaan toko.

ipn_urlstring | nullopsional

Callback HTTPS publik, paling banyak 2,048 byte dan tanpa kredensial atau fragmen. Menggantikan pengaturan bawaan toko; null/tidak disertakan mewarisinya.

redirect_urlstring | nullopsional

URL sukses HTTPS yang digunakan setelah penyelesaian, paling banyak 2,048 byte dan tanpa kredensial tersemat. Tidak disertakan atau null mewarisi pengaturan bawaan toko dan tidak bisa menghapusnya.

cancel_urlstring | nullopsional

URL kembali HTTPS yang digunakan saat checkout berakhir tanpa pembayaran berhasil. Tidak disertakan atau null mewarisi pengaturan bawaan toko dan tidak bisa menghapusnya.

redirect_automaticallyboolean | nullopsional

Tidak disertakan atau null mewarisi kebijakan toko. true memerlukan redirect_url efektif.

languagestring | nullopsional
Bahasa pelanggan: en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja. pt berarti Portugis Brasil dan zh berarti Mandarin Sederhana. Tag regional yang didukung seperti de-DE dinormalisasi ke bahasa yang tercantum. Tidak disertakan atau null mewarisi bahasa toko. Bahasa konsol terpisah.Detail

Bahasa pelanggan: en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja. pt berarti Portugis Brasil dan zh berarti Mandarin Sederhana. Tag regional yang didukung seperti de-DE dinormalisasi ke bahasa yang tercantum. Tidak disertakan atau null mewarisi bahasa toko. Bahasa konsol terpisah.

checkout_appearanceobject | nullopsional
Pengaturan tampilan parsial untuk faktur ini. Tidak disertakan/null mengikuti desain toko saat ini. Objek, termasuk {}, membekukan desain dan gambar yang telah ditentukan saat pembuatan. Lihat skema pengesampingan di bawah; tanpa pengaturan keuangan, HTML, CSS, JavaScript, atau URL gambar jarak jauh.Detail

Pengaturan tampilan parsial untuk faktur ini. Tidak disertakan/null mengikuti desain toko saat ini. Objek, termasuk {}, membekukan desain dan gambar yang telah ditentukan saat pembuatan. Lihat skema pengesampingan di bawah; tanpa pengaturan keuangan, HTML, CSS, JavaScript, atau URL gambar jarak jauh.

inherit_default_storebooleanopsional
true memilih desain toko bawaan proyek sebagai dasar; jika tidak, gunakan desain efektif toko tujuan. Pengesampingan lalu diterapkan dan disimpan secara independen; nilai flag faktur hasilnya false.Detail

true memilih desain toko bawaan proyek sebagai dasar; jika tidak, gunakan desain efektif toko tujuan. Pengesampingan lalu diterapkan dan disimpan secara independen; nilai flag faktur hasilnya false.

titlestringopsional

Judul checkout, hingga 120 karakter. Kosong menggunakan judul standar.

introstringopsional
Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.Detail

Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.

outrostringopsional
Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.Detail

Teks biasa, masing-masing hingga 2,000 karakter. Intro muncul di atas, Outro di bawah pada setiap status. Baris baru dipertahankan; URL teks yang aman menjadi tautan. String kosong menghapus. customer_message lama diterima sebagai alias intro; jangan kirim keduanya.

intro_font_sizeintegeropsional

Piksel: 12, 14, 16, 18, 20, atau 24. Bawaan 16 kecuali mewarisi nilai berbeda.

outro_font_sizeintegeropsional

Piksel: 12, 14, 16, 18, 20, atau 24. Bawaan 16 kecuali mewarisi nilai berbeda.

themesystem | light | dim | darkopsional

Ikuti perangkat pelanggan atau gunakan tema tetap.

accent_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

background_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

card_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

button_colorstringopsional

#RRGGBB. Latar belakang, kartu, dan tombol boleh kosong untuk warna otomatis. Kontras teks otomatis.

logo_sizestringopsional

small, medium, atau large; left atau center.

logo_alignmentstringopsional

small, medium, atau large; left atau center.

imagesobjectopsional
Kunci logo_light, logo_dark, favicon. Kunci yang tidak disertakan mempertahankan gambar dasar; null menghapusnya. Objek {store_id: UUID, kind?: logo_light|logo_dark|favicon} memakai kembali gambar unggahan efektif toko tersebut dalam proyek yang SAMA. kind bawaan mengikuti kunci tujuan. Unggah di Toko → Checkout terlebih dahulu; salin ID API Toko dari Dasar → ID API. Gambar tidak tersedia atau ID lintas proyek mengembalikan 400. URL eksternal atau data gambar tidak diterima.Detail

Kunci logo_light, logo_dark, favicon. Kunci yang tidak disertakan mempertahankan gambar dasar; null menghapusnya. Objek {store_id: UUID, kind?: logo_light|logo_dark|favicon} memakai kembali gambar unggahan efektif toko tersebut dalam proyek yang SAMA. kind bawaan mengikuti kunci tujuan. Unggah di Toko → Checkout terlebih dahulu; salin ID API Toko dari Dasar → ID API. Gambar tidak tersedia atau ID lintas proyek mengembalikan 400. URL eksternal atau data gambar tidak diterima.

logo_lightobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
logo_darkobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
faviconobject | nullopsional
store_idUUIDwajib
kindlogo_light | logo_dark | faviconopsional
show_order_idbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

show_descriptionbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

details_expandedbooleanopsional

Tampilkan detail ID pesanan dan deskripsi teks biasa di bawah judul. details_expanded membuka detail ID pesanan sejak awal. Hanya tampilan, bukan penyamaran data.

show_project_namebooleanopsional
Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.Detail

Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.

show_store_namebooleanopsional
Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.Detail

Merchant 5.6.0+: tampilkan atau sembunyikan setiap nama pada header checkout pelanggan. Keduanya secara bawaan true. Juga tersedia di Toko → Checkout; diwarisi dan disimpan dalam snapshot faktur seperti pengaturan tampilan lain. Hanya tampilan, bukan penyamaran data.

featured_chains[]string[]opsional
Slug blockchain berurutan, paling banyak 60 nilai unik (huruf kecil, angka, tanda hubung; hingga 64 karakter). [] menghapus. Hanya metode faktur yang tersedia yang diurutkan ulang.Detail

Slug blockchain berurutan, paling banyak 60 nilai unik (huruf kecil, angka, tanda hubung; hingga 64 karakter). [] menghapus. Hanya metode faktur yang tersedia yang diurutkan ulang.

featured_asset_ids[]UUID[]opsional
Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.Detail

Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.

default_asset_idUUID|nullopsional
Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.Detail

Hingga 100 ID aset unik berurutan; [] menghapus. Aset bawaan boleh null. ID berasal dari payment-assets, bukan ID intent pembayaran. Ini tidak pernah mengaktifkan metode; pembayaran yang diterima dan preferensi pelanggan yang valid diprioritaskan.

messagesobjectopsional
Objek bahasa dengan kunci en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja, dengan string biasa waiting, confirming, paid, underpaid, expired (masing-masing 500 karakter). Hanya bahasa/status yang diberikan yang berubah; {} menghapus semua pesan, {en:{}} menghapus bahasa Inggris, dan string status kosong menghapus status tersebut. Bahasa Inggris menjadi cadangan. Tidak mengganti status sebenarnya.Detail

Objek bahasa dengan kunci en, de, es, pt-BR, it, ru, zh-CN, fr, ko, atau ja, dengan string biasa waiting, confirming, paid, underpaid, expired (masing-masing 500 karakter). Hanya bahasa/status yang diberikan yang berubah; {} menghapus semua pesan, {en:{}} menghapus bahasa Inggris, dan string status kosong menghapus status tersebut. Bahasa Inggris menjadi cadangan. Tidak mengganti status sebenarnya.

enobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
deobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
esobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
pt-BRobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
itobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
ruobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
zh-CNobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
frobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
koobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
jaobjectopsional
waitingstringopsional
confirmingstringopsional
paidstringopsional
underpaidstringopsional
expiredstringopsional
support_emailstringopsional

Email ASCII, hingga 254 karakter. Kosong menghapus.

support_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

terms_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

privacy_urlstringopsional

URL HTTPS hingga 2,048 karakter, tanpa kredensial. Kosong menghapus. Tautan terbuka di jendela baru.

return_button_textstringopsional

Label hingga 60 karakter. Gunakan redirect_url/cancel_url/redirect_automatically/language tingkat atas untuk perilaku faktur.

show_return_buttonbooleanopsional
Tampilkan tombol manual Kembali ke merchant/batal di checkout, termasuk status akhir. Jangan sertakan untuk mewarisi tampilan toko (bawaan true); false menyembunyikannya. Tidak membatalkan faktur, menyembunyikan URL dalam JSON, atau menonaktifkan pengalihan sukses otomatis. Tetapkan redirect_automatically tingkat atas ke false secara terpisah jika diperlukan. Memerlukan merchant 8.1.4 atau yang lebih baru.Detail

Tampilkan tombol manual Kembali ke merchant/batal di checkout, termasuk status akhir. Jangan sertakan untuk mewarisi tampilan toko (bawaan true); false menyembunyikannya. Tidak membatalkan faktur, menyembunyikan URL dalam JSON, atau menonaktifkan pengalihan sukses otomatis. Tetapkan redirect_automatically tingkat atas ke false secara terpisah jika diperlukan. Memerlukan merchant 8.1.4 atau yang lebih baru.

metadataobject | nullopsional
Objek JSON khusus merchant; tidak disertakan atau null menjadi {}, maksimum 4,096 byte terenkode dan lima tingkat penyarangan. firstname, lastname, street, street2, zip, city, country, countryiso2, company, dan vatid divalidasi, dinormalisasi, dan diproyeksikan ke kolom ringkasan pelanggan.Detail

Objek JSON khusus merchant; tidak disertakan atau null menjadi {}, maksimum 4,096 byte terenkode dan lima tingkat penyarangan. firstname, lastname, street, street2, zip, city, country, countryiso2, company, dan vatid divalidasi, dinormalisasi, dan diproyeksikan ke kolom ringkasan pelanggan.

firstnamestringopsional
lastnamestringopsional
streetstringopsional
street2stringopsional
zipstringopsional
citystringopsional
countrystringopsional
countryiso2stringopsional
companystringopsional
vatidstringopsional
cart_idstring

Respons 201 new invoice; 200 exact idempotent replay

Contoh respons
{
  "data": {
    "id": "2f798f9f-01f2-42f0-9d10-5581d6116b4c",
    "invoice_id": "0a6a98db-d93d-48ee-8c3c-fd45f90c4a50",
    "project_id": "11111111-1111-4111-8111-111111111111",
    "store_id": "22222222-2222-4222-8222-222222222222",
    "source": "api",
    "order_id": "order-1042",
    "email": "ada@example.com",
    "customer_name": "Ada Lovelace · Example GmbH",
    "customer_address": "Example GmbH · 12 Example Street · Suite 2 · 10115 Berlin · Germany (DE) · VAT DE123456789",
    "description": "Annual plan",
    "amount": "49.9",
    "currency": "USD",
    "exchange_rate_spread_percent": "0.5",
    "underpayment_tolerance_percent": "1",
    "status": "new",
    "amount_status": "none",
    "timing_status": "on_time",
    "resolution": "automatic",
    "sequence": 1,
    "winning_payment_intent_id": null,
    "expires_at": "2026-08-31T18:15:00Z",
    "monitoring_expires_at": "2026-09-07T18:15:00Z",
    "settled_at": null,
    "cancelled_at": null,
    "archived_at": null,
    "created_at": "2026-08-31T18:00:00Z",
    "updated_at": "2026-08-31T18:00:00Z",
    "ipn_url": "https://merchant.example/wholly/ipn",
    "redirect_url": "https://merchant.example/orders/1042",
    "cancel_url": "https://merchant.example/cart",
    "redirect_automatically": true,
    "checkout_language": "en",
    "metadata": { "cart_id": "cart-681", "firstname": "Ada", "lastname": "Lovelace", "street": "12 Example Street", "street2": "Suite 2", "zip": "10115", "city": "Berlin", "country": "Germany", "countryiso2": "DE", "company": "Example GmbH", "vatid": "DE123456789" },
    "payment_intents": [
      {
        "id": "33333333-3333-4333-8333-333333333333",
        "asset_id": "10000000-0000-4000-8000-000000000001",
        "asset_key": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "chain_slug": "bitcoin",
        "network": "mainnet",
        "caip_network_id": "bip122:000000000019d6689c085ae165831e93",
        "caip_asset_id": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "symbol": "BTC",
        "asset_decimals": 8,
        "status": "pending",
        "finality_mode": "confirmations",
        "required_confirmations": 1,
        "quote_rate": "0.000009218",
        "quote_details": null,
        "expected_amount": "0.00046",
        "expected_amount_atomic": "46000",
        "minimum_payment_amount": "0.0004554",
        "minimum_payment_amount_atomic": "45540",
        "received_amount": "0",
        "received_amount_atomic": "0",
        "confirmed_amount": "0",
        "confirmed_amount_atomic": "0",
        "destination_address": "bc1q…example",
        "destination_tag": null,
        "derivation_index": 42,
        "quote_expires_at": "2026-08-31T18:15:00Z",
        "monitoring_expires_at": "2026-09-07T18:15:00Z",
        "next_check_at": "2026-08-31T18:00:00Z",
        "last_checked_at": null,
        "last_chain_height": null,
        "last_anchor_hash": null,
        "last_monitor_error": null,
        "first_payment_at": null,
        "fully_paid_at": null,
        "finalized_at": null
      }
    ]
  },
  "links": {
    "checkout": "https://pay.example.com/invoice/0a6a98db-d93d-48ee-8c3c-fd45f90c4a50"
  }
}

Kolom respons

dataobject
idUUIDselalu

UUID faktur internal. Jangan gunakan dalam path detail merchant atau checkout.

invoice_idUUIDselalu

UUID faktur publik yang digunakan path detail merchant dan checkout.

project_idUUIDselalu

Proyek pemilik.

store_idUUIDselalu

Toko pemilik.

sourcemanual | apiselalu

Cara faktur dibuat.

order_idstring | nullselalu

Referensi pesanan merchant.

emailstring | nullselalu

Email pelanggan khusus merchant. Tidak pernah dikembalikan oleh checkout publik.

customer_namestring | nullselalu

Nama tampilan yang diturunkan dari metadata pribadi firstname, lastname, dan company.

customer_addressstring | nullselalu

Alamat satu baris untuk merchant yang diturunkan dari metadata pribadi company, street, street2, zip, city, country, countryiso2, dan vatid.

descriptionstring | nullselalu

Deskripsi yang ditampilkan kepada pelanggan.

amountdecimal stringselalu

Jumlah faktur kanonis.

currencystringselalu

Kode mata uang/aset faktur yang dinormalisasi.

exchange_rate_spread_percentdecimal stringselalu

Spread kuotasi terkunci: pengesampingan saat pembuatan, atau pengaturan bawaan toko jika tidak disertakan. Diterapkan sebelum pembulatan ke atas; tidak pernah berubah pada faktur ini.

underpayment_tolerance_percentdecimal stringselalu

Persentase kekurangan yang diterima dan tidak dapat diubah, disimpan dalam snapshot saat faktur dibuat.

statusinvoice statusselalu

new, processing, settled, expired, invalid, atau cancelled.

amount_statusamount statusselalu

none, partial, paid, atau overpaid. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan dengan none dan tanpa metode pembayaran.

timing_statustiming statusselalu

on_time atau late.

resolutionresolutionselalu

automatic, manually_settled, atau manually_invalidated.

sequenceintegerselalu

Urutan status faktur monoton, dimulai dari 1.

winning_payment_intent_idUUID | nullselalu

Metode pembayaran yang menyelesaikan faktur, saat dipilih.

expires_atRFC 3339 timestampselalu

Tenggat kuotasi/pembayaran.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat paling akhir yang dikonfigurasi di antara metode pembayaran.

settled_attimestamp | nullselalu

Waktu penyelesaian saat settled.

cancelled_attimestamp | nullselalu

Waktu pembatalan saat cancelled.

archived_attimestamp | nullselalu

Waktu pengarsipan saat diarsipkan.

created_atRFC 3339 timestampselalu

Waktu pembuatan.

updated_atRFC 3339 timestampselalu

Waktu pembaruan status terakhir.

ipn_urlstring | nullselalu

Tujuan IPN efektif per faktur. Hanya respons merchant; dihilangkan dari checkout publik.

redirect_urlstring | nullselalu

URL sukses efektif yang digunakan setelah penyelesaian.

cancel_urlstring | nullselalu

URL kembali efektif yang digunakan saat checkout berakhir tanpa pembayaran berhasil.

redirect_automaticallybooleanselalu

Apakah checkout harus mengalihkan secara otomatis setelah berhasil.

checkout_languagestringselalu

Tag bahasa checkout efektif.

metadataobjectselalu
Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.Detail

Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.

cart_idstring
firstnamestring
lastnamestring
streetstring
street2string
zipstring
citystring
countrystring
countryiso2string
companystring
vatidstring
payment_intents[]object[]selalu

Metode pembayaran yang diberi kuotasi dan status pemantauan.

idUUIDselalu

Pengenal intent pembayaran; juga digunakan sebagai intent_id QR checkout.

payment_railonchain | lightningselalu
Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.Detail

Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.

bolt11string | nullselalu

Permintaan pembayaran Lightning, jika tidak null. Bayar permintaan ini dengan dompet Lightning; jangan pernah mengirim dana on-chain ke hash pembayarannya.

asset_idUUIDselalu

Pengenal aset pembayaran yang dikonfigurasi.

asset_keystringselalu

Kunci aset kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto.

networkstringselalu

Jaringan yang dikonfigurasi, saat ini mainnet untuk aset pembayaran yang didukung.

caip_network_idstringselalu

Pengenal jaringan CAIP-2 kanonis.

caip_asset_idstring | nullselalu

Pengenal CAIP-19 kanonis jika terdaftar.

symbolstringselalu

Simbol aset.

asset_decimalsintegerselalu

Presisi unit atomik. BTC Lightning menggunakan 11 (millisatoshi), bukan 8 seperti Bitcoin on-chain. Kuotasi berupa satoshi utuh; penerimaan mempertahankan presisi millisatoshi.

statusintent statusselalu

pending, partial, paid, overpaid, expired, atau invalid.

finality_modeconfirmations | finalizedselalu

Kebijakan finalitas.

required_confirmationsintegerselalu

Konfirmasi yang diperlukan jika berlaku.

quote_ratedecimal stringselalu

Unit aset per satu unit mata uang faktur, termasuk spread terkunci. Contohnya 1.02 USDC per USD. Bukan kurs kebalikannya.

quote_detailsobject | nullselalu
Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.Detail

Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.

expected_amountdecimal stringselalu
Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.Detail

Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.

expected_amount_atomicinteger stringselalu

Jumlah presisi dalam unit terkecil aset.

minimum_payment_amountdecimal stringselalu

Jumlah terkecil yang diterima sebagai lunas setelah menerapkan toleransi faktur.

minimum_payment_amount_atomicinteger stringselalu

Ambang diterima yang presisi dalam unit terkecil aset.

received_amountdecimal stringselalu

Jumlah teramati.

received_amount_atomicinteger stringselalu

Jumlah atomik teramati.

confirmed_amountdecimal stringselalu

Jumlah terkonfirmasi/final.

confirmed_amount_atomicinteger stringselalu

Jumlah atomik terkonfirmasi/final.

destination_addressstringselalu

Alamat penerimaan on-chain, atau hash pembayaran 64 karakter untuk Lightning. Gunakan bolt11 untuk membayar Lightning; hash-nya bukan alamat Bitcoin.

destination_tagstring | nullselalu

Referensi pembayaran publik wajib jika jalur menggunakannya: destination tag XRP, ID memo Stellar, atau komentar faktur TON. Null untuk jalur dengan alamat unik.

derivation_indexintegerselalu

Indeks turunan dompet yang dicadangkan; hanya detail merchant.

quote_expires_atRFC 3339 timestampselalu

Kedaluwarsa kuotasi.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat untuk metode ini.

next_check_attimestamp | nullselalu

Pemeriksaan blockchain terjadwal berikutnya.

last_checked_attimestamp | nullselalu

Pemeriksaan blockchain terakhir.

last_chain_heightinteger | nullselalu

Ketinggian tepercaya terakhir yang diamati pemantau.

last_anchor_hashstring | nullselalu

Anchor/hash blok pemantau terakhir.

last_monitor_errorstring | nullselalu

Diagnosis pemantauan aman untuk operator.

first_payment_attimestamp | nullselalu

Waktu pembayaran pertama teramati.

fully_paid_attimestamp | nullselalu

Waktu jumlah minimum diterima pertama tercapai.

finalized_attimestamp | nullselalu

Waktu pembayaran memenuhi kebijakan finalitas.

Catatan penggunaan
  • payment_methods memfilter metode toko aktif hanya untuk faktur ini. Tidak disertakan/null mempertahankan semua metode toko; [] tidak valid. Temukan petunjuk kecil chain_slug dan ticker aset yang ditampilkan di Proyek → Toko → Metode pembayaran. Daftar payment-assets API menyediakan chain_slug, asset.symbol, dan asset.id. Gunakan {chain_slug: ethereum, asset_tickers: [USDC, USDT]} untuk token Ethereum yang diterima; BTC dan PEPE bekerja dengan cara yang sama pada blockchain pilihan masing-masing. Ticker tidak peka huruf besar-kecil, dibatasi ke blockchain, dan hanya dicocokkan di dalam toko. Dua kontrak diterima dengan ticker yang sama mengembalikan 400 alih-alih memilih salah satunya, bahkan jika salah satunya belum siap; gunakan asset_ids untuk kasus tersebut. Aset native, token katalog, dan token kustom mengikuti aturan yang sama. Setiap blockchain/jalur boleh muncul sekali; paling banyak 64 metode akhir. Merchant 5.4.0+: pilihan tidak dikenal, nonaktif, salah blockchain, atau tidak diterima diabaikan. Jika seluruh pilihan tidak memiliki kecocokan aktif yang diterima, pengaturan bawaan toko berlaku; jika ada, hanya pilihan cocok yang digunakan. Entri blockchain saja mencakup setiap aset on-chain aktif yang diterima. Metode aktif terpilih memerlukan dompet valid, adapter pemindai terinstal, dan kurs tepercaya. Mulai 6.0.6, pemindai tidak tersedia, masa tunggu, dan pemeriksaan kesehatan tertunda/usang tidak memblokir pembuatan faktur atau menghapus metode on-chain yang dikonfigurasi. Deteksi mencoba ulang otomatis; penyelesaian tetap memerlukan kuorum penyedia dan konfirmasi. Pantau receive_readiness dan jaga penyedia tetap tersedia: faktur bisa tetap belum terverifikasi sampai pemindai pulih. Alokasi subalamat Monero dan pembuatan BOLT11 Lightning tetap memerlukan layanan dompet/node eksternalnya. Kegagalan mengembalikan error.message beserta error.details.payment_methods dengan chain_slug, asset_ticker, reason_code, dan, untuk diagnosis pemindai, required_endpoint_role, healthy_endpoints, serta required_independent_providers. TRON menerima riwayat terindeks atau API blok native tersolidifikasi mentah yang didukung; kesehatan dasar saja tidak membuktikan kompatibilitas pemindai. Kegagalan harga mengidentifikasi aset/mata uang. Tidak ada yang mengaktifkan aset tidak diterima atau mengubah kebijakan toko. Pada versi merchant sebelum 5.4.0, pilihan eksplisit tidak dikenal/nonaktif justru gagal. Metode faktur yang ada tidak pernah meluas saat pengaturan toko berubah. Lightning harus dipilih secara terpisah. Replay mempertahankan metode asli, dan mengubah pilihan dengan Idempotency-Key yang sama mengembalikan 409.
  • checkout_appearance mendukung setiap pengaturan tampilan yang tercantum di atas. Kolom yang tidak disertakan mewarisi, array mengganti, dan kolom pesan bersarang digabungkan; objek pesan kosong menghapus cakupan tersebut. Desain dan gambar hasilnya disimpan untuk faktur ini tanpa mengedit toko. Baca appearance dari JSON checkout publik untuk memeriksa hasilnya. Seluruh permintaan dibatasi 32 KiB dan pengaturan hasilnya 20 KiB.
  • Mengubah checkout_appearance dengan Idempotency-Key yang sama mengembalikan 409; coba ulang dengan byte mentah identik. Tampilan tidak mengubah jumlah, kurs, aset yang diterima, persyaratan konfirmasi, status sebenarnya, atau izin penyematan. Tanpa HTML, CSS, skrip, atau pengambilan gambar jarak jauh.
  • exchange_rate_spread_percent menggantikan pengaturan bawaan toko untuk faktur ini: jangan sertakan atau kirim null untuk mewarisi, atau kirim "0" untuk menonaktifkan. Kuotasi faktur yang ada tidak pernah berubah.
  • Spread diterapkan sebelum pembulatan ke atas. Biaya tetap berdasarkan jumlah fiat faktur asli, tidak termasuk spread.
  • Selalu kirim expected_amount atau expected_amount_atomic yang dikembalikan. Pembulatan ke atas, dibatasi presisi aset, 0.1% dari jumlah, dan satu unit minor fiat.
  • Percobaan ulang harus mempertahankan kredensial, Idempotency-Key, dan byte body persis yang sama. Mengubah spread dengan kunci yang sama mengembalikan 409 idempotency_conflict.
  • Replay persis diperiksa sebelum kuotasi baru, DNS callback, atau penyiapan alamat. Cakupan kredensial dan otorisasi proyek/toko tetap diperiksa pada setiap permintaan.
  • ipn_url efektif memerlukan rahasia penandatanganan IPN toko. Kolom body tidak dikenal ditolak.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar faktur/v1/projects/{project_id}/invoicesHanya baca

Mengembalikan halaman ringkas ringkasan faktur dalam cakupan, diurutkan dari terbaru, termasuk email khusus merchant dan kolom pelanggan yang diturunkan dari metadata yang dikenali. Filter pencarian, status, dan toko dievaluasi di sisi server; respons menyertakan total dan has_more untuk paginasi yang terprediksi.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

Parameter kueri

store_idUUID

Filter toko persis opsional.

statusenum

Opsional new, processing, settled, expired, invalid, atau cancelled.

limitinteger

Opsional 1–100; bawaan 50.

offsetinteger

Opsional 0–1,000,000; bawaan 0.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/invoices?search=order-1042&status=processing&limit=50&offset=0" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "data": [
    {
      "id": "2f798f9f-01f2-42f0-9d10-5581d6116b4c",
      "invoice_id": "0a6a98db-d93d-48ee-8c3c-fd45f90c4a50",
      "project_id": "11111111-1111-4111-8111-111111111111",
      "store_id": "22222222-2222-4222-8222-222222222222",
      "source": "api",
      "order_id": "order-1042",
      "email": "ada@example.com",
      "customer_name": "Ada Lovelace · Example GmbH",
      "customer_address": "Example GmbH · 12 Example Street · Suite 2 · 10115 Berlin · Germany (DE) · VAT DE123456789",
      "description": "Annual plan",
      "amount": "49.9",
      "currency": "USD",
      "exchange_rate_spread_percent": "0.5",
      "underpayment_tolerance_percent": "1",
      "status": "processing",
      "amount_status": "paid",
      "timing_status": "on_time",
      "resolution": "automatic",
      "sequence": 3,
      "winning_payment_intent_id": "33333333-3333-4333-8333-333333333333",
      "expires_at": "2026-08-31T18:15:00Z",
      "monitoring_expires_at": "2026-09-07T18:15:00Z",
      "settled_at": null,
      "cancelled_at": null,
      "archived_at": null,
      "created_at": "2026-08-31T18:00:00Z",
      "updated_at": "2026-08-31T18:04:10Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0,
    "total": 143,
    "has_more": true
  }
}

Kolom respons

data[]object[]
idUUIDselalu

UUID faktur internal. Jangan gunakan dalam path detail merchant atau checkout.

invoice_idUUIDselalu

UUID faktur publik yang digunakan path detail merchant dan checkout.

project_idUUIDselalu

Proyek pemilik.

store_idUUIDselalu

Toko pemilik.

sourcemanual | apiselalu

Cara faktur dibuat.

order_idstring | nullselalu

Referensi pesanan merchant.

emailstring | nullselalu

Email pelanggan khusus merchant. Tidak pernah dikembalikan oleh checkout publik.

customer_namestring | nullselalu

Nama tampilan yang diturunkan dari metadata pribadi firstname, lastname, dan company.

customer_addressstring | nullselalu

Alamat satu baris untuk merchant yang diturunkan dari metadata pribadi company, street, street2, zip, city, country, countryiso2, dan vatid.

descriptionstring | nullselalu

Deskripsi yang ditampilkan kepada pelanggan.

amountdecimal stringselalu

Jumlah faktur kanonis.

currencystringselalu

Kode mata uang/aset faktur yang dinormalisasi.

exchange_rate_spread_percentdecimal stringselalu

Spread kuotasi terkunci: pengesampingan saat pembuatan, atau pengaturan bawaan toko jika tidak disertakan. Diterapkan sebelum pembulatan ke atas; tidak pernah berubah pada faktur ini.

underpayment_tolerance_percentdecimal stringselalu

Persentase kekurangan yang diterima dan tidak dapat diubah, disimpan dalam snapshot saat faktur dibuat.

statusinvoice statusselalu

new, processing, settled, expired, invalid, atau cancelled.

amount_statusamount statusselalu

none, partial, paid, atau overpaid. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan dengan none dan tanpa metode pembayaran.

timing_statustiming statusselalu

on_time atau late.

resolutionresolutionselalu

automatic, manually_settled, atau manually_invalidated.

sequenceintegerselalu

Urutan status faktur monoton, dimulai dari 1.

winning_payment_intent_idUUID | nullselalu

Metode pembayaran yang menyelesaikan faktur, saat dipilih.

expires_atRFC 3339 timestampselalu

Tenggat kuotasi/pembayaran.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat paling akhir yang dikonfigurasi di antara metode pembayaran.

settled_attimestamp | nullselalu

Waktu penyelesaian saat settled.

cancelled_attimestamp | nullselalu

Waktu pembatalan saat cancelled.

archived_attimestamp | nullselalu

Waktu pengarsipan saat diarsipkan.

created_atRFC 3339 timestampselalu

Waktu pembuatan.

updated_atRFC 3339 timestampselalu

Waktu pembaruan status terakhir.

paginationobject
limitintegerselalu

Ukuran halaman efektif, 1–100.

offsetintegerselalu

Offset baris efektif berbasis nol, 0–1,000,000.

totalintegerselalu

Total baris yang cocok dengan filter proyek, toko, status, dan pencarian dalam snapshot halaman.

has_morebooleanselalu

True jika offset ditambah jumlah baris yang dikembalikan lebih kecil dari total.

Catatan penggunaan
  • Diurutkan berdasarkan created_at menurun, lalu id internal menurun.
  • Item daftar adalah objek InvoiceSummary; email, customer_name, dan customer_address khusus merchant. Panggil detail untuk metadata mentah dan intent pembayaran.
  • Untuk halaman berikutnya, tetapkan offset ke pagination.offset + pagination.limit hanya jika has_more true.
  • Hitungan dan halaman dibaca dari satu snapshot database repeatable-read; penulisan bersamaan muncul pada permintaan berikutnya.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETAmbil faktur/v1/projects/{project_id}/invoices/{invoice_id}Hanya baca

Mengembalikan detail faktur merchant lengkap dan URL checkout aktif saat ini. Gunakan rute ini untuk polling dan rekonsiliasi.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek aktif yang ditetapkan ke kredensial.

invoice_idUUIDwajib

invoice_id yang dikembalikan saat pembuatan/daftar, bukan id internal.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/invoices/YOUR_PUBLIC_INVOICE_ID" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "data": {
    "id": "2f798f9f-01f2-42f0-9d10-5581d6116b4c",
    "invoice_id": "0a6a98db-d93d-48ee-8c3c-fd45f90c4a50",
    "project_id": "11111111-1111-4111-8111-111111111111",
    "store_id": "22222222-2222-4222-8222-222222222222",
    "source": "api",
    "order_id": "order-1042",
    "email": "ada@example.com",
    "customer_name": "Ada Lovelace · Example GmbH",
    "customer_address": "Example GmbH · 12 Example Street · Suite 2 · 10115 Berlin · Germany (DE) · VAT DE123456789",
    "description": "Annual plan",
    "amount": "49.9",
    "currency": "USD",
    "exchange_rate_spread_percent": "0.5",
    "underpayment_tolerance_percent": "1",
    "status": "settled",
    "amount_status": "paid",
    "timing_status": "on_time",
    "resolution": "automatic",
    "sequence": 4,
    "winning_payment_intent_id": "33333333-3333-4333-8333-333333333333",
    "expires_at": "2026-08-31T18:15:00Z",
    "monitoring_expires_at": "2026-09-07T18:15:00Z",
    "settled_at": "2026-08-31T18:05:00Z",
    "cancelled_at": null,
    "archived_at": null,
    "created_at": "2026-08-31T18:00:00Z",
    "updated_at": "2026-08-31T18:05:00Z",
    "ipn_url": "https://merchant.example/wholly/ipn",
    "redirect_url": "https://merchant.example/orders/1042",
    "cancel_url": "https://merchant.example/cart",
    "redirect_automatically": true,
    "checkout_language": "en",
    "metadata": { "cart_id": "cart-681", "firstname": "Ada", "lastname": "Lovelace", "street": "12 Example Street", "street2": "Suite 2", "zip": "10115", "city": "Berlin", "country": "Germany", "countryiso2": "DE", "company": "Example GmbH", "vatid": "DE123456789" },
    "payment_intents": [
      {
        "id": "33333333-3333-4333-8333-333333333333",
        "asset_id": "10000000-0000-4000-8000-000000000001",
        "asset_key": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "chain_slug": "bitcoin",
        "network": "mainnet",
        "caip_network_id": "bip122:000000000019d6689c085ae165831e93",
        "caip_asset_id": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "symbol": "BTC",
        "asset_decimals": 8,
        "status": "paid",
        "finality_mode": "confirmations",
        "required_confirmations": 1,
        "quote_rate": "0.000009218",
        "quote_details": null,
        "expected_amount": "0.00046",
        "expected_amount_atomic": "46000",
        "minimum_payment_amount": "0.0004554",
        "minimum_payment_amount_atomic": "45540",
        "received_amount": "0.0004554",
        "received_amount_atomic": "45540",
        "confirmed_amount": "0.0004554",
        "confirmed_amount_atomic": "45540",
        "destination_address": "bc1q…example",
        "destination_tag": null,
        "derivation_index": 42,
        "quote_expires_at": "2026-08-31T18:15:00Z",
        "monitoring_expires_at": "2026-09-07T18:15:00Z",
        "next_check_at": null,
        "last_checked_at": "2026-08-31T18:05:00Z",
        "last_chain_height": 912345,
        "last_anchor_hash": "000000000000000000example",
        "last_monitor_error": null,
        "first_payment_at": "2026-08-31T18:03:00Z",
        "fully_paid_at": "2026-08-31T18:03:00Z",
        "finalized_at": "2026-08-31T18:05:00Z"
      }
    ]
  },
  "links": {
    "checkout": "https://pay.example.com/invoice/0a6a98db-d93d-48ee-8c3c-fd45f90c4a50"
  }
}

Kolom respons

dataobject
idUUIDselalu

UUID faktur internal. Jangan gunakan dalam path detail merchant atau checkout.

invoice_idUUIDselalu

UUID faktur publik yang digunakan path detail merchant dan checkout.

project_idUUIDselalu

Proyek pemilik.

store_idUUIDselalu

Toko pemilik.

sourcemanual | apiselalu

Cara faktur dibuat.

order_idstring | nullselalu

Referensi pesanan merchant.

emailstring | nullselalu

Email pelanggan khusus merchant. Tidak pernah dikembalikan oleh checkout publik.

customer_namestring | nullselalu

Nama tampilan yang diturunkan dari metadata pribadi firstname, lastname, dan company.

customer_addressstring | nullselalu

Alamat satu baris untuk merchant yang diturunkan dari metadata pribadi company, street, street2, zip, city, country, countryiso2, dan vatid.

descriptionstring | nullselalu

Deskripsi yang ditampilkan kepada pelanggan.

amountdecimal stringselalu

Jumlah faktur kanonis.

currencystringselalu

Kode mata uang/aset faktur yang dinormalisasi.

exchange_rate_spread_percentdecimal stringselalu

Spread kuotasi terkunci: pengesampingan saat pembuatan, atau pengaturan bawaan toko jika tidak disertakan. Diterapkan sebelum pembulatan ke atas; tidak pernah berubah pada faktur ini.

underpayment_tolerance_percentdecimal stringselalu

Persentase kekurangan yang diterima dan tidak dapat diubah, disimpan dalam snapshot saat faktur dibuat.

statusinvoice statusselalu

new, processing, settled, expired, invalid, atau cancelled.

amount_statusamount statusselalu

none, partial, paid, atau overpaid. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan dengan none dan tanpa metode pembayaran.

timing_statustiming statusselalu

on_time atau late.

resolutionresolutionselalu

automatic, manually_settled, atau manually_invalidated.

sequenceintegerselalu

Urutan status faktur monoton, dimulai dari 1.

winning_payment_intent_idUUID | nullselalu

Metode pembayaran yang menyelesaikan faktur, saat dipilih.

expires_atRFC 3339 timestampselalu

Tenggat kuotasi/pembayaran.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat paling akhir yang dikonfigurasi di antara metode pembayaran.

settled_attimestamp | nullselalu

Waktu penyelesaian saat settled.

cancelled_attimestamp | nullselalu

Waktu pembatalan saat cancelled.

archived_attimestamp | nullselalu

Waktu pengarsipan saat diarsipkan.

created_atRFC 3339 timestampselalu

Waktu pembuatan.

updated_atRFC 3339 timestampselalu

Waktu pembaruan status terakhir.

ipn_urlstring | nullselalu

Tujuan IPN efektif per faktur. Hanya respons merchant; dihilangkan dari checkout publik.

redirect_urlstring | nullselalu

URL sukses efektif yang digunakan setelah penyelesaian.

cancel_urlstring | nullselalu

URL kembali efektif yang digunakan saat checkout berakhir tanpa pembayaran berhasil.

redirect_automaticallybooleanselalu

Apakah checkout harus mengalihkan secara otomatis setelah berhasil.

checkout_languagestringselalu

Tag bahasa checkout efektif.

metadataobjectselalu
Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.Detail

Metadata merchant. Tidak pernah dikembalikan oleh checkout publik. Alat pembayaran konsol menambahkan asal payment_tool (id, kind, title, pricing, requested_amount, request_id); ini tidak membuktikan pembayaran. Autentikasi callback dan penuhi invoice.settled satu kali per invoice_id.

cart_idstring
firstnamestring
lastnamestring
streetstring
street2string
zipstring
citystring
countrystring
countryiso2string
companystring
vatidstring
payment_intents[]object[]selalu

Metode pembayaran yang diberi kuotasi dan status pemantauan.

idUUIDselalu

Pengenal intent pembayaran; juga digunakan sebagai intent_id QR checkout.

payment_railonchain | lightningselalu
Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.Detail

Transport faktur. Bitcoin on-chain dan Lightning bisa berbagi asset_id; gunakan id intent beserta kolom ini, bukan simbol saja. Ini berbeda dari payment_rail pemindai dalam katalog aset.

bolt11string | nullselalu

Permintaan pembayaran Lightning, jika tidak null. Bayar permintaan ini dengan dompet Lightning; jangan pernah mengirim dana on-chain ke hash pembayarannya.

asset_idUUIDselalu

Pengenal aset pembayaran yang dikonfigurasi.

asset_keystringselalu

Kunci aset kanonis bergaya CAIP.

chain_slugstringselalu

Pengenal blockchain Wholly Crypto.

networkstringselalu

Jaringan yang dikonfigurasi, saat ini mainnet untuk aset pembayaran yang didukung.

caip_network_idstringselalu

Pengenal jaringan CAIP-2 kanonis.

caip_asset_idstring | nullselalu

Pengenal CAIP-19 kanonis jika terdaftar.

symbolstringselalu

Simbol aset.

asset_decimalsintegerselalu

Presisi unit atomik. BTC Lightning menggunakan 11 (millisatoshi), bukan 8 seperti Bitcoin on-chain. Kuotasi berupa satoshi utuh; penerimaan mempertahankan presisi millisatoshi.

statusintent statusselalu

pending, partial, paid, overpaid, expired, atau invalid.

finality_modeconfirmations | finalizedselalu

Kebijakan finalitas.

required_confirmationsintegerselalu

Konfirmasi yang diperlukan jika berlaku.

quote_ratedecimal stringselalu

Unit aset per satu unit mata uang faktur, termasuk spread terkunci. Contohnya 1.02 USDC per USD. Bukan kurs kebalikannya.

quote_detailsobject | nullselalu
Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.Detail

Asal kuotasi terkunci: reference_rate sebelum spread, unrounded_payment_amount, rounding_adjustment, pricing_provider, asset_provider, pricing_fetched_at, dan asset_fetched_at. Null pada faktur lama; tidak ada nilai historis yang direkayasa.

expected_amountdecimal stringselalu
Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.Detail

Jumlah aset terkunci yang presisi untuk dibayar setelah spread dan pembulatan ke atas. Mulai 4.1.1, stablecoin fiat terverifikasi yang dikenali (seperti USDC, USDT, DAI, USDS, EURC) dibulatkan ke atas hingga paling banyak dua desimal; 1.321 menjadi 1.33, tidak pernah 1.32. Ini jumlah yang diharapkan bahkan dengan toleransi nol. Aset lain mempertahankan presisi adaptif. Harga faktur yang sudah ada tidak pernah dihitung ulang.

expected_amount_atomicinteger stringselalu

Jumlah presisi dalam unit terkecil aset.

minimum_payment_amountdecimal stringselalu

Jumlah terkecil yang diterima sebagai lunas setelah menerapkan toleransi faktur.

minimum_payment_amount_atomicinteger stringselalu

Ambang diterima yang presisi dalam unit terkecil aset.

received_amountdecimal stringselalu

Jumlah teramati.

received_amount_atomicinteger stringselalu

Jumlah atomik teramati.

confirmed_amountdecimal stringselalu

Jumlah terkonfirmasi/final.

confirmed_amount_atomicinteger stringselalu

Jumlah atomik terkonfirmasi/final.

destination_addressstringselalu

Alamat penerimaan on-chain, atau hash pembayaran 64 karakter untuk Lightning. Gunakan bolt11 untuk membayar Lightning; hash-nya bukan alamat Bitcoin.

destination_tagstring | nullselalu

Referensi pembayaran publik wajib jika jalur menggunakannya: destination tag XRP, ID memo Stellar, atau komentar faktur TON. Null untuk jalur dengan alamat unik.

derivation_indexintegerselalu

Indeks turunan dompet yang dicadangkan; hanya detail merchant.

quote_expires_atRFC 3339 timestampselalu

Kedaluwarsa kuotasi.

monitoring_expires_atRFC 3339 timestampselalu

Batas akhir pemantauan terlambat untuk metode ini.

next_check_attimestamp | nullselalu

Pemeriksaan blockchain terjadwal berikutnya.

last_checked_attimestamp | nullselalu

Pemeriksaan blockchain terakhir.

last_chain_heightinteger | nullselalu

Ketinggian tepercaya terakhir yang diamati pemantau.

last_anchor_hashstring | nullselalu

Anchor/hash blok pemantau terakhir.

last_monitor_errorstring | nullselalu

Diagnosis pemantauan aman untuk operator.

first_payment_attimestamp | nullselalu

Waktu pembayaran pertama teramati.

fully_paid_attimestamp | nullselalu

Waktu jumlah minimum diterima pertama tercapai.

finalized_attimestamp | nullselalu

Waktu pembayaran memenuhi kebijakan finalitas.

Catatan penggunaan
  • Pencarian dalam cakupan sengaja mengembalikan invoice_not_found jika ID publik tidak ada dalam proyek yang diotorisasi.
  • links.checkout menggunakan Toko → Dasar → Domain toko: nama host pay aktif toko ini, lalu pilihan toko bawaannya, lalu domain utama sistem. Host yang dihentikan/draf atau salah layanan diabaikan. Ini juga berlaku untuk respons pembuatan dan MCP; tautan ditentukan saat respons, termasuk replay idempoten. Tautan callback bertanda tangan dibekukan saat peristiwa dibuat, tidak ditulis ulang pada percobaan ulang. Preferensi ini hanya menghasilkan tautan; tidak mengalihkan trafik atau mengubah pembatasan IP.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETDaftar pembayaran faktur/v1/projects/{project_id}/invoices/{invoice_id}/paymentsHanya baca

Riwayat transfer terkini lengkap, termasuk observasi yang dibatalkan validitasnya. Gunakan saat callback menandai payments_truncated. Ini status terkini, bukan rekonstruksi peristiwa lama.

Autentikasi & header
HeaderKehadiranAturan
AuthorizationwajibBearer YOUR_MERCHANT_API_TOKEN
Acceptdirekomendasikanapplication/json

Parameter path

project_idUUIDwajib

Proyek yang ditetapkan ke kredensial ini.

invoice_idUUIDwajib

invoice_id publik yang dikembalikan saat pembuatan.

Parameter kueri

payment_method_idUUIDopsional

Batasi ke satu metode pembayaran faktur.

limitinteger

1–100; bawaan 25.

offsetinteger

0–1,000,000; bawaan 0.

Permintaan

: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/invoices/YOUR_PUBLIC_INVOICE_ID/payments?limit=25&offset=0" \
  --header "Authorization: Bearer $WHOLLY_TOKEN" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "invoice_id": "11111111-2222-4333-8444-555555555555",
  "data": [{
    "payment_id": "44444444-4444-4444-8444-444444444444",
    "payment_method_id": "33333333-3333-4333-8333-333333333333",
    "transaction_id": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "payment_hash": null,
    "event_index": 12,
    "payment_rail": "onchain",
    "chain_slug": "ethereum",
    "network": "mainnet",
    "asset_id": "55555555-5555-4555-8555-555555555555",
    "asset_key": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "caip_asset_id": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "symbol": "USDC",
    "asset_decimals": 6,
    "amount": "58.17342",
    "amount_atomic": "58173420",
    "status": "final",
    "counts_towards_received": true,
    "confirmations": 2,
    "block_height": 25975377,
    "observed_at": "2026-09-14T12:03:00Z",
    "chain_time": "2026-09-14T12:02:48Z",
    "finalized_at": "2026-09-14T12:04:00Z",
    "explorer_name": "Etherscan",
    "explorer_url": "https://etherscan.io/tx/0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  }],
  "pagination": {"limit": 25, "offset": 0, "total": 1, "has_more": false}
}

Kolom respons

invoice_idstring
data[]object[]
payment_idstring
payment_method_idstring
transaction_idstring
payment_hashJSON | null
event_indexinteger
payment_railstring
chain_slugstring
networkstring
asset_idstring
asset_keystring
caip_asset_idstring
symbolstring
asset_decimalsinteger
amountstring
amount_atomicstring
statusstring
counts_towards_receivedboolean
confirmationsinteger
block_heightinteger
observed_atstring
chain_timestring
finalized_atstring
explorer_namestring
explorer_urlstring
paginationobject
limitinteger
offsetinteger
totalinteger
has_moreboolean
Catatan penggunaan
  • Observasi adalah log token, output UTXO, atau transfer jalur lain, belum tentu hash transaksi unik. Deduplikasi berdasarkan payment_id; transaction_id ditambah event_index mengidentifikasi transfer blockchain.
  • status adalah detected, confirming, final, reorged, replaced, atau invalid. Hanya observasi counts_towards_received yang berkontribusi pada jumlah diterima. Jangan pernah menjumlahkan jumlah lintas aset berbeda.
  • Catatan Lightning menggunakan payment_hash dengan transaction_id, konfirmasi, dan tautan penjelajah null; presisi BTC 11 (millisatoshi). Tidak ada preimage, BOLT11, atau rahasia dompet yang ditampilkan.
  • Diurutkan berdasarkan observed_at menurun, lalu payment_id menurun. Hitungan dan halaman menggunakan satu snapshot repeatable-read; halaman berikutnya bisa berubah saat pembayaran tiba. Deduplikasi berdasarkan payment_id saat memaginasi faktur aktif.
  • Cakupan proyek hanya baca yang ada, pembatasan IP, dan batas permintaan per kredensial berlaku. Jangan pernah mengikuti tautan dari callback dengan tokenmu kecuali origin-nya cocok dengan host API yang kamu konfigurasi.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETKerangka checkout/Publik

Root host checkout yang dikelola yang menyajikan aplikasi checkout tanpa memilih faktur. Integrasi pelanggan biasanya sebaiknya menggunakan links.checkout.

Autentikasi & header

Publik

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/" \
  --output 'checkout.html'

Respons 200 text/html

Contoh respons
<!doctype html>
<!-- Hosted Wholly Crypto checkout shell -->
Catatan penggunaan
  • Token bearer tidak diperlukan.
  • Edge checkout yang dikelola mengizinkan GET/HEAD dan menolak metode lain.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETHalaman checkout yang dihosting/invoice/{invoice_id}Publik

Checkout HTML untuk pelanggan. Halaman mengambil JSON aman untuk checkout dari host checkout yang sama. Penyematan ditolak kecuali toko mengaktifkannya dan secara eksplisit mengizinkan origin HTTPS induk.

Autentikasi & header

Publik

Parameter path

invoice_idUUIDwajib

UUID faktur publik yang dikembalikan API merchant.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/invoice/YOUR_PUBLIC_INVOICE_ID" \
  --output 'checkout.html'

Respons 200 text/html

Contoh respons
<!doctype html>
<!-- Hosted Wholly Crypto checkout application -->
Catatan penggunaan
  • Token bearer tidak diterima atau diperlukan.
  • Kerangka HTML sendiri mengembalikan 200 bahkan saat faktur tidak ada; permintaan JSON checkout-nya kemudian menerima invoice_not_found.
  • Respons bersifat no-store, noindex, dan memiliki CSP frame-ancestors khusus faktur.
  • Proyek/toko nonaktif atau faktur tidak dikenal tidak menampilkan data checkout.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETFaktur yang aman untuk checkout/checkout-api/invoices/{invoice_id}Publik

Hanya mengembalikan kolom yang diperlukan untuk merender checkout. Sengaja menghilangkan ID internal, email pelanggan dan kolom alamat turunan, URL IPN, metadata merchant, ID dompet, path derivasi, serta diagnosis pemantau.

Autentikasi & header

Publik

Parameter path

invoice_idUUIDwajib

UUID faktur publik.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/checkout-api/invoices/YOUR_PUBLIC_INVOICE_ID" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "data": {
    "invoice_id": "0a6a98db-d93d-48ee-8c3c-fd45f90c4a50",
    "order_id": "order-1042",
    "description": "Annual plan",
    "amount": "49.9",
    "currency": "USD",
    "exchange_rate_spread_percent": "0.5",
    "underpayment_tolerance_percent": "1",
    "status": "processing",
    "amount_status": "partial",
    "timing_status": "on_time",
    "sequence": 3,
    "active_payment_method_id": "33333333-3333-4333-8333-333333333333",
    "payment_method_locked": true,
    "server_time": "2026-08-31T18:10:00Z",
    "expires_at": "2026-08-31T18:15:00Z",
    "expires_in_seconds": 300,
    "payment_open": true,
    "redirect_url": "https://merchant.example/orders/1042",
    "cancel_url": "https://merchant.example/cart",
    "redirect_automatically": true,
    "checkout_language": "en",
    "project": {
      "name": "Example project",
      "checkout_title": "Complete your payment",
      "checkout_description": "Send the exact amount shown.",
      "theme": "system",
      "accent_color": "#42e39b",
      "logo_url": "/checkout-api/invoices/…/logo/…/image.png"
    },
    "store": { "name": "Online shop" },
    "payment_methods": [
      {
        "id": "33333333-3333-4333-8333-333333333333",
        "asset_key": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "chain_slug": "bitcoin",
        "chain_name": "Bitcoin",
        "network": "mainnet",
        "caip_network_id": "bip122:000000000019d6689c085ae165831e93",
        "caip_asset_id": "bip122:000000000019d6689c085ae165831e93/slip44:0",
        "asset_name": "Bitcoin",
        "symbol": "BTC",
        "asset_icon_url": "/assets/coingecko/bitcoin.png",
        "asset_kind": "native",
        "contract_address": null,
        "token_standard": null,
        "asset_decimals": 8,
        "status": "partial",
        "payable": true,
        "finality_mode": "confirmations",
        "required_confirmations": 1,
        "expected_amount": "0.00046",
        "expected_amount_atomic": "46000",
        "minimum_payment_amount": "0.0004554",
        "minimum_payment_amount_atomic": "45540",
        "received_amount": "0.0002",
        "received_amount_atomic": "20000",
        "remaining_amount": "0.0002554",
        "remaining_amount_atomic": "25540",
        "confirmed_amount": "0",
        "confirmed_amount_atomic": "0",
        "destination_address": "bc1q…example",
        "destination_tag": null,
        "quote_expires_at": "2026-08-31T18:15:00Z",
        "payment_uri": "bitcoin:bc1q…example?amount=0.00026",
        "qr_url": "/checkout-api/invoices/…/payment-methods/…/qr.svg?sequence=3&amount_atomic=26000",
        "address_explorer_name": "mempool.space",
        "address_explorer_url": "https://mempool.space/address/…",
        "transaction_count": 0,
        "transactions_truncated": false,
        "transactions": []
      }
    ]
  }
}

Kolom respons

dataobject
invoice_idUUIDselalu

UUID faktur publik.

order_idstring | nullselalu

Referensi pesanan merchant.

descriptionstring | nullselalu

Deskripsi yang ditampilkan kepada pelanggan.

amountdecimal stringselalu

Jumlah faktur.

currencystringselalu

Mata uang faktur.

exchange_rate_spread_percentdecimal stringselalu

Spread kuotasi efektif yang dikunci saat pembuatan, termasuk pengesampingan per faktur.

underpayment_tolerance_percentdecimal stringselalu

Persentase kekurangan yang diterima untuk faktur ini.

statusinvoice statusselalu

Status faktur saat ini.

amount_statusamount statusselalu

none, partial, paid, atau overpaid. Faktur bernilai nol yang secara eksplisit diizinkan diselesaikan dengan none dan tanpa metode pembayaran.

timing_statustiming statusselalu

on_time atau late.

sequenceintegerselalu

Urutan status saat ini.

active_payment_method_idUUID | nullselalu

Metode pembayaran tercantum yang telah menerima dana. Checkout tetap pada metode ini agar kekurangan pembayaran tidak dilanjutkan dengan aset yang tidak kompatibel.

payment_method_lockedbooleanselalu

True setelah pembayaran valid memilih active_payment_method_id.

server_timeRFC 3339 timestampselalu

Jam server yang dicatat untuk respons ini; gunakan dengan expires_at untuk menghindari perbedaan jam perangkat pelanggan.

expires_atRFC 3339 timestampselalu

Tenggat faktur.

expires_in_secondsintegerselalu

Sisa detik utuh pada server_time, dibulatkan ke atas dan dibatasi minimum nol.

payment_openbooleanselalu

True hanya selama faktur new atau processing belum melewati tenggat dan memiliki setidaknya satu metode yang bisa dibayar dengan sisa jumlah.

redirect_urlstring | nullselalu

Tujuan kembali pelanggan setelah penyelesaian berhasil.

cancel_urlstring | nullselalu

Tujuan kembali pelanggan saat pergi tanpa penyelesaian berhasil.

redirect_automaticallybooleanselalu

Kebijakan pengalihan otomatis.

checkout_languagestringselalu

Bahasa checkout.

projectobjectselalu

name, checkout_title, checkout_description, theme, accent_color, dan logo_url.

namestring
checkout_titlestring
checkout_descriptionstring
themestring
accent_colorstring
logo_urlstring
storeobjectselalu

Nama toko publik.

namestring
appearanceobjectselalu

Tampilan efektif: pengesampingan beku per faktur jika diberikan, jika tidak desain toko saat ini. Tidak pernah mengubah kolom keuangan atau peringatan keamanan.

inherit_default_storebooleanselalu

True jika toko bawaan proyek menyediakan tampilan ini. False untuk toko independen dan pengesampingan faktur beku.

invoice_overridebooleanselalu

True jika checkout_appearance diberikan saat pembuatan faktur. Tidak disertakan/null mempertahankan false.

titlestringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

introstringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

outrostringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

intro_font_sizeintegerselalu

Ukuran font dalam piksel: 12, 14, 16, 18, 20, atau 24.

outro_font_sizeintegerselalu

Ukuran font dalam piksel: 12, 14, 16, 18, 20, atau 24.

customer_messagestringselalu

Alias kompatibilitas intro yang sudah tidak disarankan. Gunakan intro untuk integrasi baru.

themesystem | light | dim | darkselalu

Preferensi perangkat pelanggan atau tema tetap.

accent_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

background_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

card_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

button_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

logo_sizestringselalu

small, medium, atau large; left atau center. Gambar dimuat utuh dalam batas, tidak dipotong.

logo_alignmentstringselalu

small, medium, atau large; left atau center. Gambar dimuat utuh dalam batas, tidak dipotong.

imagesobjectselalu

URL logo_light, logo_dark, dan favicon opsional: gambar PNG ternormalisasi, dibatasi cakupannya, dan berasal dari origin yang sama.

show_order_idbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

show_descriptionbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

details_expandedbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

show_project_namebooleanselalu

Merchant 5.6.0+: visibilitas nama header. Keduanya secara bawaan true. Identitas proyek/toko tetap tersedia dalam JSON.

show_store_namebooleanselalu

Merchant 5.6.0+: visibilitas nama header. Keduanya secara bawaan true. Identitas proyek/toko tetap tersedia dalam JSON.

featured_chains[]arrayselalu

Preferensi berurutan, diterapkan hanya pada metode yang sudah ada dalam faktur. Metode yang tidak ada atau nonaktif diabaikan.

featured_asset_ids[]arrayselalu

Preferensi berurutan, diterapkan hanya pada metode yang sudah ada dalam faktur. Metode yang tidak ada atau nonaktif diabaikan.

default_asset_idUUID | nullselalu

Metode awal yang disarankan. Preferensi pelanggan tersimpan yang valid atau metode yang sudah menerima dana diprioritaskan.

messagesobjectselalu
Teks biasa untuk en, de, es, pt-BR, it, ru, zh-CN, fr, ko, dan ja, dengan kunci waiting, confirming, paid, underpaid, dan expired. Bahasa Inggris menjadi cadangan untuk pesan merchant yang belum tersedia. Bersifat tambahan; tidak pernah mengganti status sebenarnya. Konten yang ditulis merchant tidak diterjemahkan otomatis.Detail

Teks biasa untuk en, de, es, pt-BR, it, ru, zh-CN, fr, ko, dan ja, dengan kunci waiting, confirming, paid, underpaid, dan expired. Bahasa Inggris menjadi cadangan untuk pesan merchant yang belum tersedia. Bersifat tambahan; tidak pernah mengganti status sebenarnya. Konten yang ditulis merchant tidak diterjemahkan otomatis.

enobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
deobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
esobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
pt-BRobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
itobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
ruobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
zh-CNobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
frobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
koobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
jaobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
support_emailstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

support_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

terms_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

privacy_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

return_button_textstringselalu

Hanya label opsional. Tujuan sukses/batal dan kebijakan pengalihan tetap milik faktur.

show_return_buttonbooleanselalu

Visibilitas tombol kembali/batal manual; bawaan true. Berlaku pada status aktif dan akhir, bukan pengalihan sukses otomatis. Tersedia mulai merchant 8.1.4.

payment_methods[]object[]selalu

Metode pembayaran yang aman untuk checkout.

payment_railonchain | lightningselalu

Lightning tetap menjadi metode Bitcoin, terpisah dari BTC on-chain. Identifikasi pilihan berdasarkan id intent dan jalur, bukan asset_id saja.

bolt11string | nullselalu

Permintaan Lightning bertanda tangan; null untuk metode on-chain. Jangan pernah membayar setelah payable menjadi false.

payment_hashstring | nullselalu

Hash pembayaran Lightning untuk rekonsiliasi, bukan alamat penerimaan. Null untuk metode on-chain.

idUUIDselalu

Pengenal intent pembayaran.

asset_idUUIDselalu

UUID aset yang digunakan preferensi tampilan; berbeda dari id intent pembayaran faktur ini.

asset_keystringselalu

Kunci aset kanonis.

chain_slugstringselalu

Nama blockchain untuk mesin dan tampilan.

chain_namestringselalu

Nama blockchain untuk mesin dan tampilan.

networkstringselalu

Jaringan pembayaran.

caip_network_idstringselalu

Identitas jaringan kanonis yang digunakan untuk membedakan blockchain terpilih secara jelas.

caip_asset_idstring | nullselalu

Identitas aset kanonis yang persis, termasuk kontrak token atau mint terverifikasi jika berlaku.

asset_namestringselalu

Nilai tampilan aset pembayaran.

symbolstringselalu

Nilai tampilan aset pembayaran.

asset_icon_urlstring | nullselalu

Ikon aset dalam cache lokal dari origin yang sama, atau null jika tidak ada pemetaan CoinGecko terverifikasi.

asset_kindnative | tokenselalu

Membedakan mata uang native dari pembayaran kontrak/mint.

contract_addressstring | nullselalu

Kontrak ERC-20 kanonis atau mint SPL untuk token; null untuk mata uang native.

token_standarderc20 | spl-token | nullselalu

Runtime token terverifikasi, atau null untuk mata uang native.

asset_decimalsintegerselalu

Presisi unit atomik: 11 untuk millisatoshi BTC Lightning, 8 untuk satoshi BTC on-chain.

statusintent statusselalu

Status metode pembayaran saat ini.

payablebooleanselalu

True hanya jika metode persis ini saat ini bisa menerima pembayaran; false untuk metode nonaktif setelah aset lain menerima dana.

finality_modestringselalu

Kebijakan finalitas.

required_confirmationsintegerselalu

Kebijakan finalitas.

expected_amountdecimalselalu
Kuotasi terkunci penuh dalam unit tampilan dan on-chain sebenarnya. Stablecoin fiat yang dikenali menggunakan paling banyak dua desimal kuotasi, selalu dibulatkan ke atas setelah spread; aset lain menggunakan presisi adaptif. Desimal token sebenarnya, dana diterima, dan sisa pembayaran parsial tetap presisi. Gunakan jumlah yang dikembalikan tanpa perubahan.Detail

Kuotasi terkunci penuh dalam unit tampilan dan on-chain sebenarnya. Stablecoin fiat yang dikenali menggunakan paling banyak dua desimal kuotasi, selalu dibulatkan ke atas setelah spread; aset lain menggunakan presisi adaptif. Desimal token sebenarnya, dana diterima, dan sisa pembayaran parsial tetap presisi. Gunakan jumlah yang dikembalikan tanpa perubahan.

expected_amount_atomicinteger stringselalu
Kuotasi terkunci penuh dalam unit tampilan dan on-chain sebenarnya. Stablecoin fiat yang dikenali menggunakan paling banyak dua desimal kuotasi, selalu dibulatkan ke atas setelah spread; aset lain menggunakan presisi adaptif. Desimal token sebenarnya, dana diterima, dan sisa pembayaran parsial tetap presisi. Gunakan jumlah yang dikembalikan tanpa perubahan.Detail

Kuotasi terkunci penuh dalam unit tampilan dan on-chain sebenarnya. Stablecoin fiat yang dikenali menggunakan paling banyak dua desimal kuotasi, selalu dibulatkan ke atas setelah spread; aset lain menggunakan presisi adaptif. Desimal token sebenarnya, dana diterima, dan sisa pembayaran parsial tetap presisi. Gunakan jumlah yang dikembalikan tanpa perubahan.

minimum_payment_amountdecimalselalu

Ambang penyelesaian yang diterima setelah menerapkan toleransi kekurangan pembayaran.

minimum_payment_amount_atomicinteger stringselalu

Ambang penyelesaian yang diterima setelah menerapkan toleransi kekurangan pembayaran.

received_amountdecimalselalu

Jumlah teramati.

received_amount_atomicinteger stringselalu

Jumlah teramati.

remaining_amountdecimal stringselalu

Jumlah tampilan presisi yang masih diperlukan untuk mencapai ambang diterima, dibatasi minimum nol.

remaining_amount_atomicinteger stringselalu

Kekurangan menuju ambang diterima dalam unit atomik. Ini bukan jumlah pembayaran yang diminta: toleransi hanya memengaruhi penerimaan.

confirmed_amountdecimalselalu

Jumlah terkonfirmasi/final.

confirmed_amount_atomicinteger stringselalu

Jumlah terkonfirmasi/final.

destination_addressstringselalu

Tujuan on-chain dan referensi opsional. Untuk Lightning, ini hash pembayaran tanpa tag; bayar bolt11/payment_uri sebagai gantinya.

destination_tagstring|nullselalu

Tujuan on-chain dan referensi opsional. Untuk Lightning, ini hash pembayaran tanpa tag; bayar bolt11/payment_uri sebagai gantinya.

quote_expires_atRFC 3339 timestampselalu

Kedaluwarsa kuotasi.

payment_uristring | nullselalu
Permintaan sesuai blockchain: ERC-681, Solana Pay, URI native, atau lightning:<bolt11>. Permintaan yang memuat jumlah menggunakan jumlah penuh yang diharapkan dikurangi dana diterima, tidak pernah ambang toleransi. Null jika payable false, termasuk setelah kekurangan yang ditoleransi diterima. QR Lightning mengodekan permintaan Lightning penuh, bukan hash pembayaran.Detail

Permintaan sesuai blockchain: ERC-681, Solana Pay, URI native, atau lightning:<bolt11>. Permintaan yang memuat jumlah menggunakan jumlah penuh yang diharapkan dikurangi dana diterima, tidak pernah ambang toleransi. Null jika payable false, termasuk setelah kekurangan yang ditoleransi diterima. QR Lightning mengodekan permintaan Lightning penuh, bukan hash pembayaran.

qr_urlpath | nullselalu

Path QR SVG dari origin yang sama, dengan revisi berdasarkan sequence dan sisa presisi, atau null jika payable false. SVG bersifat no-store.

address_explorer_namestring|nullselalu

Cadangan penjelajah mainnet tervalidasi jika didukung.

address_explorer_urlstring|nullselalu

Cadangan penjelajah mainnet tervalidasi jika didukung.

transaction_countintegerselalu

Total transaksi publik valid yang berbeda yang teramati untuk metode ini.

transactions_truncatedbooleanselalu

True jika transaction_count melebihi daftar transaksi terbaru yang dikembalikan.

transactions[]object[]selalu

Hingga 10 transaksi publik valid terbaru. Total diterima yang presisi tetap independen dari batas tampilan ini.

transaction_idstringselalu

Pengenal transaksi teramati.

statusdetected | confirming | finalselalu

Status observasi publik.

confirmationsintegerselalu

Jumlah konfirmasi teramati.

block_heightinteger | nullselalu

Ketinggian blok/buku besar teramati.

explorer_namestringjika dikembalikan

Nama penjelajah tetap yang tervalidasi.

explorer_urlstringjika dikembalikan

URL penjelajah mainnet tetap yang tervalidasi.

Catatan penggunaan
  • Token bearer tidak diperlukan.
  • Cache-Control adalah no-store dan pengindeksan pencarian dinonaktifkan.
  • Perlakukan invoice_id sebagai data yang memberikan akses kepada pelanggan; hindari memublikasikannya tanpa perlu.
  • asset_icon_url adalah aset lokal dari origin yang sama; checkout pelanggan tidak perlu menghubungi CoinGecko untuk merendernya.
  • Jika destination_tag bukan null, tampilkan dan salin di samping alamat: ini destination tag XRP, ID memo Stellar, atau komentar faktur TON yang wajib dan harus dikirim persis.
  • Untuk token terverifikasi, asset_kind adalah token, contract_address mengidentifikasi kontrak ERC-20 atau mint SPL persis, token_standard mengidentifikasi jalur, dan payment_uri memuat identitas token tersebut.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETPratinjau checkout toko/invoice/preview/{project_id}Publik

Merender tampilan toko tersimpan dengan jumlah ilustratif dan metadata aset diterima yang nyata. Beralih antara contoh waiting, confirming, paid, underpaid, dan expired tanpa membuat pembayaran.

Autentikasi & header

Publik

Parameter path

project_idUUIDwajib

UUID proyek yang disalin ke tautan pratinjau oleh konsol terautentikasi.

Parameter kueri

store_idUUID,opsional

Toko milik proyek ini. Jangan sertakan untuk menggunakan toko pertama/bawaannya.

statestring,opsional

waiting, confirming, paid, underpaid, atau expired. Ilustrasi hanya di browser.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/invoice/preview/YOUR_PROJECT_ID?store_id=YOUR_STORE_ID&state=confirming" \
  --output 'checkout-preview.html'

Respons 200 text/html

Contoh respons
<!doctype html>
<!-- Hosted branding preview; no invoice is created -->
Catatan penggunaan
  • Pratinjau hanya untuk tampilan merek dan tidak boleh dikirim ke pelanggan sebagai permintaan pembayaran.
  • Tanpa alamat penerimaan, QR yang bisa dibayar, tindakan dompet, pengalihan, atau polling pembayaran. Contoh tidak mengubah status faktur sebenarnya.
  • Respons bersifat no-store, noindex, dan tidak bisa disematkan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETData pratinjau checkout/checkout-api/previews/{project_id}Publik

Mengembalikan tampilan toko efektif dan metadata aset diterima yang aman. payment_methods tetap kosong; preview_methods tidak berisi alamat pembayaran, kuotasi, atau data dompet pribadi.

Autentikasi & header

Publik

Parameter path

project_idUUIDwajib

UUID proyek dari tautan pratinjau konsol.

Parameter kueri

store_idUUID,opsional

Harus milik proyek ini; ID yang tidak cocok mengembalikan 404. Kolom kueri tidak dikenal ditolak.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/checkout-api/previews/YOUR_PROJECT_ID?store_id=YOUR_STORE_ID" \
  --header 'Accept: application/json'

Respons 200 application/json

Contoh respons
{
  "data": {
    "preview": true,
    "invoice_id": "YOUR_PROJECT_ID",
    "amount": "100.00",
    "currency": "USD",
    "project": {
      "name": "Example project",
      "checkout_title": "Complete your payment",
      "checkout_description": "Choose a network and send the exact amount shown.",
      "theme": "system",
      "accent_color": "#42e39b",
      "logo_url": "/checkout-api/previews/…/logo/…/image.png"
    },
    "appearance": {"inherit_default_store": true, "theme": "system", "accent_color": "#42E39B", "images": {}},
    "preview_methods": [],
    "payment_methods": []
  }
}

Kolom respons

dataobject
previewboolean
invoice_idstring
amountstring
currencystring
projectobject
namestring
checkout_titlestring
checkout_descriptionstring
themestring
accent_colorstring
logo_urlstring
appearanceobject
inherit_default_storebooleanselalu

True jika toko bawaan proyek menyediakan tampilan ini. False untuk toko independen dan pengesampingan faktur beku.

invoice_overridebooleanselalu

True jika checkout_appearance diberikan saat pembuatan faktur. Tidak disertakan/null mempertahankan false.

titlestringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

introstringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

outrostringselalu

Judul merchant, pesan atas, dan pesan bawah berupa teks biasa. intro menggantikan customer_message; teks lama yang tersimpan dipertahankan. Jangan pernah mengevaluasi sebagai markup.

intro_font_sizeintegerselalu

Ukuran font dalam piksel: 12, 14, 16, 18, 20, atau 24.

outro_font_sizeintegerselalu

Ukuran font dalam piksel: 12, 14, 16, 18, 20, atau 24.

customer_messagestringselalu

Alias kompatibilitas intro yang sudah tidak disarankan. Gunakan intro untuk integrasi baru.

themesystem | light | dim | darkselalu

Preferensi perangkat pelanggan atau tema tetap.

accent_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

background_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

card_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

button_colorstringselalu

Warna #RRGGBB ketat. Warna opsional kosong untuk nilai otomatis; kontras latar depan dihitung.

logo_sizestringselalu

small, medium, atau large; left atau center. Gambar dimuat utuh dalam batas, tidak dipotong.

logo_alignmentstringselalu

small, medium, atau large; left atau center. Gambar dimuat utuh dalam batas, tidak dipotong.

imagesobjectselalu

URL logo_light, logo_dark, dan favicon opsional: gambar PNG ternormalisasi, dibatasi cakupannya, dan berasal dari origin yang sama.

show_order_idbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

show_descriptionbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

details_expandedbooleanselalu

Visibilitas ID pesanan, deskripsi di bawah judul, dan bentangan awal ID pesanan. Jumlah tetap terlihat; ini kontrol tampilan, bukan penyamaran data.

show_project_namebooleanselalu

Merchant 5.6.0+: visibilitas nama header. Keduanya secara bawaan true. Identitas proyek/toko tetap tersedia dalam JSON.

show_store_namebooleanselalu

Merchant 5.6.0+: visibilitas nama header. Keduanya secara bawaan true. Identitas proyek/toko tetap tersedia dalam JSON.

featured_chains[]arrayselalu

Preferensi berurutan, diterapkan hanya pada metode yang sudah ada dalam faktur. Metode yang tidak ada atau nonaktif diabaikan.

featured_asset_ids[]arrayselalu

Preferensi berurutan, diterapkan hanya pada metode yang sudah ada dalam faktur. Metode yang tidak ada atau nonaktif diabaikan.

default_asset_idUUID | nullselalu

Metode awal yang disarankan. Preferensi pelanggan tersimpan yang valid atau metode yang sudah menerima dana diprioritaskan.

messagesobjectselalu
Teks biasa untuk en, de, es, pt-BR, it, ru, zh-CN, fr, ko, dan ja, dengan kunci waiting, confirming, paid, underpaid, dan expired. Bahasa Inggris menjadi cadangan untuk pesan merchant yang belum tersedia. Bersifat tambahan; tidak pernah mengganti status sebenarnya. Konten yang ditulis merchant tidak diterjemahkan otomatis.Detail

Teks biasa untuk en, de, es, pt-BR, it, ru, zh-CN, fr, ko, dan ja, dengan kunci waiting, confirming, paid, underpaid, dan expired. Bahasa Inggris menjadi cadangan untuk pesan merchant yang belum tersedia. Bersifat tambahan; tidak pernah mengganti status sebenarnya. Konten yang ditulis merchant tidak diterjemahkan otomatis.

enobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
deobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
esobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
pt-BRobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
itobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
ruobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
zh-CNobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
frobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
koobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
jaobject
waitingstring
confirmingstring
paidstring
underpaidstring
expiredstring
support_emailstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

support_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

terms_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

privacy_urlstringselalu

Kontak dan tautan HTTPS opsional, tanpa kredensial URL. Tautan eksternal terbuka di jendela baru.

return_button_textstringselalu

Hanya label opsional. Tujuan sukses/batal dan kebijakan pengalihan tetap milik faktur.

show_return_buttonbooleanselalu

Visibilitas tombol kembali/batal manual; bawaan true. Berlaku pada status aktif dan akhir, bukan pengalihan sukses otomatis. Tersedia mulai merchant 8.1.4.

preview_methods[]array
payment_methods[]array
Catatan penggunaan
  • Token bearer tidak diterima atau diperlukan.
  • Tidak ada faktur, tujuan, dompet, transaksi, IPN, webhook, atau metadata merchant yang dikembalikan.
  • Gunakan konsol terautentikasi untuk memperoleh tautan pratinjau domain pay yang benar.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETGambar checkout toko/checkout-api/invoices/{invoice_id}/appearance-images/{kind}/{revision}/image.pngPublik

Mengembalikan logo toko atau favicon ternormalisasi milik faktur ini. Gunakan URL appearance.images dari data checkout.

Autentikasi & header

Publik

Parameter path

invoice_idUUIDwajib

UUID faktur publik.

kindenumwajib

logo_light, logo_dark, atau favicon.

revisionUUIDwajib

Revisi gambar saat ini.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/checkout-api/invoices/YOUR_PUBLIC_INVOICE_ID/appearance-images/logo_light/YOUR_IMAGE_REVISION/image.png" \
  --output 'store-logo.png'

Respons 200 image/png

Contoh respons
(binary PNG response)
Catatan penggunaan
  • Gunakan appearance.images dari JSON checkout. Gambar faktur beku tetap berfungsi setelah toko sumber mengganti atau menghapus unggahan. Revisi yang dihapus secara eksplisit, salah faktur, salah jenis, dan tidak dikenal mengembalikan 404; snapshot tidak pernah beralih ke gambar toko saat ini.
  • Tanpa pengesampingan faktur, gambar toko efektif saat ini digunakan dan revisi yang diganti/dihapus mengembalikan 404. Hanya PNG, nosniff, dan caching privat.
  • Unggahan gambar toko menerima PNG, JPEG, atau WebP dengan ukuran terbatas dalam konsol terautentikasi; tidak pernah SVG, HTML, atau URL gambar jarak jauh.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETGambar pratinjau toko/checkout-api/previews/{project_id}/stores/{store_id}/appearance-images/{kind}/{revision}/image.pngPublik

Mengembalikan gambar pratinjau ternormalisasi hanya untuk proyek, toko, jenis, dan revisi terkini yang cocok.

Autentikasi & header

Publik

Parameter path

project_idUUIDwajib

UUID proyek.

store_idUUIDwajib

Toko milik proyek.

kindenumwajib

logo_light, logo_dark, atau favicon.

revisionUUIDwajib

Revisi gambar saat ini.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/checkout-api/previews/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/appearance-images/logo_light/YOUR_IMAGE_REVISION/image.png" \
  --output 'store-preview-logo.png'

Respons 200 image/png

Contoh respons
(binary PNG response)
Catatan penggunaan
  • Gunakan appearance.images dari data pratinjau. ID tidak dikenal atau tidak cocok mengembalikan 404. Tidak ada informasi dompet atau pembayaran yang ditampilkan.

Kesalahan

Kode kesalahan & aturan percobaan ulang

GETGambar QR pembayaran/checkout-api/invoices/{invoice_id}/payment-methods/{intent_id}/qr.svgPublik

Menghasilkan QR SVG 512×512 untuk payload pembayaran yang persis dan sesuai blockchain dari metode pembayaran faktur.

Autentikasi & header

Publik

Parameter path

invoice_idUUIDwajib

UUID faktur publik.

intent_idUUIDwajib

id metode pembayaran dari JSON checkout.

Permintaan

curl --fail-with-body --max-time 30 \
  --request GET \
  --url "https://pay.example.com/checkout-api/invoices/YOUR_PUBLIC_INVOICE_ID/payment-methods/YOUR_INTENT_ID/qr.svg" \
  --output 'payment-qr.svg'

Respons 200 image/svg+xml

Contoh respons
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">…</svg>
Catatan penggunaan
  • Token bearer tidak diperlukan.
  • Gunakan qr_url dengan revisi berdasarkan sequence dan sisa jumlah yang dikembalikan JSON checkout; SVG bersifat private dan no-store.
  • Setelah pembayaran parsial, QR meminta sisa jumlah yang presisi dan tetap terkunci pada aset tersebut.
  • Mengembalikan 409 setelah kedaluwarsa, selesai, atau saat metode lain aktif; mengembalikan payment_qr_unavailable (422) jika permintaan terlalu besar untuk dienkode.

Kesalahan

Kode kesalahan & aturan percobaan ulang

Referensi untuk Wholly Crypto 8.3.2. Untuk versi yang kamu instal, buka Pengaturan → Akses API → Dokumentasi di konsolmu. Lihat rilis.