---
description: "This endpoint initiates an immediate transaction to sell specified cryptocurrency and send the resulting fiat currency to a designated payout method."
title: "Create Sell Transaction"
---

# Create Sell Transaction

> This endpoint initiates an immediate transaction to sell specified cryptocurrency and send the resulting fiat currency to a designated payout method.

```http
POST /transactions/sell
```

- `https://api.sandbox.noah.com/v1/transactions/sell` — V1 Sandbox Server
- `https://api.noah.com/v1/transactions/sell` — 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 \| |
| `FiatAmount` | string | No | Amount sent to customer's payment method. When omitted, the full `CryptoAuthorizedAmount` is sold at the execution-time market rate (full liquidation mode). (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `CryptoAuthorizedAmount` | string | Yes | Maximum amount that can be charged for this transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `FormSessionID` | string (uuid) | Yes | Unique identifier for the Form Session. Form Session allows ramping using provided form data. |
| `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) |
| `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) |

## Responses

### 202 — Sell request successful

#### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `Transaction` | object | Yes |  |
| `Transaction.ID` | string (uuid) | Yes | NOAH's unique identifier for the transaction. |
| `Transaction.PublicID` | string | No | The public blockchain transaction id or hash. This identifier is only available for transactions that are broadcast to a public network. |
| `Transaction.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 |
| `Transaction.Created` | string (date-time) | Yes | When was this transaction created. |
| `Transaction.Status` | `Pending` \| `Failed` \| `Settled` | Yes | Statuses for transactions. |
| `Transaction.SubStatus` | string | No | Additional detail about the transaction status: * TransactionMonitoring * Confirming |
| `Transaction.RFI` | object | No | Request-for-information details. |
| `Transaction.RFI.Status` | `Pending` \| `Closed` \| `Completed` | Yes | Status of a request for information. |
| `Transaction.Direction` | `In` \| `Out` | Yes | Whether the transactions was a credit (in) or a debit (out) in your account |
| `Transaction.CustomerID` | string | No | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `Transaction.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) |
| `Transaction.Amount` | string | No | The net crypto amount transacted, affecting the balance. This amount **excludes** the `NetworkFee`. For buy transactions, this is the amount after payment fees. For sell transactions, this is the amount before payment fees. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.NetworkFee` | string | No | Amount paid to cover the onchain network or gas fee associated with the transaction, if applicable. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.CryptoCurrency` | string | Yes | Cryptocurrency: \| Environment \| BTC \| ETH \| USDC \| \|------------\|-----\|-------\|------\| \| Sandbox \| BTC_TEST \| ETH_TEST_SEPOLIA \| USDC_TEST \| \| Production \| BTC \| ETH \| USDC \| |
| `Transaction.DestinationAddress` | object | No | A destination address to transfer cryptocurrency |
| `Transaction.DestinationAddress.Address` | string | Yes |  |
| `Transaction.FiatPayment` | object | No | * For buy transactions, `Transaction.Amount = (FiatPayment.Amount - FiatPayment.FeeAmount) / FiatPayment.Rate` * For sell transactions, `Transaction.Amount = (FiatPayment.Amount + FiatPayment.FeeAmount) / FiatPayment.Rate` |
| `Transaction.FiatPayment.Amount` | string | Yes | The final amount that has been debited (for buy transactions) or credited (for sell transactions) from the payment method. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.FiatPayment.FeeAmount` | string | Yes | The fee applied to this payment. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.FiatPayment.Rate` | string | No | Crypto/Fiat exchange rate. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.FiatPayment.FiatCurrency` | string | Yes | Supported fiat ISO_4217 3 letter currency codes. |
| `Transaction.FiatPayment.FiatDepositID` | string | No | The ID of the deposit when the payment originated from a deposit. |
| `Transaction.FiatPayment.PaymentSystemID` | string | No | The transaction ID in the payment system (e.g., IMAD for Wire, UETR for Swift, Trace Number for ACH). |
| `Transaction.Orchestration` | object | No | Orchestration details for the transaction. |
| `Transaction.Orchestration.RuleID` | string | Yes | Unique identifier for the rule that is matched for the transaction. |
| `Transaction.Orchestration.RuleExecutionID` | string | Yes | Unique identifier for the execution of the rules that is matched for the transaction. |
| `Transaction.FiatPaymentMethod` | object | No | Information about the fiat payment method used to facilitate this transaction. |
| `Transaction.FiatPaymentMethod.ID` | string | Yes |  |
| `Transaction.FiatPaymentMethod.CustomerID` | string | No | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `Transaction.FiatPaymentMethod.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `Transaction.FiatPaymentMethod.PaymentMethodCategory` | string | Yes | Categorizes one or more `PaymentMethodType`s into broader groups. Useful for listing channels, displaying payment methods: * Bank * Card * Identifier |
| `Transaction.FiatPaymentMethod.DisplayDetails` | FiatPaymentMethodBankDisplay \| FiatPaymentMethodCardDisplay \| FiatPaymentMethodIdentifierDisplay | Yes | Contains information to display each payment method, with fields tailored to the specific type (e.g., last four digits or account number) to help identify the payment method. (discriminated by `Type`) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay]` | object | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].Type` | `FiatPaymentMethodBankDisplay` | Yes |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].AccountNumber` | string | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankCode` | string | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].RoutingNumber` | string | No | The routing number of the sender's financial institution (e.g., ODFI routing number for ACH deposits). |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].SwiftCode` | string | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankingSystems` | string[] | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankName` | string | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress` | object | No | Physical postal address. All string fields must be printable ASCII. State and PostCode are required for every country. See [Address Validation](/api-concepts/address-validation) for country-specific rules and payment-form differences. |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.Street` | string | Yes | Street: the primary name of an address's street. Printable ASCII only. (length 2-200) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.Street2` | string | No | Street2: the secondary name of an address's street. Optional. Printable ASCII only. (length 0-200) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.City` | string | Yes | City: name of an address's city or town. Printable ASCII only. (length 1-100) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.PostCode` | string | Yes | PostCode: the address's postcode or ZIP code. Required for all countries (1-20 characters). Use the format from the customer's official documents. Placeholder values such as 00000 or NA are not accepted. (length 1-20) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.State` | string | Yes | State: the address's state, province, or county. Required for all countries (1-100 characters). For USA and Canada, use the ISO 3166-2 subdivision code as two uppercase letters (e.g. CA). For other countries, use the local administrative division name. Placeholders such as NA or None are not accepted. (length 1-100) |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodBankDisplay].BankAddress.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodCardDisplay]` | object | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodCardDisplay].Type` | `FiatPaymentMethodCardDisplay` | Yes |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodCardDisplay].Last4` | string | Yes |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodCardDisplay].Scheme` | string | Yes | The card scheme: * Mastercard * Visa |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodIdentifierDisplay]` | object | No |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodIdentifierDisplay].Type` | `FiatPaymentMethodIdentifierDisplay` | Yes |  |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodIdentifierDisplay].IdentifierType` | string | Yes | Identifier type: * PhoneNumber * Email * TaxID |
| `Transaction.FiatPaymentMethod.DisplayDetails[FiatPaymentMethodIdentifierDisplay].Identifier` | string | Yes |  |
| `Transaction.FiatPaymentMethod.Capabilities` | object | No |  |
| `Transaction.FiatPaymentMethod.Capabilities.PayoutFrom` | boolean | Yes | internally generated, can take money out of the system |
| `Transaction.FiatPaymentMethod.Capabilities.PayinTo` | boolean | Yes | user supplied, can add money into the system |
| `Transaction.FiatPaymentMethod.Capabilities.PayoutTo` | boolean | Yes | user supplied, can take money out of the system |
| `Transaction.FiatPaymentMethod.AccountHolderDetails` | object | No | Details of the account holder associated with the payment method. |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.Type` | `Individual` \| `Business` | No | Type of account holder. |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.Name` | object | No | Name of the individual account holder. Used when Type is Individual. |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.Name.FirstName` | string | Yes | user's first name (length 1-50) |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.Name.LastName` | string | Yes | user's last name (family name) (length 1-50) |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.Name.MiddleName` | string | No | user's middle name (length 1-50) |
| `Transaction.FiatPaymentMethod.AccountHolderDetails.BusinessName` | string | No | Name of the business account holder. Used when Type is Business. |
| `Transaction.FiatPaymentMethod.IssuerDetails` | object | No | Details of the issuer of the payment method (e.g. the bank for bank transfers). |
| `Transaction.FiatPaymentMethod.IssuerDetails.Name` | string | No | Name of the issuer (e.g. the bank or financial institution). |
| `Transaction.Breakdown` | object[] | No | This list explains how the transaction amount was calculated. |
| `Transaction.Breakdown[].Type` | string | Yes | What does the breakdown item amount refer to: * ChannelFee: amount withheld by the system from the fiat payment * BusinessFee: amount withheld on behalf of the business from its customers transactions * Remaining: net amount after all fees have been deducted |
| `Transaction.Breakdown[].Amount` | string | Yes | (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.Breakdown[].FixedAmount` | string | No | Fixed base portion of this fee line (same unit as Amount). (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.Breakdown[].VariableAmount` | string | No | Variable percentage portion of this fee line (same unit as Amount). (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.AdjustmentFor` | object | No | Identifies a transaction that this transaction adjusts and details about the adjustment. |
| `Transaction.AdjustmentFor.AdjustedTransactionID` | string (uuid) | Yes | ID of the transaction being adjusted. |
| `Transaction.AdjustmentFor.AdjustmentID` | string (uuid) | Yes | A unique identifier linking related transactions that are involved in a single Adjustment. For Adjustments involving multiple transactions, this ID is shared across all associated records. |
| `Transaction.AdjustmentFor.Reason` | string | Yes | Why the adjustment was made: * ExchangeRateCorrection * Refund |
| `Transaction.Refunds` | object[] | No | Refund attempts associated with this transaction. |
| `Transaction.Refunds[].RefundID` | string | Yes | Identifier of the refund payment. |
| `Transaction.Refunds[].RefundedAmount` | string | Yes | Amount requested to refund. May be equal, less or greater than the original amount. It could be greater if the AssetID from refund is different from the AssetID from the original transaction. (length 1-38; pattern `^[+]?([.]\d+\|\d+[.]?\d*)$`) |
| `Transaction.Refunds[].Currency` | string | Yes | Currency of the refund payment. |
| `Transaction.Refunds[].RequestTime` | string (date-time) | Yes | Timestamp when the refund was requested. |
| `Transaction.Refunds[].Status` | `Pending` \| `Failed` \| `Settled` | Yes | Statuses for transactions. |
| `Transaction.Reverses` | string (uuid) | No | If present, this transaction is a reversal of the transaction identified by this ID. |

### 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-sell-transaction
- OpenAPI document: https://docs.noah.com/files/oas-schema.generated.json
