FAQsVerification needs more information

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.
  • issues with only unavailable is not an ask. We could not reach the review, no webhook fired, and we retry automatically.
  • A reason with requirement: null and retryable: false is a verdict such as declined. Nothing you send fixes it.
  • rejected is 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.