Skip to main content
Some providers require a verified contact before they will accept an order. Eligibility tells you whether the provider you picked is one of them, so you do not have to verify everyone. Verified state is stored on the customer and reused. A customer whose email is already verified costs nothing to re-check.

1. Trigger

Endpoint: POST /accounts/customers/{customerId}/verifications
Response:
target comes back masked. A trigger always returns PENDING, which means the code was dispatched — delivery is asynchronous and outside Meld’s control, so it may not have arrived yet. The code is single-use and valid until expiresAt.

2. Confirm

Endpoint: POST /accounts/customers/{customerId}/verifications/{verificationId}/confirm
Success:
A wrong code is not an error status. Re-prompt the user, and show attemptsRemaining:
Confirm returns one of two statuses: An expired code is not a FAILED body — confirming against a verification that is no longer pending is a 400. Trigger a new one rather than re-prompting for the same code.

Limits and errors


Audit

Endpoint: GET /accounts/customers/{customerId}/verifications?channel=EMAIL&status=VERIFIED Returns history with targets masked, newest first. The history is append-only, so it carries statuses the two calls above never return: INVALIDATED is the one worth handling. Changing a customer’s email or phone clears the verified state for that channel, so a customer who was cleared to order is no longer verified and has to go through both calls again. Re-check eligibility after any contact change rather than assuming the earlier verification still stands.