KYC Application Approved
This event is sent when a KYC application has been successfully approved.
Event Type
KYC_APPLICATION_APPROVEDResponse Body
{
"event": "KYC_APPLICATION_APPROVED",
"workflowName": "Basic Individual",
"workflowId": "9ff9668b-460b-45bc-a5cf-6f537101e457",
"invitationId": "bb162d14-b69b-4db5-bc49-f2d0e5cbd4c1",
"details": {
"id": "694bb149-fcc5-463a-baca-71f88f045200",
"formId": "9ff9668b-460b-45bc-a5cf-6f537101e457",
"status": "APPROVED",
"values": [
{
"id": "9bae936a-0908-4455-af9f-ae87b53e41e9",
"value": {
"file": {
"key": "UrrkfDxhXb/1d207d52-055b-4169-bd79-3f11fc1b39b6.jpeg",
"url": "https://storage.datawise.ai/kyc-api-dev/...",
"etag": "5b727c0d018afd4fbfabe08286524291",
"size": 231674,
"s3Key": "1d207d52-055b-4169-bd79-3f11fc1b39b6",
"prefix": "UrrkfDxhXb/",
"extension": "jpeg",
"originalFileName": "sample_emirates_id.jpeg"
},
"idMetadata": {
"sex": "MALE",
"birthday": "4-10-1989",
"lastName": "MUHAMMAD YASIN",
"firstName": "ZEESHAN YASIN",
"nationality": "PAK",
"documentNumber": "105724902",
"documentExpirationDate": "22-5-2023"
},
"documentType": "IDENTIFICATION_DOCUMENT"
},
"status": "APPROVED",
"groupId": "38f1309c-3a8f-4fda-a378-46a8c8716b04",
"createdAt": "2026-01-16T13:51:26.99889",
"elementId": "291709ef-41c7-49ea-b469-b8442f150fcf",
"updatedAt": "2026-01-16T13:51:26.998914",
"groupTitle": "Passport",
"elementHint": "Drop your identification file here",
"elementName": "Identification File",
"elementSlug": "identification-file-1",
"elementType": "ID_FILE",
"elementConfig": {},
"groupPosition": 0,
"formSubmissionId": "694bb149-fcc5-463a-baca-71f88f045200"
}
],
"amlReport": {
"uk": [],
"japan": [],
"usSdn": [],
"status": "NO_MATCH",
"usNonSdn": [],
"swissSECO": [],
"euFinancial": [],
"euTravelBan": [],
"unConsolidated": [],
"canadaConsolidated": [],
"australiaConsolidated": []
},
"createdAt": "2026-01-16T13:51:26.997158",
"updatedAt": "2026-01-16T13:51:26.997195",
"userEmail": "ttest@example.com",
"geoLocation": {
"ip": "87.202.99.30",
"city": "Thessaloniki",
"country_code": "GR",
"country_name": "Greece",
"latitude": 40.64611053466797,
"longitude": 22.94972038269043
},
"invitationId": "bb162d14-b69b-4db5-bc49-f2d0e5cbd4c1",
"submissionIp": "87.202.99.30",
"formExpiresAt": null,
"rejectionReasons": null
}
}Fields
Top Level
event: Always"KYC_APPLICATION_APPROVED"for this event typeworkflowName: Name of the workflow that was completedworkflowId: ID of the workflowinvitationId: ID of the invitation that was sent (matches the ID returned from Send Invitation)details: Contains the full application details
Details Object
id: Unique identifier for the form submissionformId: ID of the form/workflowstatus: Status of the application (always"APPROVED"for this event)values: Array of all form field values submitted by the useramlReport: AML (Anti-Money Laundering) check resultsuserEmail: Email address of the user who completed the formgeoLocation: Geographic location information from the submissioninvitationId: Reference to the invitation IDsubmissionIp: IP address from which the form was submittedcreatedAt: Timestamp when the submission was createdupdatedAt: Timestamp when the submission was last updated
Values Array
Each item in the values array contains:
id: Unique identifier for the field valuevalue: The actual value submitted (can be a string, file object, or metadata object)status: Approval status of this specific fieldelementId: ID of the form elementelementName: Human-readable name of the form elementelementType: Type of form element (e.g.,ID_FILE,ID_NUMBER,ID_FIRST_NAME)groupTitle: Title of the form group this field belongs tocreatedAt: Timestamp when this value was createdupdatedAt: Timestamp when this value was last updated
Usage
When you receive this event:
- Verify the webhook: Check the
x-smart-kyc-api-keyheader matches your API key - Process the data: Extract the relevant information from the
detailsobject - Update your system: Mark the user as verified in your system
- Store the data: Save the submission ID and relevant details for future reference
- Respond quickly: Return a 2xx status code as soon as possible
Example Handler
app.post('/webhook', (req, res) => {
// Verify API key
const apiKey = req.headers['x-smart-kyc-api-key'];
if (apiKey !== process.env.SMART_KYC_API_KEY) {
return res.status(401).send('Unauthorized');
}
const { event, workflowId, invitationId, details } = req.body;
if (event === 'KYC_APPLICATION_APPROVED') {
// Process approved application
console.log(`Application ${details.id} approved for invitation ${invitationId}`);
// Update user status in your database
await updateUserStatus(invitationId, 'APPROVED', details);
// Trigger any follow-up actions
await notifyUser(details.userEmail, 'APPROVED');
}
res.status(200).send('OK');
});Last updated on