CollectionsDirect Debit

Direct Debit Webhooks

Example webhook bodies for direct debit authorizations, payments and payment batches.

See how to read the webhook examples. The values are made up, but every field, its order and its format match what Acme sends.

Direct Debit Authorizations

Successful direct debit authorization (direct-debit-authorizations.succeeded):

{
  "id": "wbh_0RWF7FWW5Y563",
  "createdAt": "2026-10-08T05:06:58.325593865Z",
  "mode": "LIVE",
  "event": "direct-debit-authorizations.succeeded",
  "object": {
    "id": "dda_0RWF7FW49Y7ZN",
    "billReferenceNumber": "ROCKETCUST10482",
    "payerSwiftBic": "OCBCSGSGXXX",
    "payerBankCode": null,
    "payerSegment": "RETAIL",
    "payerName": "TAN WEI MING",
    "payerBankAccountNumber": "5012846731",
    "payerIdHash": "9f2c4e81a6b03d57e1f4a8c26b9d0e73f5a1c84b2d6e09f7a3b5c18d4e2f6a90",
    "payerIdType": "NRIC",
    "status": "SUCCEEDED",
    "failureReason": null,
    "underlyingErrorMessage": null,
    "startDate": "2026-10-08",
    "precheckMinAmount": null,
    "precheckMaxAmount": 100000,
    "precheckCurrency": "SGD",
    "maxAmount": 100000,
    "maxAmountCurrency": "SGD",
    "payerAuthorizedMaxAmount": 50000,
    "endDate": null,
    "authorizeUrl": "https://api.tryacme.com/redirection/direct-debit-authorizations/dda_0RWF7FW49Y7ZN/authorize",
    "cancelUrl": null,
    "returnUrl": "https://rocketshop.com/egiro/return",
    "cancelReturnUrl": null,
    "transactionReference": "ROCKETSG0120261008130336065141",
    "createdAt": "2026-10-08T05:03:36.065Z",
    "updatedAt": "2026-10-08T05:06:58.318Z"
  }
}

Failed direct debit authorization (direct-debit-authorizations.failed). An authorization the payer did not complete in time also arrives as this event, with failureReason set to PAYER_AUTHORIZATION_TIMEOUT:

{
  "id": "wbh_0RWF7FX0DY607",
  "createdAt": "2026-10-08T05:09:14.508116730Z",
  "mode": "LIVE",
  "event": "direct-debit-authorizations.failed",
  "object": {
    "id": "dda_0RWF7FX01Y43X",
    "billReferenceNumber": "ROCKETCUST10483",
    "payerSwiftBic": "OCBCSGSGXXX",
    "payerBankCode": null,
    "payerSegment": "RETAIL",
    "payerName": "TAN WEI MING",
    "payerBankAccountNumber": null,
    "payerIdHash": null,
    "payerIdType": null,
    "status": "FAILED",
    "failureReason": "PAYER_AUTHORIZATION_FAILED",
    "underlyingErrorMessage": "BA3002: Consent not given by applicant on bank website for eDDA creation. eDDA creation unsuccessful",
    "startDate": "2026-10-08",
    "precheckMinAmount": null,
    "precheckMaxAmount": 100000,
    "precheckCurrency": "SGD",
    "maxAmount": 100000,
    "maxAmountCurrency": "SGD",
    "payerAuthorizedMaxAmount": 0,
    "endDate": null,
    "authorizeUrl": "https://api.tryacme.com/redirection/direct-debit-authorizations/dda_0RWF7FX01Y43X/authorize",
    "cancelUrl": null,
    "returnUrl": "https://rocketshop.com/egiro/return",
    "cancelReturnUrl": null,
    "transactionReference": "ROCKETSG0120261008130840117302",
    "createdAt": "2026-10-08T05:08:40.117Z",
    "updatedAt": "2026-10-08T05:09:14.496Z"
  }
}

Canceled direct debit authorization (direct-debit-authorizations.canceled):

{
  "id": "wbh_0RWFS5YQ7AXFQ",
  "createdAt": "2026-10-09T01:02:44.133720198Z",
  "mode": "LIVE",
  "event": "direct-debit-authorizations.canceled",
  "object": {
    "id": "dda_0RWFS5YQ3AZKF",
    "billReferenceNumber": "RSHK000918",
    "payerSwiftBic": "HSBCHKHHHKH",
    "payerBankCode": "004",
    "payerSegment": null,
    "payerName": "CHAN TAI MAN",
    "payerBankAccountNumber": "004123456838",
    "payerIdHash": null,
    "payerIdType": null,
    "status": "CANCELED",
    "failureReason": null,
    "underlyingErrorMessage": null,
    "startDate": "2026-10-08",
    "precheckMinAmount": 0,
    "precheckMaxAmount": 500000,
    "precheckCurrency": "HKD",
    "maxAmount": null,
    "maxAmountCurrency": null,
    "payerAuthorizedMaxAmount": 0,
    "endDate": null,
    "authorizeUrl": null,
    "cancelUrl": null,
    "returnUrl": null,
    "cancelReturnUrl": null,
    "transactionReference": null,
    "createdAt": "2026-10-08T07:44:58.302Z",
    "updatedAt": "2026-10-09T01:02:44.120Z"
  }
}

Direct Debit Payments

Successful direct debit payment (direct-debit-payments.succeeded):

{
  "id": "wbh_0RWF7FX65Y4V3",
  "createdAt": "2026-10-08T05:49:56.143613113Z",
  "mode": "LIVE",
  "event": "direct-debit-payments.succeeded",
  "object": {
    "id": "dpymt_0RWF7FX59Y4W0",
    "type": "FAST",
    "amount": 1250,
    "currency": "SGD",
    "directDebitAuthorizationId": "dda_0RWF7FW49Y7ZN",
    "customerReference": "OCTSUBFEE10482",
    "receiver": {
      "bankAccountNumber": "0721845093"
    },
    "status": "SUCCEEDED",
    "resultCode": null,
    "underlyingErrorMessage": null,
    "createdAt": "2026-10-08T05:49:54.557Z",
    "updatedAt": "2026-10-08T05:49:56.135Z"
  }
}
  • batchId and metadata are sent only for a payment that is part of a batch.
  • Payments in a batch can arrive several at a time, under objects.
  • For a payment made with an authorization kept outside Acme, directDebitAuthorizationId is left out and directDebitAuthorizationInformation is sent instead.
  • previousPaymentStatus is sent only when the bank reports the payment as a duplicate.

Failed direct debit payment (direct-debit-payments.failed). underlyingErrorMessage is the bank's code and description:

{
  "id": "wbh_0RWF7FXADY4H2",
  "createdAt": "2026-10-08T05:50:02.771904316Z",
  "mode": "LIVE",
  "event": "direct-debit-payments.failed",
  "object": {
    "id": "dpymt_0RWF7FXA9Y7VP",
    "type": "FAST",
    "amount": 1250,
    "currency": "SGD",
    "directDebitAuthorizationId": "dda_0RWF7FW49Y7ZN",
    "customerReference": "OCTSUBFEE10483",
    "receiver": {
      "bankAccountNumber": "0721845093"
    },
    "status": "FAILED",
    "resultCode": "INSUFFICIENT_FUNDS",
    "underlyingErrorMessage": "1209: Insufficient funds",
    "createdAt": "2026-10-08T05:50:00.204Z",
    "updatedAt": "2026-10-08T05:50:02.760Z"
  }
}

Direct Debit Payment Batches

Direct debit payment batch submitted (direct-debit-payment-batches.submitted):

{
  "id": "wbh_0RWF7FXFDY4TB",
  "createdAt": "2026-10-08T08:52:41.079452816Z",
  "mode": "LIVE",
  "event": "direct-debit-payment-batches.submitted",
  "object": {
    "id": "bddp_0QK7P3R8CW2NA",
    "type": "GIRO",
    "paymentDate": "2026-10-09",
    "currency": "SGD",
    "status": "SUBMITTED",
    "createdAt": "2026-10-08T08:47:02.318204Z",
    "updatedAt": "2026-10-08T08:52:41.067913Z"
  }
}

Direct debit payment batch rejected (direct-debit-payment-batches.rejected):

{
  "id": "wbh_0RWF7FXHHY5V0",
  "createdAt": "2026-10-08T09:14:26.544190263Z",
  "mode": "LIVE",
  "event": "direct-debit-payment-batches.rejected",
  "object": {
    "id": "bddp_0QK7P5W1JD6TB",
    "type": "GIRO",
    "paymentDate": "2026-10-09",
    "currency": "SGD",
    "status": "FAILED",
    "createdAt": "2026-10-08T08:47:02.318204Z",
    "updatedAt": "2026-10-08T09:14:26.530718Z"
  }
}

On this page