> ## 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.

# Terms of service

> Have an organization's representative accept Bridge's terms of service before verification

Bridge requires a signed terms of service agreement before it will create or verify a customer. Privy creates the [Bridge customer](https://apidocs.bridge.xyz/platform/customers/customers/api) on the first request and links it to the Privy organization, so your app only ever references the Privy organization ID.

Before this step, [register a Bridge API key with Privy](/kyc-kyb/setup).

<View title="NodeJS" icon="node-js">
  Use the `initiateTos` method from the `kyb` resource on `organizations()`.

  ```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 tos = await privy.organizations().kyb.initiateTos('<organization-id>', {
    provider: 'bridge',
    environment: 'sandbox',
    email: 'finance@example.com',
    business_name: 'Acme, Inc.'
  });

  // tos.link is the terms of service link to pass to your frontend
  ```
</View>

<View title="Python" icon="python">
  Use `initiate_tos` on the organization's KYB service.

  ```python theme={"system"}
  tos = client.organizations.kyb.initiate_tos(
      "organization-id",
      provider="bridge",
      environment="sandbox",
      email="finance@example.com",
      business_name="Acme, Inc.",
  )

  # Pass tos.link to your frontend.
  ```
</View>

<View title="REST API" icon="terminal">
  To generate a [terms of service](https://apidocs.bridge.xyz/platform/customers/customers/tos) link
  for an organization, make a `POST` request to:

  ```bash theme={"system"}
  https://api.privy.io/v1/organizations/{organization_id}/kyb/tos
  ```

  See the [API reference](/api-reference/fiat/kyb/tos) for the full request and response schema.

  In the body of the request, include the following fields:

  <ParamField body="provider" type="'bridge'" required>
    Provider to verify the organization with.
  </ParamField>

  <ParamField body="environment" type="'production' | 'sandbox'">
    Bridge environment to use. Defaults to `production`.
  </ParamField>

  <ParamField body="email" type="string" required>
    Email address for the Bridge business customer. Bridge sends requests for information to this
    address.
  </ParamField>

  <ParamField body="business_name" type="string">
    Legal name of the business.
  </ParamField>

  Below is a sample cURL command for this request:

  ```bash theme={"system"}
  curl --request POST https://api.privy.io/v1/organizations/xxxxx/kyb/tos \
    -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",
      "email": "finance@example.com",
      "business_name": "Acme, Inc."
    }'
  ```

  A successful response includes the following fields:

  <ResponseField name="provider" type="'bridge'">
    Provider the organization is being verified with.
  </ResponseField>

  <ResponseField name="environment" type="'production' | 'sandbox'">
    Bridge environment used for the request.
  </ResponseField>

  <ResponseField name="status" type="string">
    Status of terms of service acceptance, as reported by Bridge.
  </ResponseField>

  <ResponseField name="link" type="string">
    URL the organization's representative opens to accept Bridge's terms of service.
  </ResponseField>

  ```json theme={"system"}
  {
    "provider": "bridge",
    "environment": "sandbox",
    "status": "pending",
    "link": "https://compliance.sandbox.bridge.xyz/accept-tos?customer_id=..."
  }
  ```
</View>

Pass the `link` to your app's frontend so the organization's representative can accept the terms of service. The request is idempotent: calling it again for the same organization returns a link for the existing Bridge customer.

## Next steps

<CardGroup cols={2}>
  <Card title="Hosted KYB" icon="link" href="/kyc-kyb/kyb">
    Send the organization through Bridge's hosted verification flow
  </Card>

  <Card title="Headless KYB" icon="code" href="/kyc-kyb/kyb-headless">
    Submit verification data from your server
  </Card>
</CardGroup>
