> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.upwardli.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.upwardli.com/_mcp/server.

# Handling a Fallback KYC Inquiry

During API-based onboarding, when a consumer fails a KYC database-check you can choose to have them complete secondary validations such as document collection and selfie/image verification directly in your application. The process will be to use the value of the `fallback_inquiry_id` property from the consumer's onboarding workflow to load a KYC component in your application configured for that user's specific KYC next steps.

## Scenario: Consumer Fails KYC Database Check

When a user fails a KYC database check after the Verify Identity step, we will provide a `fallback_inquiry_id` in the workflow api response.

The two properties to look for in this api response are:

* `consumer`->`kyc_status` == `NeedsReview`
* `kyc`->`fallback_inquiry_id` => value

```json
{
  "id": "bcc76111-2451-4299-a02d-3f067cf3ca5a",
  "status": "new",
  "consumer": {
    "id": "af593b07-be91-4a18-84c6-7bbb8110faa6",
    "pcid": "card-10a20110-2c8f-4c3f-a7db-f1999c33e24e",
    "mla_status": false,
    "first_name": "Test",
    "last_name": "User",
    "email": "consumer@email.com",
    "is_active": true,
    "kyc_status": "NeedsReview",
    "phone_number": "+15555555555",
    "date_of_birth": "1957-09-06",
    "tax_id_type": "SSN",
    "tax_identifier": "***-**-1377",
    "address_line1": "86782 Rosemarie Freeway",
    "address_line2": null,
    "address_city": "Ottilieworth",
    "address_state": "AL",
    "address_zip": "35405"
  },
  "kyc": {
    "inquiry_ids": [
      "txn_xxxxxxxxxxxxxxxxxh"
    ],
    "fallback_inquiry_id": "inq_EXAMPLE",
    "inquiry_template_id": "itmpl_xxxxxxxxxxxxxxxx",
    "errors": []
  },
  "e_sign": {
    "agreement_accepted": null,
    "agreement_accepted_date": null
  },
  "underwriting": {
    "result": null,
    "data": null,
    "errors": null
  },
  "product": {
    "product_id": "11111111-1000-0000-0000-000000000001",
  },
  "previous_steps": [
    {
      "slug": "select_product",
      "url": "/v2/onboarding/bcc76111-2451-4299-a02d-3f067cf3ca5a/select-product/"
    },
    {
      "slug": "get_started",
      "url": "/v2/onboarding/bcc76111-2451-4299-a02d-3f067cf3ca5a/"
    }
  ],
  "current_steps": [
    {
      "slug": "verify_identity",
      "url": "/v2/onboarding/bcc76111-2451-4299-a02d-3f067cf3ca5a/verify-identity/"
    }
  ],
  "metadata": null
}
```

### Launching the KYC Mobile SDK

Once you have retrieved the `fallback_inquiry_id` from the api response, your backend servers can provide that value to your mobile application to hydrate the Persona Mobile SDK. Initializing the Mobile SDK with this inquiry template will allow the consumer to complete the KYC portion of their onboarding.

*in this scenario, we are assuming a mobile/native app built in React Native*

```javascript
javascript


import {Inquiry} from 'react-native-persona';
// ...
<Button
  title="Start Inquiry"
  onPress={() => {
    Inquiry.fromInquiry('inq_EXAMPLE')
      .onComplete((inquiryId, status, fields) =>
        Alert.alert(
          'Complete',
          'Inquiry ' + inquiryId + ' completed with status "' + status + '."',
        ),
      )
      .onCanceled((inquiryId, sessionToken) =>
        Alert.alert('Canceled', 'Inquiry ' + inquiryId + ' was cancelled'),
      )
      .onError(error => Alert.alert('Error', error.message))
      .build()
      .start();
  }}
/>
```

You can read more about integrating the Persona KYC UI components into your mobile app [here](https://docs.withpersona.com/mobile-sdks).