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

Loan Webhooks

QFAST notifies your system when a loan is created and when it becomes active.
Every request includes an HMAC-SHA256 signature in the Signature header. Verify it before processing — see Webhook Security.

Event: loan.submitted#

Fired after a successful Submit Loan call. Confirms the loan has been created.

Headers#

HeaderValue
Content-Typeapplication/json
Eventloan.submitted
SignatureHMAC-SHA256 of the body.

Payload Structure#

FieldTypeDescription
eventStringAlways loan.submitted.
timestampStringEvent time in ISO 8601 format (e.g., 2026-05-11T13:03:04+07:00).
data.loan_idUUIDQFAST loan identifier.
data.reference_account_numberStringYour reference number.
data.statusStringLoan status — always pending on creation.
data.principal_amountString (decimal)Principal in IDR (e.g., "5000000.00").
data.interest_amountString (decimal)|nullTotal interest in IDR (e.g., "750000.00").
data.admin_fee_amountString (decimal)|nullAdmin fee in IDR (e.g., "50000.00").
data.reserve_amountString (decimal)Reserve amount in IDR (e.g., "500000.00").
data.term_unitStringLoan term unit (day, week, or month).
data.term_lengthIntegerLoan duration. Equals the number of repayment_schedules. Unit is given by term_unit.
data.penalty_rateStringDaily late penalty rate as a string.
data.start_dateString|nullLoan start date in YYYY-MM-DD.

Example: Loan Submitted#


Event: loan.updated#

Fired after a successful Update Loan call. The loan stays in pending status.

Payload Structure#

Same as loan.submitted — see table above — with event = loan.updated and status = pending.

Event: loan.active#

Fired when a loan transitions to active status (e.g., after disbursement completes).

Payload Structure#

Same as loan.submitted — see table above — with status = active.
Previous
Onboarding Webhooks
Next
Disbursement Webhooks
Built with