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

# KYC Partner URL

> Generate a partner KYC URL via the initiate KYC endpoint for USD onramp flows, then poll status.

Saber relies on external partners to offer services in certain geographies. This comes with specific KYC requirements, mostly through a partner URL.

Currently, the KYC Partner URL is required for **USD Onramp** flows.

You need to initiate KYC using an API endpoint, which returns the KYC URL. This URL needs to be shared with the end user to submit the required documents and proceed with KYC.

## Steps for generating KYC URL

1. Create a User with the respective country's phone and email.
2. **Generate URL:** The URL can be generated using the initiate KYC endpoint.
3. **Fetch KYC Status:** Use the GET User endpoint to fetch KYC status.

### Sample request

```bash theme={null}
curl --location 'https://api.saber.money/api/v2/user/kyc/initiate' \
  --header 'X-Timestamp: 1756203151' \
  --header 'X-Api-Key: 0739df4c-b22b-4874-8ca7-33dc89a832da' \
  --header 'X-Signature: 161AF50C3A6880583DFAE2D4AE1002734C60ACD2285057664A6C29FF83922DD6' \
  --header 'X-Request-Id: 123456789876' \
  --header 'X-User-Id: e3cc357f-453d-44f0-b1c1-859ec229312c' \
  --header 'Content-Type: application/json' \
  --data '{
    "country": "USA"
  }'
```

## Returning the user to your app

The partner KYC URL returned by the initiate endpoint is a **Persona** hosted URL. Persona uses `redirect-uri` (hyphenated) rather than `redirect_url`, so append it as the last query parameter on the URL you received:

```text theme={null}
&redirect-uri=<url-encoded-url>
```

Full example:

```text theme={null}
https://withpersona.com/verify?inquiry-template-id=itmpl_ABC123&environment-id=env_ABC123&reference-id=e3cc357f-453d-44f0-b1c1-859ec229312c&redirect-uri=https%3A%2F%2Fyourapp.com%2Fkyc%2Fcomplete
```

<Note>
  Append the parameter to the URL exactly as returned — don't rebuild or reorder the existing query parameters, as they carry the inquiry and reference IDs. The value must be URL-encoded.

  A redirect only signals that the user left the flow — it is not confirmation that KYC passed. Confirm the outcome via the GET User endpoint or the [KYC status webhook](/user/kyc/webhooks).
</Note>

**Notes:**

* Required for USD onramp flows — no alternative flow is supported.
* Use the correct phone number format for the source country (US format) to avoid errors.


## Related topics

- [Overview](/user/kyc/overview.md)
- [KYC Widget](/user/kyc/widget.md)
- [Frequently Asked Questions](/faq.md)
- [USD Onramp](/onramp/currencies/usd.md)
