Verifications notifications

Notifications will be sent when the status of a verification changes.

The notifications will be delivered to the notification_url sent in the verification creation request.

Until dLocal receives a 200 status code confirmation on these notifications, it will retry once an hour for 7 days.

Signature notifications

An HMAC signature is calculated using a request's key-value pairs and a secret key, which is known only to you and dLocal. By verifying this signature, you'll confirm that the notification was not modified during transmission.

dLocal will be signing each POST notification using the same method described on the Security section (HMAC-SHA256 hash function).

Simply take the Signature HTTP header from the notification, and compare it with the one generated by you using your x-login and secretKey, and the X-date and request body of the notification received. If the signature generated by you matches the one received in the Signature HTTP header, then it is safe to assume that this is a valid message from dLocal.

Merchants will receive notifications on a webhook regarding verification status updates. The webhook endpoint will have to comply with the following signature:

  • HTTP method: POST
  • Payload: A JSON object containing the following fields

Notification fields

Body FieldTypeDescription
idStringNotifications ID in UUID format.
notification_dateDateNotification date timestamp (YYYY-MM-DD hh:mm:ss.zzz).
event_typeStringNotification type. See details.
verification_idStringdLocal verification ID.
external_referenceStringID given by the merchant in their system.
expiration_dateDateVerification expiration date timestamp (YYYY-MM-DD hh:mm:ss.zzz).

Event types

Type of notification events:

TypeDescription
VERIFICATION_PENDINGVerification is pending action.
VERIFICATION_APPROVEDVerification is approved.
VERIFICATION_REJECTEDVerification is rejected.
VERIFICATION_EXPIREDVerification has expired.
VERIFICATION_ERRORError occurred during verification.

Example notifications

{
    "id": "KN-c5ef8bd4-0846-47a2-9301-c1ed539731e1",
    "notification_date": "YYYY-MM-DD hh:mm:ss.zzz",
    "event_type": "VERIFICATION_APPROVED",
    "verification_id": "KV-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "external_reference": "KYC-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "expiration_date": "YYYY-MM-DD hh:mm:ss.zzz"
}
{
    "id": "KN-c5ef8bd4-0846-47a2-9301-c1ed539731e1",
    "notification_date": "YYYY-MM-DD hh:mm:ss.zzz",
    "event_type": "VERIFICATION_REJECTED",
    "verification_id": "KV-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "external_reference": "KYC-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "expiration_date": "YYYY-MM-DD hh:mm:ss.zzz"
}
{
    "id": "KN-c5ef8bd4-0846-47a2-9301-c1ed539731e1",
    "notification_date": "YYYY-MM-DD hh:mm:ss.zzz",
    "event_type": "VERIFICATION_PENDING",
    "verification_id": "KV-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "external_reference": "KYC-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "expiration_date": "YYYY-MM-DD hh:mm:ss.zzz"
}
{
    "id": "KN-c5ef8bd4-0846-47a2-9301-c1ed539731e1",
    "notification_date": "YYYY-MM-DD hh:mm:ss.zzz",
    "event_type": "VERIFICATION_EXPIRED",
    "verification_id": "KV-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "external_reference": "KYC-56fe683c-d0de-4ce4-af97-50faa6cea3a6",
    "expiration_date": "YYYY-MM-DD hh:mm:ss.zzz"
}

HTTP Status response

  • 200: If the event could be processed successfully
  • 500: Something went wrong while notifying the merchant