Skip to content

Direct Debit BI-FAST

Direct Debit BI-FAST

Registrasi e-mandate dan pembayaran BI-FAST, beserta tipe notifikasi masuknya.

resp, err := transferdebit.DirectDebitBIFASTPayment(ctx, transport, hb, transferdebit.DirectDebitBIFASTPaymentRequest{
	PartnerReferenceNo: "2020102900000000000001",
	CustomerReference: "...",
	BeneficiaryAccountNo: "1234567890",
	BeneficiaryAccountName: "Jane Doe",
	TransactionDate: "2026-09-14T10:00:00+07:00",
	BankCode: "...",
	SourceAccountNo: "1234567890",
	SourceAccountName: "Jane Doe",
	EMandateReffID: "2026-09-14T10:00:00+07:00",
})
if err != nil {
	// errors.Is(err, snap.ErrBadRequest), snap.ErrUnauthorized, etc.
}

DirectDebitBIFASTEMandateRegistration

DirectDebitBIFASTEMandateRegistration memanggil endpoint SNAP Registrasi e-Mandate (Service Code 70, HTTP POST). Isi hb dengan semua field kecuali BodyDirectDebitBIFASTEMandateRegistration melakukan marshal request itu sendiri dan memakai byte yang sama persis untuk signing maupun body di wire.

Operasi ini tidak idempotent dan package ini tidak melakukan retry. Bila memanggil ulang setelah gagal atau timeout, gunakan X-EXTERNAL-ID yang sama, karena deteksi duplikat di server mengacu pada header itu.

func DirectDebitBIFASTEMandateRegistration(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req DirectDebitBIFASTEMandateRegistrationRequest) (DirectDebitBIFASTEMandateRegistrationResponse, error)

Request — DirectDebitBIFASTEMandateRegistrationRequest

DirectDebitBIFASTEMandateRegistrationRequest adalah request body untuk Registrasi e-Mandate. bankCode, sourceAccountNo, sourceAccountName, billerId, billerName, customerId, dan expiredDatetime bersifat Wajib.

FieldTypePresence
partnerReferenceNostringOpsional
bankCodestringWajib
sourceAccountNostringWajib
sourceAccountNamestringWajib
maxAmount*snap.MoneyOpsional
billerIdstringWajib
billerNamestringWajib
customerIdstringWajib
expiredDatetimestringWajib
additionalInfojson.RawMessageOpsional

Response — DirectDebitBIFASTEMandateRegistrationResponse

DirectDebitBIFASTEMandateRegistrationResponse adalah response body untuk Registrasi e-Mandate. referenceNo bersifat Kondisional — hanya muncul saat berhasil. eMandateReffId bersifat Wajib; gunakan nilai ini pada panggilan pembayaran di bawah.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
referenceNostringOpsional
partnerReferenceNostringOpsional
eMandateReffIdstringWajib
additionalInfojson.RawMessageOpsional

DirectDebitBIFASTPayment

DirectDebitBIFASTPayment memanggil endpoint SNAP Trigger Direct Debit Transfer / Payment (Service Code 71, HTTP POST). Isi hb dengan semua field kecuali BodyDirectDebitBIFASTPayment melakukan marshal request itu sendiri.

Operasi ini tidak idempotent dan package ini tidak melakukan retry. Bila memanggil ulang setelah gagal atau timeout, gunakan X-EXTERNAL-ID yang sama, karena deteksi duplikat di server mengacu pada header itu.

func DirectDebitBIFASTPayment(ctx context.Context, t *snap.Transport, hb snap.HeaderBuilder, req DirectDebitBIFASTPaymentRequest) (DirectDebitBIFASTPaymentResponse, error)

Request — DirectDebitBIFASTPaymentRequest

DirectDebitBIFASTPaymentRequest adalah request body untuk Trigger Direct Debit Transfer / Payment. eMandateReffId berasal dari panggilan e-Mandate Registration sebelumnya.

FieldTypePresence
partnerReferenceNostringWajib
currencystringOpsional
customerReferencestringWajib
feeTypestringOpsional
remarkstringOpsional
beneficiaryAccountNostringWajib
beneficiaryAccountNamestringWajib
transactionDatestringWajib
bankCodestringWajib
sourceAccountNostringWajib
sourceAccountNamestringWajib
amount*snap.MoneyOpsional
eMandateReffIdstringWajib
additionalInfojson.RawMessageOpsional

Response — DirectDebitBIFASTPaymentResponse

DirectDebitBIFASTPaymentResponse adalah response body untuk Trigger Direct Debit Transfer / Payment. referenceNo bersifat Kondisional — hanya muncul saat berhasil.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib
referenceNostringOpsional
partnerReferenceNostringOpsional
additionalInfojson.RawMessageOpsional

Direct Debit BI-FAST Notification

Hanya masuk (inbound) — package ini tidak memanggil endpoint untuk hal ini. Partner/switcher yang mengirim POST ke URL callback Anda; unmarshal body ke DirectDebitBIFASTNotificationRequest setelah memverifikasinya dengan snap.ServerVerifier (lihat Verifying inbound requests), lalu balas dengan bentuk di bawah.

Diterima — DirectDebitBIFASTNotificationRequest

DirectDebitBIFASTNotificationRequest adalah request body untuk Notify (Service Code 72) — callback settlement yang diterima PJP, bukan panggilan yang dilakukan package ini. Buat HTTP handler Anda sendiri untuk path ini, autentikasi panggilan masuknya dengan ServerVerifier.VerifyTransactionRequest, lalu json.Unmarshal body ke tipe ini.

originalReferenceNo, transactionStatus, eMandateReffId, sourceAccountNo, dan sourceAccountName bersifat Wajib; field lainnya Opsional.

Field status di sini bernama transactionStatus, bukan latestTransactionStatus seperti di tempat lain pada package ini — itu penamaan asli dari standar, dipertahankan apa adanya tanpa dinormalisasi.
FieldTypePresence
originalReferenceNostringWajib
originalPartnerReferenceNostringOpsional
originalExternalIdstringOpsional
transactionStatusstringWajib
transactionStatusDescstringOpsional
eMandateReffIdstringWajib
sourceAccountNostringWajib
sourceAccountNamestringWajib
amount*snap.MoneyOpsional
traceNostringOpsional
additionalInfojson.RawMessageOpsional

Handler Anda membalas dengan — DirectDebitBIFASTNotificationResponse

DirectDebitBIFASTNotificationResponse hanya berisi envelope — cuma responseCode dan responseMessage, tidak ada field lain.

FieldTypePresence
responseCodestringWajib
responseMessagestringWajib