---
title: "Create Onramp Session"
method: POST
path: "/onramp/intents/{intent_id}/session"
tags: ["onramp"]
---

# Create Onramp Session

`POST /onramp/intents/{intent_id}/session`

Create a headless Stripe embedded onramp session from a server-held onramp intent using the server-held Link OAuth access token. If Stripe identity or KYC action is required, this endpoint returns 422 with action fields in error.details, including status, reason, kyc_next_step, kyc_status, kyc_required, identity_verification_required, and identity_verification_status.

## Path parameters

- `intent_id` string, required

## Headers

- `X-API-KEY` string, required

## Request body

- OnrampSessionRequest
  - `auth_intent_id` string, required — Stripe Link auth intent ID returned by /onramp/auth/intent
  - `crypto_customer_id` string, required — Crypto customer ID returned by the Stripe embedded component after Link authentication
  - `payment_token` string, required — cryptoPaymentToken returned by the Stripe embedded component payment method collection step

## Response `201`

Headless onramp session created

- OnrampSessionResponse
  - `id` string, required
  - `quote_expires_at` integer, nullable

## Other responses

- `401` — Unauthorized
- `404` — Onramp intent not found
- `422` — Invalid request body, unsupported onramp destination, or Stripe identity/KYC action required
- `500` — Failed to create onramp session

---

[API](https://skmtc.net/coinvoyage/apis/coinvoyage-api-v3.md) · [All operations](https://skmtc.net/coinvoyage/apis/coinvoyage-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/coinvoyage/coinvoyage-api-v3/revisions/f3a3056f2c83/schema)
