Skip to main content

Todo Completed

This webhook is triggered when an applicant completes a requested todo item, such as identity verification (IDV), bank account connection, income document submission, or other customer-facing tasks.

Configuration

To receive this webhook, you must configure both:

  1. Callback URL: Set the todoCompleted callback URL in your integration settings.
  2. Enabled Categories: Optionally specify which todo categories should trigger the webhook via todoCompletedWebhook.enabledCategories in your integration capabilities. If not specified, all categories will trigger the webhook.

Available Categories

  • IDV - Primary applicant identity verification completed
  • SECONDARY_IDV - Co-applicant identity verification completed
  • BANK_ACCOUNT - Bank account connection completed
  • INCOME - Income documents submitted
  • SIN - Social Insurance Number submitted
  • APPLICATION - Application details (personal and employment) completed
  • CONSENT_TO_PULL_CREDIT - Consent to pull credit granted
  • IDENTITY - Identity documents uploaded

Request Body

The request body is a JSON object with the following properties:

  • applicationId (string, uuid, required): The ID of the application.
  • applicantId (string, uuid, required): The ID of the applicant who completed the todo.
  • todoCategory (string, enum, required): The category of the completed todo. One of: IDV, SECONDARY_IDV, BANK_ACCOUNT, INCOME, SIN, APPLICATION, CONSENT_TO_PULL_CREDIT, IDENTITY.
  • completedAt (string, date-time, required): The timestamp when the todo was completed.
  • retailerId (string, uuid, required): The ID of the retailer associated with the application.

Example Request Body

{
"applicationId": "3aad1c88-a898-460f-b2c7-5f4145250489",
"applicantId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"todoCategory": "IDV",
"completedAt": "2026-01-08T15:30:00.000Z",
"retailerId": "ebed869d-bdf4-4b0a-8442-5b8f23753247"
}

Response

We ask that all webhooks return 200 OK status codes to confirm receipt of the webhook. We ask that unless the server is down errors to be logged and still return a 200 OK status code. If the webhook does not return a 200 OK status code, we will retry the webhook up to 10 times with an exponential backoff.