Verification needs more information
request_for_information is a fixable outcome, not a rejection. Read the reasons and supply the fix with a PATCH, which resubmits by itself.
What it means
request_for_information is the retryable adverse outcome. The review
looked at the customer and needs something corrected: a blurry document,
a selfie that did not match, a missing proof of address. Nothing is final,
and the customer is not rejected. The review can ask this of an
endorsement it already approved, too.
The endorsement moves to issues, and
endorsement.request_for_information fires.
What to do
Read the reasons
The verification object (GET /api/customers/{customer_id}/verifications)
carries rejection_reasons, and each entry names the requirement to
fix:
"rejection_reasons": [
{"requirement": "proof_of_address", "retryable": true}
]
The endorsement's missing and issues buckets now list the same
items as bare codes. Render your fix-it screen from the buckets: they
are the channel designed for it.
Collect a replacement from your user
Show the affected requirement and collect a new file. Send a genuinely new image: an identical file is deduplicated by content hash, so the PATCH changes nothing and nothing is resubmitted.
PATCH it in
curl -s -X PATCH $BASE/api/customers/cus_... \
-H "Api-Key: $KEY" -H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"documents": [{"purpose": "proof_of_address", "file": "<base64>"}]}'
The PATCH is the resubmission: there is no second call. Once nothing
else is owed, the endorsement in the response reads pending again,
and a new round opens with purpose: "resubmission".
Good to know
- An ask on an approved endorsement moves it to
issues. Anything that needs it approved, such as creating a virtual account, is refused until the review approves it again. issueswith onlyunavailableis not an ask. We could not reach the review, no webhook fired, and we retry automatically.- A reason with
requirement: nullandretryable: falseis a verdict such asdeclined. Nothing you send fixes it. rejectedis the final state. A PATCH does not resubmit it, so route the customer to your support path.- Rehearse the whole loop in sandbox with
"decision": "request_for_information"on the verification simulator.