---
description: "This endpoint initiates Noah's hosted session for automated crypto-to-fiat workflows."
title: "Convert Crypto to Fiat Session"
---

# Convert Crypto to Fiat Session

> This endpoint initiates Noah's hosted session for automated crypto-to-fiat workflows.

```http
POST /hosted-workflows/onchain-deposit-to-payment-method
```

- `https://api.sandbox.noah.com/v1/hosted-workflows/onchain-deposit-to-payment-method` — V1 Sandbox Server
- `https://api.noah.com/v1/hosted-workflows/onchain-deposit-to-payment-method` — V1 Production Server

## Authentication

- `X-Api-Key`: Your Noah API key. Required on all requests. See [API Keys](/api-concepts/authentication/api).
- `Api-Signature`: Digitally signed JWT used to verify request authenticity. Optional in sandbox when your API key has no associated signing public key; required in production for all requests. If sent, the signature is always validated. See [Request Signing](/api-concepts/authentication/signing).

## Request body

### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `ReturnURL` | string (uri) | Yes | (length 10-1000) |
| `ChannelID` | string (uuid) | Yes | Unique identifier for the channel. (length 36-36) |
| `FiatAmount` | string | No | Amount sent to customer's payment method. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Network` | string | Yes | Payments network (prod/sandbox): * Base/BaseTestSepolia * Bitcoin/BitcoinTest * Celo/CeloTestSepolia * Ethereum/EthereumTestSepolia * FlowEvm/FlowEvmTest * Gnosis/GnosisTestChiado * PolygonPos/PolygonTestAmoy * Solana/SolanaDevnet * OffNetwork/OffNetwork |
| `CryptoCurrency` | string | Yes | Cryptocurrency: \| Environment \| BTC \| ETH \| USDC \| \|------------\|-----\|-------\|------\| \| Sandbox \| BTC_TEST \| ETH_TEST_SEPOLIA \| USDC_TEST \| \| Production \| BTC \| ETH \| USDC \| |
| `ExternalID` | string | No | A unique identifier used in the business system to store a reference for the transaction. This field allows businesses to track and manage transactions within their internal systems. (length 1-36) |
| `Metadata` | Record<string, string> | No | Custom user defined key value pairs used for storing additional information. |
| `BusinessFee` | object | No | Per-transaction business fee configuration. When supplied, this fee is applied to the customer's transaction on behalf of the business. |
| `BusinessFee.FeeBase` | string | No | Fixed base fee amount. When set, FiatCurrency is required. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `BusinessFee.FeePct` | string | No | Variable percentage fee from 0 to 100 (e.g. 0.5 means 0.5%, 50 means 50%). (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `BusinessFee.FiatCurrency` | string | No | Supported fiat ISO_4217 3 letter currency codes. |

## Responses

### 200 — HostedURL successfully created.

#### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `HostedURL` | string (uri) | Yes | URL to redirect the customer to hosted session. |
| `FormSchema` | object | No | JSON schema for the form |
| `FormSchema.$schema` | string | Yes |  |
| `FormSchema.type` | string | Yes |  |
| `FormSchema.title` | string | No |  |
| `FormSchema.description` | string | No |  |
| `FormSchema.properties` | object | Yes | (additional properties allowed) |
| `FormSchema.required` | string[] | No |  |
| `FormSchema.allOf` | object[] | No |  |
| `OnboardingStatus` | `ReviewNotStarted` \| `ReviewPending` \| `DocumentInvalid` \| `AgreementsRequired` \| `Rejected` | No | Indicates the current status of the onboarding process. |
| `MissingSteps` | string[] | No | Verification step types that are still incomplete (e.g. IDENTITY, SELFIE, QUESTIONNAIRE). Only present when OnboardingStatus is ReviewNotStarted and the applicant has not yet submitted all required data for the initial verification. For follow-up verification requirements, please refer to customer webhooks. |
| `Verifications` | object | No | Verification data for the customer |
| `Verifications.Type` | `Individual` \| `Business` | Yes |  |
| `Verifications.Status` | string | Yes |  |
| `Verifications.ActionsRequired` | (`HighRiskInfo` \| `HighRiskInfoSenior` \| `SourceOfWealth` \| `DocumentPageMissing` \| `DocumentReupload` \| `SelfieReupload` \| `ProofOfAddress` \| `ProofOfAddressReupload` \| `IncorrectTaxID`)[] | No | Additional actions currently required from the customer to complete the review. |
| `Verifications.EntityVerifications` | object[] | Yes |  |
| `Verifications.EntityVerifications[].Model` | string | Yes |  |
| `Verifications.EntityVerifications[].Status` | string | Yes |  |
| `Verifications.EntityVerifications[].Created` | string (date-time) | Yes |  |
| `Verifications.EntityVerifications[].Modified` | string (date-time) | Yes |  |
| `Verifications.EntityVerifications[].Entity` | string | Yes |  |
| `Verifications.EntityVerifications[].RejectionData` | object | No |  |
| `Verifications.EntityVerifications[].RejectionData.RejectType` | `Final` \| `Retry` | Yes |  |
| `Verifications.EntityVerifications[].RejectionData.PublicComment` | string | No |  |

### 400 — Bad request

### 401 — Client is not authorized to perform this action

### 500 — Internal server error

Error responses share one `Error` envelope across the whole API. See https://docs.noah.com/api-concepts/errors.md for its fields, the `Type` values, and the field-level validation details in `RequestExtension` and `DenyExtension`.

## See also

- Rendered reference: https://docs.noah.com/api-reference/convert-crypto-to-fiat-session
- OpenAPI document: https://docs.noah.com/files/oas-schema.generated.json
