Langsung ke konten utama
POST
curl

Dompet swakelola

Ketika dompet pihak lawan dinyatakan swakelola (counterparty.payment_method.method_type: "unhosted_wallet"), transfer menunggu di UNCONFIRMED_OWNERSHIP. Memanggil endpoint ini dengan confirmed: true mencatat bahwa pelanggan Anda telah memverifikasi siapa yang mengendalikan dompet tersebut, lalu transfer diselesaikan (COMPLETED), baik untuk penarikan keluar maupun setoran masuk. Setoran masuk yang hash on-chain-nya sudah diketahui akan beralih ke FINISHED. Dompet yang diverifikasi adalah milik pihak lawan: tujuan penarikan keluar, atau sumber (dompet pengirim) pada setoran masuk. Didit menambahkannya ke buku alamat dompet dengan status kepemilikan terverifikasi atas nama pihak lawan, sehingga dompet tersebut dicocokkan dengan nama pihak lawan (pengirim, untuk setoran masuk). Jika buku alamat sudah memuat dompet tersebut dengan nama pemegang yang berbeda, transfer beralih ke COUNTERPARTY_MISMATCHED_DATA sebagai gantinya. Jika transfer tidak menyebutkan dompet pihak lawan sama sekali, sertakan wallet_address di badan permintaan. Jika tidak ada alamat dompet yang diberikan, baik oleh transfer maupun oleh permintaan, permintaan ditolak dengan 400. confirmed: false menolak transfer (COUNTERPARTY_VASP_GENERAL_DECLINE).

Otorisasi

x-api-key
string
header
wajib

Kunci API aplikasi Anda, dari Developers -> API keys di Business Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat https://docs.didit.me/console/api-keys.

Parameter Path

transaction_id
string<uuid>
wajib

UUID stabil dari Didit untuk transaksi yang disimpan aplikasi Anda untuk transfer ini: transaksi sisi penerima pada transfer jalur INTERNAL, atau transaksi yang Anda buat (keluar atau masuk) ketika dompet pihak lawan dinyatakan swakelola.

Body

application/json
confirmed
boolean
wajib

true untuk mengonfirmasi kepemilikan, false untuk menolaknya.

wallet_address
string
default:""

Transfer TRP masuk: alamat pembayaran yang dikembalikan Didit ke VASP pengirim saat Anda menyetujuinya. Default-nya adalah alamat entri buku alamat yang cocok, lalu beneficiary_data.wallet_address. Pada transfer dompet swakelola yang dideklarasikan yang tidak menyebutkan dompet pihak lawan, dompet yang kepemilikannya Anda verifikasi; tanpanya permintaan ditolak dengan 400. Diabaikan untuk transfer lainnya.

Respons

Transfer yang diperbarui. Untuk transfer masuk, originator_data/beneficiary_data milik pihak lawan tetap disamarkan (data_masked: true) hingga kepemilikan dikonfirmasi, kemudian data_unmasked mencatat kapan, mengapa, dan oleh siapa.

Objek transfer lengkap yang dikembalikan oleh endpoint konfirmasi kepemilikan dan penyelesaian/pembatalan. Selama kepemilikan dompet transfer masuk belum dikonfirmasi, originator_data dan beneficiary_data pihak lawan akan dikembalikan dalam kondisi disamarkan (huruf pertama dari setiap kata dipertahankan; dompet, blockchain, dan perutean VASP tetap dapat dibaca) dan data_masked bernilai true.

uuid
string<uuid>
status
enum<string>
Opsi yang tersedia:
AWAITING_COUNTERPARTY,
ON_HOLD,
COMPLETED,
FINISHED,
CANCELLED,
EXPIRED,
COUNTERPARTY_MISMATCHED_DATA,
COUNTERPARTY_VASP_NOT_FOUND,
COUNTERPARTY_VASP_NOT_REACHABLE,
UNCONFIRMED_OWNERSHIP,
COUNTERPARTY_VASP_GENERAL_DECLINE,
NOT_ENOUGH_COUNTERPARTY_DATA,
NOT_APPLICABLE
direction
enum<string>
Opsi yang tersedia:
INBOUND,
OUTBOUND
rail
enum<string> | null

Jalur yang digunakan untuk merutekan transfer, atau null ketika tidak ada jalur yang dipilih (misalnya di bawah ambang batas, dompet pihak lawan swakelola, registrasi setelah deposit, atau tidak ada pihak lawan yang dapat dijangkau). INTERNAL berarti kedua belah pihak adalah aplikasi Didit; EMAIL berarti pihak lawan dijangkau melalui tautan pengambilan yang dikirim lewat email. TEST_VASP berarti Test VASP Didit merespons transfer sandbox. Melalui GTR, VERIFYVASP, dan SYGNA, Didit membaca jawaban pihak lawan dari respons jaringan atau dengan melakukan polling setiap 5 menit. TRUST hanya mengirim, sehingga transfer TRUST tetap berstatus AWAITING_COUNTERPARTY hingga kedaluwarsa. Jalur jaringan hanya digunakan ketika Anda telah menghubungkan keanggotaan Anda sendiri untuk jaringan tersebut. Jalur dipilih setelah pembuatan transaksi menghasilkan respons, sehingga nilainya null dalam respons tersebut.

Opsi yang tersedia:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
Contoh:

"ivms101.2023"

required
boolean
ownership_confirmed
boolean | null
deadline_at
string<date-time> | null
timeline
object[]
counterparty_vasp
object | null
originator_data
object

Pihak pengirim. Untuk transfer masuk, nilai pihak lawan disamarkan sampai kepemilikan dikonfirmasi.

beneficiary_data
object

Pihak penerima. Untuk transfer masuk, nilai pihak lawan disamarkan hingga kepemilikan dikonfirmasi.

name_match
object · null · null

Perbandingan nama yang menentukan transfer, atau null hingga perbandingan dijalankan. Saat para pihak disamarkan, dan pada salinan pertukaran INTERNAL milik pelanggan lain, transfer_name, compared_name, matched_names, dan mismatched_names disembunyikan. score dan matched bisa tidak sejalan: matched mengikuti tingkat ketatnya, sedangkan score adalah kesamaan dari kedua nama lengkap tersebut.

data_match
object | null

Perbandingan kolom demi kolom antara data pihak transfer dan apa yang diketahui pihak lain tentang pemegang dompet. Ini menyebutkan kolom dan hasil, tidak pernah nilai, sehingga tetap dapat dibaca sementara data pihak lawan disamarkan. Bernilai null sampai perbandingan dijalankan.

mismatched_fields
string[]

Pintasan untuk data_match.mismatched_fields. Kosong jika tidak ada perbedaan.

data_unmasked
object | null

Catatan audit saat data pihak lawan dibuka penyamarannya. Bernilai null selama data masih disamarkan, dan untuk transfer keluar.

data_masked
boolean

True selama data pribadi pihak lawan disamarkan dalam respons ini.

created_at
string<date-time>
delivery
object | null

Status pesan terbaru yang harus dikirimkan transfer ini ke pihak lain. Bernilai null jika transfer tidak pernah diharuskan mengirimkannya (misalnya di bawah threshold_amount, dompet swakelola yang dideklarasikan, atau registrasi sunrise).

discovery
object[]

Cara Didit mencari pihak lawan, satu entri per langkah yang dijalankan. Kosong jika tidak ada penemuan yang dijalankan, misalnya pada transfer masuk.

reason
string

Alasan transfer COUNTERPARTY_VASP_NOT_FOUND atau COUNTERPARTY_VASP_NOT_REACHABLE tertahan; "" untuk status lainnya. Pengiriman yang gagal menentukannya terlebih dahulu, hanya pada COUNTERPARTY_VASP_NOT_REACHABLE: email_undeliverable (penyedia email menolak email kepatuhan dan tidak ada alamat tersisa untuk dicoba: saat dikirim, pada pengingat, atau sebagai pantulan permanen yang dilaporkan kemudian) atau delivery_failed (jalur pengiriman gagal total: jalur jaringan menolak pesan atau kehabisan percobaan coba lagi, host identitas TRP tidak menjawab, atau host TRP pihak lawan tidak menerima permintaan informasi). Jika tidak, jejak discovery yang menentukannya: awaiting_end_user (tidak ada langkah yang menyebutkan pihak lawan yang dapat dijangkau Didit), directory_match_no_route (suatu langkah menyebutkan VASP direktori yang tidak memiliki rute), picked_member_without_proven_wallet (pengguna akhir memilih pelanggan Didit yang belum membuktikan kendali atas dompet), atau no_directory_match saat jejak tidak memberikan alasan lain. Pengiriman ulang akan memajukan transfer, sehingga alasannya dihapus. Lihat Mengapa transfer tertahan.

next_actions
object[]

Apa yang melanjutkan transfer; [] untuk status apa pun selain COUNTERPARTY_VASP_NOT_FOUND atau COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable menawarkan update_compliance_email, lalu resend. delivery_failed menawarkan resend. Alasan penemuan menawarkan select_counterparty_vasp, declare_self_hosted, add_vasp_hint, dan resend.

chain_details
object

Bagaimana rantai transfer menamai kedua dompetnya, ketika melibatkan lebih dari satu alamat yang membayar satu sama lain. Kosong ({}) untuk transfer rantai akun (EVM, Solana, Tron), di mana kedua alamat tersebut adalah dompetnya. Pencocokan, perutean, dan buku alamat membaca dompet dari sini terlebih dahulu.

Terakhir diubah pada 7 November 2026