Webhook - Application Status Change

Modulr sends this webhook to notify Partners of changes to a customer's application status as it progresses through the verification process.

You will receive this event multiple times across the lifecycle of an application. Your handler must be idempotent - the same event may be delivered more than once.


When it fires

  • When a customer starts entering data (transitions to IN_PROGRESS)
  • When automated CDD checks complete (transitions to APPROVED, PENDING_STEP_UP, or MANUAL_REVIEW)
  • When a manual review decision is made
  • When a step-up is requested post-submission

Payload

{
  "eventDateTime": "2026-04-27T13:19:34.457092669Z",
  "eventName": "APPLICATION_STATUS_CHANGE",
  "applicationId": "APP21000MG",
  "status": "IN_PROGRESS"
}

Fields

FieldTypeDescription
eventDateTimestring (ISO 8601)Timestamp of the status change.
eventNamestringAlways APPLICATION_STATUS_CHANGE.
applicationIdstringThe application ID associated with the event. Store this against your customer record.
statusstringThe new application status. See Application Statuses for all possible values.

Status values

StatusWhat to do
IN_PROGRESSNo action. Store the status against your customer record.
PENDING_STEP_UPNotify your customer that further information is required. Re-invoke the SDK with the same applicationId.
MANUAL_REVIEWNo action. Await the next status change.
APPROVEDAwait the CUSTOMER_CREATED webhook to receive the customerId.
DECLINEDNotify the customer. They will not be onboarded.
EXPIREDThe customer must restart. Create a new application.

Handling PENDING_STEP_UP

When you receive a PENDING_STEP_UP status:

  1. Notify your customer that further action is needed.
  2. Request a fresh short-lived token (Step 5 of the integration guide).
  3. Re-initialise the SDK with the same applicationId.
  4. Open the SDK - it will automatically surface the step-up form for the outstanding requirements.
// 1. Get fresh token
// POST /onboarding-service/keys/onboarding/{applicationId}

// 2. Re-initialise SDK
const sdkInstance = await ModulrCustomerVerificationSdk.init({
  token,
  hmac,
  applicationId: 'APP21000MG',
  onInit: (result) => { /* ... */ },
  onError: (error) => { /* ... */ }
});

// 3. Open SDK
await sdkInstance.open({
  onResult: (data) => { /* ... */ },
  onError: (error) => { /* ... */ },
  onClose: () => { /* ... */ }
});

Implementation notes

  • Register your webhook endpoint URL in your Partner configuration.
  • Respond with HTTP 200 to acknowledge receipt. Modulr will retry on failure.
  • For update flows (CDD refresh), monitor APPLICATION_STATUS_CHANGE events on the new Application ID, not the original.

Related