QFAST API Documentation
  1. Webhook
  • Introduction
  • Authentication
  • Onboarding Flow
  • Loan Flow
  • Disbursement Flow
  • Repayment Flow
  • Area Reference
  • API
    • Obtain an Access Token
      POST
    • Onboarding Personal
      POST
    • Get Onboarding Status
      GET
    • Submit Loan
      POST
    • Update Loan
      PATCH
    • Get Loan
      GET
  • Webhook
    • Onboarding Webhooks
    • Loan Webhooks
    • Disbursement Webhooks
    • Repayment Webhooks
  1. Webhook

Disbursement Webhooks

Disbursement webhooks notify your system when a disbursement transfer succeeds or fails. The disbursement is initiated through the QFAST dashboard — your system only needs to listen for these events.
Configure your webhook URL in QFAST's lender settings.
Every request includes an HMAC-SHA256 signature in the Signature header. Verify it before processing — see Webhook Security.

Event: disbursement.succeeded#

Fired when funds are successfully transferred to the borrower's wallet. At this point, the loan transitions to ACTIVE.

Headers#

HeaderValue
Content-Typeapplication/json
Eventdisbursement.succeeded
SignatureHMAC-SHA256 of the body.

Payload Structure#

FieldTypeDescription
eventStringAlways disbursement.succeeded.
timestampStringEvent time in ISO 8601 format (e.g., 2026-05-11T12:00:00+07:00).
data.disbursement_idUUIDDisbursement identifier.
data.loan_idUUIDAssociated loan identifier.
data.reference_account_numberStringYour reference number for this loan.
data.amountString (decimal)Amount transferred to borrower's wallet, in IDR (e.g., "4950000.00").
data.disbursed_atString (ISO 8601)|nullDisbursement timestamp (e.g., 2026-05-11T12:00:00+07:00).

Example#

{
  "event": "disbursement.succeeded",
  "timestamp": "2026-05-11T12:00:00+07:00",
  "data": {
    "disbursement_id": "d1e2f3a4-b5c6-7890-def0-123456789abc",
    "loan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "reference_account_number": "LND-ACC-2026-0001",
    "amount": "4950000.00",
    "disbursed_at": "2026-05-11T12:00:00+07:00"
  }
}

Event: disbursement.failed#

Fired when the transfer to the borrower's wallet fails.

Headers#

HeaderValue
Content-Typeapplication/json
Eventdisbursement.failed
SignatureHMAC-SHA256 of the body.

Payload Structure#

FieldTypeDescription
eventStringAlways disbursement.failed.
timestampStringEvent time in ISO 8601 format (e.g., 2026-05-11T12:00:00+07:00).
data.disbursement_idUUIDDisbursement identifier.
data.loan_idUUIDAssociated loan identifier.
data.reference_account_numberStringYour reference number for this loan.
data.amountString (decimal)Amount that was attempted, in IDR (e.g., "4950000.00").
data.failure_reasonStringFailure reason (e.g. insufficient balance, etc.).
data.failed_atString (ISO 8601)|nullFailure timestamp (e.g., 2026-05-11T12:00:00+07:00).

Example#

{
  "event": "disbursement.failed",
  "timestamp": "2026-05-11T12:00:00+07:00",
  "data": {
    "disbursement_id": "d1e2f3a4-b5c6-7890-def0-123456789abc",
    "loan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "reference_account_number": "LND-ACC-2026-0001",
    "amount": "4950000.00",
    "failure_reason": "Insufficient escrow balance",
    "failed_at": "2026-05-11T12:00:00+07:00"
  }
}
Previous
Loan Webhooks
Next
Repayment Webhooks
Built with