Document Verification Webhooks

The following are the webhooks for the Document Verification Tool. The webhooks have the following IDs:

Document Reading

id: document-reading

Step Completed

"step" : {
    "status" : 200, 
    "id" : "document-reading", 
    "data" : {
        "fullName" : {
            "required" : true, 
            "label" : "Name", 
            "value" : "<NAME>"
        }, 
        "address" : {
            "label" : "Address", 
            "value" : "<ADDRESS>"
        }, 
        "emissionDate" : {
            "label" : "Emission Date", 
            "format" : "date", 
            "value" : "<YYYY-MM-DD>"
        }
    }, 
    "error" : null
}, 
"eventName" : "step_completed", 
"flowId" : "<METAMAP (FLOW) ID>", 
"timestamp" : "2021-08-15T00:00:01.421Z"
"step" : {
        "status" : 200, 
        "id" : "document-reading", 
        "data" : {
            "fullName" : {
                "value" : "<FULL NAME>", 
                "required" : true, 
                "label" : "Name"
            }, 
            "documentNumber" : {
                "value" : "<DOCUMENT NUMBER>", 
                "required" : true, 
                "label" : "Document Number"
            }, 
            "dateOfBirth" : {
                "value" : "<YYYY-MM-DD>", 
                "required" : true, 
                "label" : "Day of Birth", 
                "format" : "date"
            }, 
            "expirationDate" : {
                "value" : "<YYYY-MM-DD>", 
                "required" : false, 
                "label" : "Date of Expiration", 
                "format" : "date"
            }, 
            "documentType" : {
                "value" : "P", 
                "required" : false, 
                "label" : "Document Type"
            }, 
            "firstName" : {
                "value" : "<FIRST NAME>", 
                "required" : false, 
                "label" : "First Name"
            }, 
            "issueCountry" : {
                "value" : "<COUNTRY>", 
                "required" : false, 
                "label" : "Issue Country"
            }, 
            "nationality" : {
                "value" : "<USER NATIONALITY>", 
                "required" : false, 
                "label" : "Nationality"
            }, 
            "personalNumber" : {
                "value" : "<PERSONAL NUMBER?", 
                "required" : false, 
                "label" : "Personal Number"
            }, 
            "sex" : {
                "value" : "<M or F>",
                "required" : false, 
                "label" : "Sex"
            }, 
            "surname" : {
                "value" : "<SURNAME>", 
                "required" : false, 
                "label" : "Surname"
            }
        }, 
        "error" : null
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:04.470Z"

Step Error

"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "error" : {
    "type" : "StepError", 
    "code" : "customDocument.notProvided", 
    "message" : "User has not provided any document"
  }, 
  "documentType" : "custom-doc"
}
"step" : {
  "status" : 200, 
  "id" : "electronic-signature-document-validation", 
  "error" : {
    "type" : "StepError", 
    "code" : "eSignature.notValidParams", 
    "message" : "Document invalid or photo on the document didn't match the seflie"
  }
}
"step" : {
  "status" : 200, 
  "id" : "electronic-signature-document-validation", 
  "error" : {
    "type" : "StepError", 
    "code" : "eSignature.emailStepFailed", 
    "message" : "Email step hasn't been passed"
  }
}
"step" : {
  "status" : 200, 
  "id" : "electronic-signature-document-validation", 
  "error" : {
    "type" : "StepError", 
    "code" : "eSignature.ipStepFailed", 
    "message" : "IP step hasn't been passed"
  }
}
"step" : {
  "status" : 200, 
  "id" : "electronic-signature-document-validation", 
  "error" : {
    "type" : "StepError", 
    "code" : "eSignature.phoneStepFailed", 
    "message" : "Phone step hasn't been passed"
  }
}
"step" : {
  "status" : 200, 
  "id" : "electronic-signature-document-validation", 
  "error" : {
    "type" : "StepError", 
    "code" : "eSignature.fullNameMismatch", 
    "message" : "The name in the document didn't match the name in the signature"
  }
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "error" : {
    "type" : "StepError", 
    "code" : "customDocument.skipped", 
    "message" : "User skipped this step"
  }, 
  "documentType" : "custom-template"
}

System Error


"error" : {
  "type" : "REQUEST_REJECTED", 
  "code" : "503", 
  "message" : "Request is rejected when call 'verifications.setDocumentFields' action on 'mol-verification-xxxxxxxxxx-xxxxx-xx' node."
}
"error" : {
  "type" : "SystemError", 
  "code" : "system.internalError", 
  "message" : "Request is rejected when call 'media.buildPublicUrl' action on 'mol-media-server-xxxxxxxxxx-xxxxx-xx' node."
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "documentNumber" : {
      "required" : true, 
      "label" : "Document Number"
    }, 
    "dateOfBirth" : {
      "required" : true, 
      "label" : "Day of Birth", 
      "format" : "date"
    }, 
    "expirationDate" : {
      "required" : null, 
      "label" : "Date of Expiration", 
      "format" : "date"
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "For private folder callerId is required"
  }, 
  "documentType" : "national-id"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "documentNumber" : {
      "required" : true, 
      "label" : "Document Number"
    }, 
    "dateOfBirth" : {
      "required" : true, 
      "label" : "Day of Birth", 
      "format" : "date"
    }, 
    "expirationDate" : {
      "required" : null, 
      "label" : "Date of Expiration", 
      "format" : "date"
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Parameters validation error!"
  }, 
  "documentType" : "national-id"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Request is rejected when call 'documentMetadata.getDocumentMetadata' action on 'mol-verification-XXX' node."
  }, 
  "documentType" : "national-id"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "address" : {
      "required" : null, 
      "label" : "Address"
    }, 
    "emissionDate" : {
      "required" : null, 
      "label" : "Emission Date", 
      "format" : "date"
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Request is rejected when call 'medias.get' action on 'mol-media-server-XXX' node."
  }
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "address" : {
      "required" : null, 
      "label" : "Address"
    }, 
    "emissionDate" : {
      "required" : null, 
      "label" : "Emission Date", 
      "format" : "date"
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Request is rejected when call 'media.buildPublicUrl' action on 'mol-media-server-XXX' node."
  }, 
  "documentType" : "proof-of-residency"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "documentNumber" : {
      "required" : true, 
      "label" : "Document Number"
    }, 
    "dateOfBirth" : {
      "required" : true, 
      "label" : "Day of Birth", 
      "format" : "date"
    }, 
    "expirationDate" : {
      "required" : null, 
      "label" : "Date of Expiration", 
      "format" : "date"
    }, 
    "fathersName" : {
      "required" : null, 
      "label" : "Fathers Name"
    }, 
    "mothersName" : {
      "required" : null, 
      "label" : "Mothers Name"
    }, 
    "taxpayerNumber" : {
      "required" : true, 
      "label" : "Taxpayer number"
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Step timeout"
  }, 
  "documentType" : "driving-license"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "data" : {
    "fullName" : {
      "required" : true, 
      "label" : "Name"
    }, 
    "documentNumber" : {
      "required" : true, 
      "label" : "Document Number"
    }, 
    "dateOfBirth" : {
      "required" : null, 
      "label" : "Day of Birth", 
      "format" : "date"
    }, 
    "expirationDate" : {
      "required" : null, 
      "label" : "Date of Expiration", 
      "format" : "date"
    }, 
    "firstName" : {
      "required" : true, 
      "label" : "First Name"
    }, 
    "surname" : {
      "required" : true, 
      "label" : "Surname"
    }, 
    "documentSubType" : {
      "required" : true, 
      "label" : "Document Sub Type", 
      "format" : {
        "masFieldType" : "Options", 
        "masFieldOptions" : [
          "BVN", 
          "NIN", 
          "Other", 
          "VIN"
        ]
      }
    }
  }, 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Cannot read property 'mediaUrl' of undefined"
  }, 
  "documentType" : "national-id"
}
"step" : {
  "status" : 200, 
  "id" : "document-reading", 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Service 'documentMetadata.getDocumentMetadata' is not available on 'mol-verification-XXX' node."
  }, 
  "documentType" : "national-id"
}

Template Matching

id: template-matching

Step Completed

"step" : {
        "status" : 200, 
        "id" : "template-matching", 
        "error" : null
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:04.279Z"

Step Error

"step" : {
  "status" : 200, 
  "id" : "template-matching", 
  "error" : {
    "type" : "StepError", 
    "code" : "templateMatching.noMatchFound", 
    "message" : "Document did not match any valid template"
  }
}
"step" : {
  "status" : 200, 
  "id" : "template-matching", 
  "error" : {
    "type" : "StepError", 
    "code" : "node.failed", 
    "message" : "Cannot meet dependent node"
  }, 
  "documentType" : "custom-cadastro-nacional"
}

System Error

"step" : {
  "status" : 200, 
  "id" : "template-matching", 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.serviceUnavailable", 
    "message" : "Service unavailable"
  }
}
"step" : {
  "status" : 200, 
  "id" : "template-matching", 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Step timeout"
  }, 
  "documentType" : "national-id"
}

Age-Check

id: age-check

Step Completed

"step" : {
            "status" : 200, 
            "id" : "age-check", 
            "data" : {
                "age" : 28, 
                "ageThreshold" : 18, 
                "underage" : false
            }, 
            "error" : null
        }, 
        "eventName" : "step_completed", 
        "flowId" : "<METAMAP (FLOW) ID>", 
        "timestamp" : "2021-08-15T00:00:04.637Z"

Step Error

"step" : {
  "status" : 200, 
  "id" : "age-check", 
  "data" : {
    "age" : null, 
    "ageThreshold" : 18, 
    "underage" : null
  }, 
  "error" : {
    "type" : "StepError", 
    "code" : "underage.noDOB", 
    "message" : "The date of birth could not be obtained"
  }
}
"step" : {
    "status" : 200, 
    "id" : "age-check", 
    "data" : {
        "age" : 0, 
        "ageThreshold" : 18, 
        "underage" : true
    }, 
    "error" : {
        "type" : "StepError", 
        "code" : "underage.error", 
        "message" : "This user is currently underage"
    }
}
"step" : {
	"status" : 200, 
	"id" : "age-check", 
	"error" : {
		"type" : "StepError", 
		"code" : "input.failed", 
		"message" : "Cannot meet dependent input"
	}
}

Duplicate User Detection

id: duplicate-user-detection

Step Completed

"step" : {
        "status" : NumberInt(200), 
        "id" : "duplicate-user-detection", 
        "error" : null, 
        "data" : {
            "duplicateSignup" : false, 
            "relatedRecords" : null
        }
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:17.864Z"
"step" : {
         "status" : 200, 
         "id" : "duplicate-user-detection", 
         "error" : null, 
         "data" : {
             "duplicateSignup" : false, 
             "relatedRecords" : null
         }
     }, 
     "eventName" : "step_completed", 
     "flowId" : "<METAMAP (FLOW) ID>", 
     "timestamp" : "2021-08-15T00:04:07.925Z"

Step Error

"step" : {
    "status" : 200, 
    "id" : "duplicate-user-detection", 
    "error" : {
        "type" : "StepError", 
        "code" : "duplicateUserDetection.notValidParams", 
        "message" : "Document number is not defined"
    }
}
"step" : {
    "status" : 200, 
    "id" : "duplicate-user-detection", 
    "error" : {
        "type" : "StepError", 
        "code" : "duplicateUserDetection.matchesFound", 
        "message" : "This user has been verified more than once"
    }, 
    "data" : {
        "duplicateSignup" : true, 
        "relatedRecords" : [
            "<RECORD NUMBER>"
        ]
    }
},
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "duplicateUserDetection.notValidParams", 
    "message" : "Birth Date is not defined"
  }
}
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "input.failed", 
    "message" : "Cannot meet dependent input"
  }
}
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "duplicateUserDetection.notValidParams", 
    "message" : "Full Name is not defined"
  }
}

System Error

"step" : {
    "status" : 200, 
    "id" : "duplicate-user-detection", 
    "error" : {
        "type" : "StepError", 
        "code" : "duplicateUserDetection.notValidParams", 
        "message" : "Document number is not defined"
    }
}
"step" : {
    "status" : 200, 
    "id" : "duplicate-user-detection", 
    "error" : {
        "type" : "StepError", 
        "code" : "duplicateUserDetection.matchesFound", 
        "message" : "This user has been verified more than once"
    }, 
    "data" : {
        "duplicateSignup" : true, 
        "relatedRecords" : [
            "<RECORD NUMBER>"
        ]
    }
},
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "duplicateUserDetection.notValidParams", 
    "message" : "Birth Date is not defined"
  }
}
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "input.failed", 
    "message" : "Cannot meet dependent input"
  }
}
"step" : {
  "status" : 200, 
  "id" : "duplicate-user-detection", 
  "error" : {
    "type" : "StepError", 
    "code" : "duplicateUserDetection.notValidParams", 
    "message" : "Full Name is not defined"
  }
}

Alteration Detection

id: alteration-detection

Step Completed

"step" : {
         "status" : 200, 
         "id" : "alteration-detection", 
         "error" : null
     }, 
     "eventName" : "step_completed", 
     "flowId" : "<METAMAP (FLOW) ID>", 
     "timestamp" : "2021-08-15T00:00:08.723Z"
 },

Step Error

"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {
		"type" : "StepError", 
		"code" : "alterationDetection.negligence", 
		"message" : "Document is considered as negligence",
    "reasonCode" : "blurred"
	},
  "documentType" : "passport"
}
"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {	
		"type" : "StepError", 
		"code" : "alterationDetection.fraudAttempt", 
		"message" : "Document is considered as fraud attempt",
    "reasonCode" : "screenshot"
	},
  "documentType" : "national-id"
}
"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {
		"type" : "StepError", 
		"code" : "alterationDetection.tampered", 
		"message" : "Document is considered tampered"
	}
}
"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {
		"type" : "StepError", 
		"code" : "input.failed", 
		"message" : "Cannot meet dependent input"
	}
}

System Error

"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {
		"type" : "SystemError", 
		"code" : "system.internalError", 
		"message" : "Internal error"
	}
}
"step" : {
	"status" : 200, 
	"id" : "alteration-detection", 
	"error" : {
		"type" : "SystemError", 
		"code" : "system.internalError", 
		"message" : "Step timeout"
	}, 
  "documentType" : "national-id"
}

Facematch

id: facematch

Step Completed

"step" : {
        "status" : 200, 
        "id" : "facematch", 
        "data" : {
            "score" : 100
        }, 
        "error" : null
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:02.546Z"
},
"step" : {
        "status" : 200, 
        "id" : "facematch", 
        "data" : {
            "score" : 99.19310481799324
        }, 
        "error" : null
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:36.439Z"
},

Step Error

"step" : {
    "status" : 200, 
    "id" : "facematch", 
    "data" : {
        "score" : 20.43746515455734
    }, 
    "error" : {
        "type" : "LegacyError", 
        "code" : "legacy.error", 
        "message" : "The face did not match the document"
    }
}, 
"eventName" : "step_completed", 
"flowId" : "<METAMAP (FLOW) ID>", 
"timestamp" : "2021-08-15T00:02:31.625Z"
"step" : {
        "status" : 200, 
        "id" : "facematch", 
        "error" : {
            "type" : "LegacyError", 
            "code" : "legacy.error", 
            "message" : "selfie_id download error"
        }
    }, 
    "eventName" : "step_completed", 
    "flowId" : "<METAMAP (FLOW) ID>", 
    "timestamp" : "2021-08-15T00:00:43.424Z"
"step" : {
          "status" : 200, 
          "id" : "facematch", 
          "error" : {
              "type" : "LegacyError", 
              "code" : "legacy.error", 
              "message" : "doc_photo_id download error"
          }
      }, 
      "eventName" : "step_completed", 
      "flowId" : "<METAMAP (FLOW) ID>", 
      "timestamp" : "2021-08-15T00:01:25.640Z"
"step" : {
    "status" : 200, 
    "id" : "facematch", 
    "data" : {
        "score" : 29.98143200143104
    }, 
    "error" : {
        "type" : "LegacyError", 
        "code" : "legacy.error", 
        "message" : "This person cannot be confirmed as owner of document provided, a selfie with the document will be requested"
    }
"eventName" : "step_completed", 
"flowId" : "<METAMAP (FLOW) ID>", 
"timestamp" : "2021-08-15T00:47:20.663Z"
"step" : {
  "status" : 200, 
  "id" : "facematch", 
  "error" : {
    "type" : "StepError", 
    "code" : "input.failed", 
    "message" : "Cannot meet dependent input"
  }
}

System Error

"step" : {
  "status" : 200, 
  "id" : "facematch", 
  "error" : {
    "type" : "SystemError", 
    "code" : "system.internalError", 
    "message" : "Step timeout"
  }
}