---
description: "This endpoint initiates Noah’s hosted checkout session for cryptocurrency payments."
title: "Create Crypto Payin Session"
---

# Create Crypto Payin Session

> This endpoint initiates Noah’s hosted checkout session for cryptocurrency payments.

```http
POST /checkout/payin/crypto
```

- `https://api.sandbox.noah.com/v1/checkout/payin/crypto` — V1 Sandbox Server
- `https://api.noah.com/v1/checkout/payin/crypto` — 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 |
| --- | --- | --- | --- |
| `CryptoCurrency` | string | Yes | Cryptocurrency: \| Environment \| BTC \| ETH \| USDC \| \|------------\|-----\|-------\|------\| \| Sandbox \| BTC_TEST \| ETH_TEST_SEPOLIA \| USDC_TEST \| \| Production \| BTC \| ETH \| USDC \| |
| `CryptoAmount` | string | Yes | (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `ReturnURL` | string (uri) | Yes | (length 10-1000) |
| `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) |
| `CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `LineItems` | object[] | Yes | List of line items that your customer is purchasing using this Hosted Checkout Session. This is used for display purposes for the customer during Checkout as well as remediation of disputed payments. We do not make any calculations using this data. |
| `LineItems[].Description` | string | Yes | Description of the line item. (length 1-140) |
| `LineItems[].Quantity` | string | Yes | Quantity of the line item. Must be greater than zero. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `LineItems[].UnitAmount` | string | Yes | Amount of a single unit of the line item. Must be in the same currency as the transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `LineItems[].TotalAmount` | string | Yes | Total amount of the line item (UnitAmount * Quantity). Must be in the same currency as the transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Nonce` | string | Yes | A string which must be unique each time a new transaction is created, like a UUID or operation sequence number. Request can be idempotently retried by using the same Nonce. (length 1-36) |

## Responses

### 200 — Checkout request created

#### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `HostedURL` | string (uri) | Yes | URL to redirect the customer to the checkout page. |
| `CheckoutSession` | object | Yes |  |
| `CheckoutSession.CheckoutSessionID` | string | Yes | Unique ID of session. |
| `CheckoutSession.PaymentMethodCategory` | string | No | Categorizes one or more `PaymentMethodType`s into broader groups. Useful for listing channels, displaying payment methods: * Bank * Card * Identifier |
| `CheckoutSession.SourceCurrency` | string | Yes | A scalar representing a financial asset code. Suitable for use in cases where exactly one of the currency codes must be provided. |
| `CheckoutSession.DestinationCurrency` | string | Yes | A scalar representing a financial asset code. Suitable for use in cases where exactly one of the currency codes must be provided. |
| `CheckoutSession.SourceAmount` | string | No | (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.DestinationAmount` | string | No | (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.AuthorizedAmount` | string | No | Maximum amount that can be charged for this transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.Status` | string | Yes | Status of CheckoutSession: * Pending * Failed * Settled Note: other statuses could be added in the future |
| `CheckoutSession.ExternalID` | string | No | Unique identifier in user's system. |
| `CheckoutSession.CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `CheckoutSession.ReturnURL` | string (uri) | Yes | The URL to which the user is redirected at the end of the Hosted Checkout session. We will include the CheckoutSessionID, ExternalID and Status of the session, ie `?CheckoutSessionID={CheckoutSessionID}&ExternalID={ExternalID}&Status={Status}` (length 10-1000) |
| `CheckoutSession.LineItems` | object[] | Yes |  |
| `CheckoutSession.LineItems[].Description` | string | Yes | Description of the line item. (length 1-140) |
| `CheckoutSession.LineItems[].Quantity` | string | Yes | Quantity of the line item. Must be greater than zero. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.LineItems[].UnitAmount` | string | Yes | Amount of a single unit of the line item. Must be in the same currency as the transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.LineItems[].TotalAmount` | string | Yes | Total amount of the line item (UnitAmount * Quantity). Must be in the same currency as the transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CheckoutSession.Type` | string | Yes | Type of checkout session: * PayinCrypto * PayinFiat * PayoutFiat |
| `CheckoutSession.Expiry` | string (date-time) | No | Time the checkout expires (example: 2020-01-01T00:00:00Z) |
| `CheckoutSession.Created` | string (date-time) | Yes | Time the checkout was created (example: 2020-01-01T00:00:00Z) |

### 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/create-crypto-payin-session
- OpenAPI document: https://docs.noah.com/files/oas-schema.generated.json
