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

# End User Onboarding

> Programmatically onboard your customers to Circle products using the End User Onboarding API

The End User Onboarding API lets you create and manage onboarding applications
for your customers. Collect business data, upload documents, and submit
applications for compliance review through one REST API. This removes manual
steps as you scale.

Use the End User Onboarding API when you need to bring your own end users onto
Circle's platform. This is required for products where Circle performs Know Your
Business (KYB) verification on your customers, such as
[Digital Asset Accounts](/digital-asset-accounts). The API covers the full
application lifecycle, from draft through approval, including Requests for
Information (RFIs) when the compliance team needs more data.

<Warning>
  End User Onboarding API access is enabled per account. Contact your [Circle
  representative](mailto:sales@circle.com) to provision sandbox and production
  access before calling the API.
</Warning>

## Key features

<CardGroup cols={3}>
  <Card title="Schema-driven forms" icon="brackets-curly">
    Retrieve a JSON Schema that defines required fields, validation rules, and
    conditional dependencies.
  </Card>

  <Card title="Bulk data submission" icon="layer-group">
    Submit all sections in one call. The API validates first, then saves each in
    order.
  </Card>

  <Card title="Document management" icon="file-arrow-up">
    Upload, list, and delete documents. Files link to the relevant application
    fields and entities.
  </Card>
</CardGroup>

## What you can build

<AccordionGroup>
  <Accordion title="Embedded onboarding flows" icon="window">
    Build onboarding forms in your platform. Use the JSON Schema to render fields
    and conditional sections. Your customers stay in your app the whole time.
  </Accordion>

  <Accordion title="Automated bulk onboarding" icon="robot">
    Migrate existing customers by creating applications and submitting data in bulk.
    One request per application fills all sections at once.
  </Accordion>

  <Accordion title="RFI management dashboards" icon="clipboard-check">
    Surface RFIs to your operations team or to customers. Webhook notifications
    drive real-time updates and automate follow-ups.
  </Accordion>
</AccordionGroup>

## How it works

<Steps>
  <Step title="Create a draft application">
    You create a draft application for your customer. It starts in `DRAFT`
    status with a schema that lists the required fields.
  </Step>

  <Step title="Collect data and documents">
    You save section data and upload documents. The API validates each
    submission against the schema.
  </Step>

  <Step title="Submit for compliance review">
    When all sections are complete, you submit the application. Circle's
    compliance team reviews it and either approves it or issues requests for
    information (RFIs).
  </Step>

  <Step title="Handle RFIs and resubmit">
    If the team requests more data, you update the sections or documents and
    resubmit. The application moves through statuses until it reaches a final
    state.
  </Step>
</Steps>

## Get started

<CardGroup cols={2}>
  <Card title="Submit onboarding application" icon="rocket" href="/end-user-onboarding/quickstarts/submit-onboarding-application">
    Walk through an application end to end in sandbox
  </Card>

  <Card title="Application states" icon="diagram-project" href="/end-user-onboarding/references/application-states">
    Learn the statuses an application moves through
  </Card>

  <Card title="Create and populate applications" icon="file-lines" href="/end-user-onboarding/howtos/create-and-populate-applications">
    Walk through the full application lifecycle
  </Card>

  <Card title="Handle requests for information" icon="clipboard-check" href="/end-user-onboarding/howtos/handle-rfis">
    Respond to compliance team RFIs and resubmit
  </Card>
</CardGroup>
