How to pass KYC before issuing a card

Edited

Before you can issue a card, the customer has to pass KYC. Verification needs two things:

  • An image of the customer's ID card

  • Customer details that match that ID card exactly

Most rejections are not permanent failures. They are caused by avoidable issues with one of those two things, and they can be resolved by correcting the issue and retrying.

1. Select the right ID type

These are the ID types you can select when adding a customer:

  • National ID

  • Passport

  • Driver's license

  • BVN

  • NIN

  • Virtual NIN

  • Voter's card

  • Ghana Card

Select an ID type that is valid for the customer's country:

  • BVN, NIN and Virtual NIN are Nigerian documents. The country on the submission must be Nigeria.

  • Ghana Card is a Ghanaian document.

  • Passport, national ID, driver's license and voter's card must be issued in the customer's own country.

Country is sent as an ISO 3166-1 alpha-3 code, for example NGA, GHA, USA.

✓ DO

  • Select the ID type that matches the ID you are submitting

  • Use an ID that is still within its validity date

✗ DON'T

  • Select one ID type and submit the number or image from another

  • Submit an expired ID

  • Select an ID type that is not issued in the customer's country

2. Upload a clear, unedited image of the ID

The system has to read every character on the card. If it cannot, the check fails even when the ID itself is perfectly valid. This is the single most common cause of rejection.

Upload one image showing the full front of the ID.

File requirements:

[Accepted / Rejected graphic]

✓ DO

  • Place the ID on a flat, plain surface and photograph it directly from above

  • Keep all four corners of the card inside the frame

  • Use even, natural light

  • Check that the text and photo are sharp before uploading

  • Upload the original file straight from the camera

✗ DON'T

  • Upload an image with glare or a flash reflection across the card

  • Upload a blurry or motion affected image

  • Crop or cut off any edge of the card

  • Cover part of the card with a finger

  • Photograph the ID on a screen, or upload a screenshot of it

Never pass the image through an editor

The check also looks for signs that the image file has been digitally altered, and it flags the submission when it finds them. This is not limited to forged IDs. An honest photo of a genuine card will still be rejected if it has been through an editing tool.

That includes adjusting brightness or contrast to make the text more readable, sharpening, retouching, removing a background, straightening or cropping in an editing app, removing a watermark, and simply opening the file in an editor and saving it again. Any of these can be enough.

Take a fresh photograph of the physical card and upload that file as it came off the camera. If the photo is too dark or too soft to read, do not fix it in an app. Take it again in better light.

There is no way to override this check, and there is no liveness check available as an alternative route to verification. A file that has been edited cannot pass.

3. Submit details that match the ID exactly

Every detail you send is checked against the card. Any difference in spelling, name order, spacing, or date format is a rejection.

The most common cause of a mismatch is not a typo. It is auto filling the KYC request from a stored user profile. A customer who signed up as "Tunde Bello" has an ID that reads "BELLO BABATUNDE ADESOLA", and the verification fails on a name they never typed.

✓ DO

  • Collect the name, date of birth, and ID number at KYC time, read directly off the card

  • Submit the name in the order printed on the card

  • Include middle names when they appear on the card

  • Preserve case sensitive values exactly as printed

  • Set the ID type to the card that was actually uploaded, and send the ID number that belongs to that type

✗ DON'T

  • Auto fill the KYC request from an existing user profile

  • Reformat, title case, or normalise names before submitting

  • Trim a middle name to fit a field

  • Use a nickname, display name, or preferred name

  • Default the ID type to a fixed value

  • Send a partial or truncated ID number

4. Complete every required field

An incomplete submission cannot be processed and will come back as a rejection rather than a validation error.

✓ DO

  • Send every required field on the first attempt

  • Send a real, complete address rather than a placeholder

  • Store the KYC status against the customer and wait for approval before attempting card creation

✗ DON'T

  • Send empty strings or placeholder values to satisfy a required field

  • Assume a successful create customer response means KYC has passed

If a verification is rejected

A rejection is recoverable in most cases. The first step is reading the rejection reason, which identifies the specific problem.

Where the reason is sent

  • Via the API. When integrating with the Virtual Card API, you can track a user's KYC verification status through the webhook events below.

    Event

    Status

    Meaning

    virtualcard.user.kyc.pending

    Pending

    KYC verification is still under review. This is not a rejection, and there is nothing the user needs to fix or resubmit at this stage.

    virtualcard.user.kyc.complete

    Complete

    KYC verification was successfully completed. This is a final status.

    virtualcard.user.kyc.failed

    Failed

    KYC verification was unsuccessful. This is a final status and may require the user to take corrective action, depending on the reason for failure.

    Important: A virtualcard.user.kyc.pending event is not a rejection. It means verification is still under review, and there is nothing to fix. Only virtualcard.user.kyc.complete and virtualcard.user.kyc.failed are final statuses.

    For more details on integrating with the Bitnob API, see the Bitnob API documentation.

  • If you are not using webhooks. The reason can be found on the Customer tab

Then

  1. Check the rejection reason returned. It tells you exactly what went wrong.

  2. Take note of the specific issue, whether it is a blurry image or a mismatched detail.

  3. Fix and restart the verification process

The two reasons you will see most often

Almost all current rejections come back as one of these two, and both are image problems rather than data problems.

GRAPHIC_EDITOR

The image shows signs of digital editing. Retake the photograph of the physical card and upload the original camera file without opening it in any editing app. This check cannot be waived, and a resubmission of the same edited file will fail again.

UNSATISFACTORY_PHOTOS

The image quality is too low for the card to be read. Retake it on a flat plain surface, in even light, with all four corners in frame and the text sharp. Do not brighten or sharpen the existing file to fix it, because that will convert this rejection into a GRAPHIC_EDITOR rejection.

Every submission is a chargeable verification, including one that is rejected on image quality. Checking the image before it is sent is cheaper than a retry loop.

If the issue has been corrected and the verification is still rejected, contact support at help@bitnob.com with a screenshot of the rejection and the time of the last attempt.

For the full event list, payload fields and handling rules, see Card KYC in the developer documentation.

Related articles

Was this article helpful?

Sorry about that! Care to tell us more?

Thanks for the feedback!

There was an issue submitting your feedback
Please check your connection and try again.