QFAST API Documentation
  1. Webhook
  • Authentication
  • Onboarding
    • Overview
    • Reference
      • Area Reference
    • API
      • Onboarding Personal
      • Get Onboarding Status
      • Submit Loan
      • Get Loan
    • Webhook
      • Onboarding Webhooks
  • Disbursement
    • Overview
    • Webhook
      • Disbursement Webhooks
  • Repayment
    • Overview
    • Webhook
      • Repayment Webhooks
  • Schemas
    • Loan Schema
    • Onboarding Schema
  1. Webhook

Repayment Webhooks

QFAST notifies your system whenever a daily repayment is processed for one of your loans.

Webhook Security#

Every request includes an HMAC-SHA256 signature. Verify it before processing. See the Onboarding Webhooks for a PHP verification example.
HeaderValue
SignatureHMAC-SHA256 of the raw JSON body, using your webhook_secret.

Event: repayment.succeeded#

Fired when a daily revenue deduction is successfully applied to a loan.

Headers#

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

Payload Structure#

FieldTypeDescription
eventStringAlways repayment.succeeded.
timestampStringEvent time in YYYY-MM-DD HH:MM:SS (UTC).
data.loan_idUUIDThe loan this repayment applies to.
data.reference_account_numberStringYour reference number for this loan.
data.repayment_dateStringThe business date this repayment covers, in YYYY-MM-DD.
data.amountNumberAmount deducted, in IDR.
data.remaining_balanceNumberRemaining outstanding loan balance after this deduction, in IDR.

Example#

{
  "event": "repayment.succeeded",
  "timestamp": "2026-05-11 23:00:00",
  "data": {
    "loan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "reference_account_number": "LND-ACC-2026-0001",
    "repayment_date": "2026-05-11",
    "amount": 15000.0,
    "remaining_balance": 5685000.0
  }
}

Event: repayment.failed#

Fired when a daily deduction attempt fails (e.g., borrower's wallet balance is insufficient).

Headers#

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

Payload Structure#

FieldTypeDescription
eventStringAlways repayment.failed.
timestampStringEvent time in YYYY-MM-DD HH:MM:SS (UTC).
data.loan_idUUIDThe loan this repayment was attempted for.
data.reference_account_numberStringYour reference number for this loan.
data.repayment_dateStringThe business date this repayment was attempted, in YYYY-MM-DD.
data.amountNumberAmount that was attempted, in IDR.
data.failure_reasonStringHuman-readable reason for the failure.

Example#

{
  "event": "repayment.failed",
  "timestamp": "2026-05-11 23:05:00",
  "data": {
    "loan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "reference_account_number": "LND-ACC-2026-0001",
    "repayment_date": "2026-05-11",
    "amount": 15000.0,
    "failure_reason": "Insufficient wallet balance"
  }
}

Expected Response#

Your server must return HTTP 200. Other status codes trigger a retry.
Previous
Overview
Next
Loan Schema
Built with