> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# KYB reliance

> Run your own business and owner verification and have Bridge rely on the results

By default, Bridge collects and verifies a business and its owners itself, including documents and sanctions screening. With KYB reliance, your app runs that verification and screening and passes Bridge the results to rely on, in place of collecting them itself.

Reliance augments a [headless KYB](https://docs.privy.io/kyc-kyb/kyb-headless.md) submission. You submit the same verification data, with reliance signals added to the business under `data` and to each owner under `data.associated_persons`.

> [!NOTE]
>
> This is different from [terms of service reliance](https://docs.privy.io/kyc-kyb/kyb-tos-reliance.md), which is about
> relying on your app's recording of the representative's terms of service acceptance, not on KYB
> data.

> [!WARNING]
>
> Reliance moves compliance responsibility to your app. You remain responsible for performing the
> verification and screening you attest to, and for retaining the underlying evidence.

## Get enrolled by Bridge

Bridge grants reliance per developer, and only after reviewing your verification and screening processes. Until Bridge enrolls your app, the reliance fields below are **inert** meaning Bridge ignores them and still collects and verifies the data itself.

Bridge owns the enrollment process and its requirements. Its [KYC/KYB reliance](https://apidocs.bridge.xyz/platform/customers/compliance/kyx-reliance) documentation is the authoritative reference.

Once enrolled, request reliance on each submission by including `reliance` in `endorsements` alongside the reliance signals.

## The screen object

The business `kyb_screen` and the business and per-person `ofac_screen` and `kyc_screen` each report the outcome of a screen you performed:

**screened\_at** `string` *required*

When you performed the screen, as an ISO 8601 date (`YYYY-MM-DD`) or date-time with offset.

**result** `'passed' | 'failed'` *required*

Outcome of the screen.

## Submit reliance signals

Add the reliance signals to a [headless KYB submission](https://docs.privy.io/kyc-kyb/kyb-headless.md) — on the business under `data`, and on each owner under `data.associated_persons` and include `reliance` in `endorsements`. The business ownership structure is attested per control person via `attested_ownership_structure_at`.

**NodeJS**

```ts {skip-check} theme={"system"}
import {PrivyClient} from '@privy-io/node';

const privy = new PrivyClient({
  appId: process.env.PRIVY_APP_ID!,
  appSecret: process.env.PRIVY_APP_SECRET!
});

const status = await privy.organizations().kyb.submit('<organization-id>', {
  provider: 'bridge',
  environment: 'sandbox',
  endorsements: ['base', 'reliance'],
  client_agreement_id: '<agreement-id-from-tos-acceptance>',
  data: {
    business_legal_name: 'Acme, Inc.',
    business_type: 'llc',
    email: 'finance@example.com',
    // Business-level reliance signals
    kyb_screen: {screened_at: '2026-10-01', result: 'passed'},
    ofac_screen: {screened_at: '2026-10-01', result: 'passed'},
    verified_database_at: '2026-10-01',
    associated_persons: [
      {
        first_name: 'Alex',
        last_name: 'Doe',
        email: 'alex@example.com',
        date_of_birth: '1990-01-31',
        has_ownership: true,
        has_control: true,
        is_signer: true,
        title: 'Chief Executive Officer',
        ownership_percentage: 100,
        // Per-person reliance signals
        kyc_screen: {screened_at: '2026-10-01', result: 'passed'},
        ofac_screen: {screened_at: '2026-10-01', result: 'passed'},
        verified_govid_at: '2026-10-01',
        attested_ownership_structure_at: '2026-10-01'
      }
    ]
  }
});
```

**REST API**

```bash theme={"system"}
curl --request POST https://api.privy.io/v1/organizations/xxxxx/kyb/submit \
  -u "<your-privy-app-id>:<your-privy-app-secret>" \
  -H "privy-app-id: <your-privy-app-id>" \
  -H 'Content-Type: application/json' \
  -d '{
    "provider": "bridge",
    "environment": "sandbox",
    "endorsements": ["base", "reliance"],
    "client_agreement_id": "<agreement-id-from-tos-acceptance>",
    "data": {
      "business_legal_name": "Acme, Inc.",
      "business_type": "llc",
      "email": "finance@example.com",
      "kyb_screen": {"screened_at": "2026-10-01", "result": "passed"},
      "ofac_screen": {"screened_at": "2026-10-01", "result": "passed"},
      "verified_database_at": "2026-10-01",
      "associated_persons": [
        {
          "first_name": "Alex",
          "last_name": "Doe",
          "email": "alex@example.com",
          "date_of_birth": "1990-01-31",
          "has_ownership": true,
          "has_control": true,
          "is_signer": true,
          "title": "Chief Executive Officer",
          "ownership_percentage": 100,
          "kyc_screen": {"screened_at": "2026-10-01", "result": "passed"},
          "ofac_screen": {"screened_at": "2026-10-01", "result": "passed"},
          "verified_govid_at": "2026-10-01",
          "attested_ownership_structure_at": "2026-10-01"
        }
      ]
    }
  }'
```

See the [API reference](https://docs.privy.io/api-reference/fiat/kyb/submit.md) for the full request and response schema.

## Reliance fields

All reliance fields are optional, and all are honored only once Bridge has enrolled your app.

### Business

These live inside `data`, alongside the rest of a [headless KYB submission](https://docs.privy.io/kyc-kyb/kyb-headless.md).

| Field | Type | Description |
| - | - | - |
| `kyb_screen` | `object` | Result of your own KYB/AML screen of the business. See [the screen object](#the-screen-object). |
| `ofac_screen` | `object` | Result of your own OFAC/sanctions screen of the business. |
| `verified_database_at` | `string` | When you verified the business against a database source (ISO 8601). |
| `verified_govid_at` | `string` | When you verified the business identification (ISO 8601). |
| `verified_proof_of_address_at` | `string` | When you verified the business proof of address (ISO 8601). Required for EEA customers and SEPA rails. |

### Associated persons

These live on each entry in `data.associated_persons`, alongside the rest of an [associated person](https://docs.privy.io/kyc-kyb/kyb-headless.md#associated-persons).

| Field | Type | Description |
| - | - | - |
| `kyc_screen` | `object` | Result of your own KYC/AML screen of this person. |
| `ofac_screen` | `object` | Result of your own OFAC/sanctions screen of this person. |
| `verified_database_at` | `string` | When you verified this person against a database source (ISO 8601). |
| `verified_govid_at` | `string` | When you verified this person's government ID (ISO 8601). |
| `verified_proof_of_address_at` | `string` | When you verified this person's proof of address (ISO 8601). |
| `attested_ownership_structure_at` | `string` | When this control person attested to having verified the business ownership structure (ISO 8601). |

## Verify reliance took effect

The verification response reports status the same way as [track KYB status](https://docs.privy.io/kyc-kyb/kyb-status.md). When reliance is accepted, Bridge treats the corresponding requirements as satisfied and stops requesting the data you relied on, so `requirements_due` no longer lists it.

If Bridge still lists a requirement you supplied a reliance signal for, confirm with Bridge that your app is enrolled in reliance and that `reliance` was included in `endorsements`.

> [!WARNING]
>
> Bridge's sandbox is more permissive than production. Verify that reliance is accepted against
> production before depending on it in a live integration.

## Next steps

> [card] [Headless KYB](https://docs.privy.io/kyc-kyb/kyb-headless.md)
>
> Submit an organization's verification data from your server

> [card] [KYC reliance](https://docs.privy.io/kyc-kyb/kyc-reliance)
>
> Rely on your own verification for an individual user
