Create an order
Creates an order for a supported source and destination currency pair, including pricing and recipient validation. Returns 202 with the order in its pending state.
curl --request POST \
--url https://api.sandbox.conduit.financial/v2/orders \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"destination": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"amount": "<string>",
"source": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"clientReferenceId": "<string>",
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"swift": {
"purposeOfPayment": "<string>"
},
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
},
"documents": [
"<string>"
]
},
"autoExecute": false
}
'import requests
url = "https://api.sandbox.conduit.financial/v2/orders"
payload = {
"destination": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"amount": "<string>",
"source": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"clientReferenceId": "<string>",
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"swift": { "purposeOfPayment": "<string>" },
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
},
"documents": ["<string>"]
},
"autoExecute": False
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
destination: {type: 'wallet', id: '<string>', asset: {}},
amount: '<string>',
source: {type: 'wallet', id: '<string>', asset: {}},
clientReferenceId: '<string>',
autoPayout: {
recipient: {
rail: 'us',
accountNumber: '<string>',
routingNumber: '<string>',
bankAddress: {
addressLine1: '<string>',
city: '<string>',
country: '<string>',
addressLine2: '<string>',
state: '<string>',
postalCode: '<string>'
},
type: 'individual',
firstName: '<string>',
lastName: '<string>',
postalAddress: {
addressLine1: '<string>',
city: '<string>',
country: '<string>',
addressLine2: '<string>',
state: '<string>',
postalCode: '<string>'
},
bankName: '<string>',
phone: '<string>',
dateOfBirth: '2023-12-25',
countryOfCitizenship: '<string>'
},
swift: {purposeOfPayment: '<string>'},
instant: {},
remittance: {reference: '<string>', description: '<string>'},
documents: ['<string>']
},
autoExecute: false
})
};
fetch('https://api.sandbox.conduit.financial/v2/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.conduit.financial/v2/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination' => [
'type' => 'wallet',
'id' => '<string>',
'asset' => [
]
],
'amount' => '<string>',
'source' => [
'type' => 'wallet',
'id' => '<string>',
'asset' => [
]
],
'clientReferenceId' => '<string>',
'autoPayout' => [
'recipient' => [
'rail' => 'us',
'accountNumber' => '<string>',
'routingNumber' => '<string>',
'bankAddress' => [
'addressLine1' => '<string>',
'city' => '<string>',
'country' => '<string>',
'addressLine2' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'type' => 'individual',
'firstName' => '<string>',
'lastName' => '<string>',
'postalAddress' => [
'addressLine1' => '<string>',
'city' => '<string>',
'country' => '<string>',
'addressLine2' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'bankName' => '<string>',
'phone' => '<string>',
'dateOfBirth' => '2023-12-25',
'countryOfCitizenship' => '<string>'
],
'swift' => [
'purposeOfPayment' => '<string>'
],
'instant' => [
],
'remittance' => [
'reference' => '<string>',
'description' => '<string>'
],
'documents' => [
'<string>'
]
],
'autoExecute' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.conduit.financial/v2/orders"
payload := strings.NewReader("{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.conduit.financial/v2/orders")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.conduit.financial/v2/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"customerId": "<string>",
"destination": {
"type": "wallet",
"id": "<string>"
},
"sourceAsset": {
"amount": "<string>"
},
"destinationAsset": {
"amount": "<string>"
},
"rate": {
"referenceRate": "<string>",
"totalSpreadBps": "<string>",
"endUserRate": "<string>"
},
"fees": [
{
"type": "fixed",
"assetAmount": {
"amount": "<string>"
}
}
],
"totalDebit": {
"amount": "<string>"
},
"lockExpiresAt": "2026-01-15T09:30:00.000Z",
"createdAt": "2026-01-15T09:30:00.000Z",
"autoExecute": true,
"linkedTransactionIds": [
"<string>"
],
"clientReferenceId": "<string>",
"source": {
"type": "wallet",
"id": "<string>"
},
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"ach": {},
"swift": {
"purposeOfPayment": "<string>"
},
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
}
},
"executedAt": "2026-01-15T09:30:00.000Z",
"cancelledAt": "2026-01-15T09:30:00.000Z",
"failureMessage": "<string>",
"depositInstructions": [
{
"type": "crypto_address",
"address": "<string>",
"expiresAt": "2026-01-15T09:30:00.000Z"
}
],
"fundedBy": [
{
"transactionId": "<string>",
"amount": {
"amount": "<string>"
}
}
]
}{
"type": "INVALID_OID_FORMAT",
"title": "Invalid Object ID Format",
"status": 400,
"detail": "A path or query parameter expected a valid object identifier but received a value that does not match the expected format.",
"resolution": "Verify that all IDs in the request URL and query parameters are correctly formatted. IDs are typically prefixed strings like 'cus_...', 'app_...', or 'doc_...'.",
"docs": "https://conduit-v2.mintlify.app/errors#invalid-oid-format",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "API_KEY_MISSING",
"title": "API Key Missing",
"status": 401,
"detail": "The request did not include an API key. All API requests must be authenticated.",
"resolution": "Include your API key in the 'x-api-key' header with every request.",
"docs": "https://conduit-v2.mintlify.app/errors#api-key-missing",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "API_KEY_READ_ONLY",
"title": "API Key Is Read-Only",
"status": 403,
"detail": "This API key has read-only access and cannot perform write operations. Read-only keys may make read requests (GET, HEAD, OPTIONS) only.",
"resolution": "Use a read-write API key for this request, or have an organization admin mint one from the dashboard.",
"docs": "https://conduit-v2.mintlify.app/errors#api-key-read-only",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "NO_PRICING_CONFIGURED",
"title": "No Pricing Configured",
"status": 404,
"detail": "No active pricing profile contains a base pricing rule for the requested asset pair.",
"resolution": "Configure a base pricing rule for the source/destination pair before requesting an order.",
"docs": "https://conduit-v2.mintlify.app/errors#no-pricing-configured",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "IDEMPOTENCY_KEY_CONFLICT",
"title": "Idempotency Key Conflict",
"status": 409,
"detail": "The idempotency key was previously used with a different request body. Idempotency keys are bound to the exact request shape — replays must match the original.",
"resolution": "Use a fresh idempotency key for the new request, or replay the original request unchanged.",
"docs": "https://conduit-v2.mintlify.app/errors#idempotency-key-conflict",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "UNSUPPORTED_MEDIA_TYPE",
"title": "Unsupported Media Type",
"status": 415,
"detail": "The request carries a body with a Content-Type this endpoint cannot parse. JSON endpoints accept 'application/json'; a body with no Content-Type header at all is assumed to be JSON. File-upload endpoints accept only 'multipart/form-data' — JSON or undeclared bodies are rejected there.",
"resolution": "Send the request body with the 'Content-Type: application/json' header. For file uploads, use 'Content-Type: multipart/form-data' — upload endpoints accept no other body type.",
"docs": "https://conduit-v2.mintlify.app/errors#unsupported-media-type",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "UNSUPPORTED_PAIR",
"title": "Unsupported Pair",
"status": 422,
"detail": "The requested source and destination asset pair is not supported.",
"resolution": "Check the configured trading pairs and submit a supported source/destination asset combination.",
"docs": "https://conduit-v2.mintlify.app/errors#unsupported-pair",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "RATE_LIMITED",
"title": "Rate Limited",
"status": 429,
"detail": "Too many requests. This error is returned by three independent checks: the per-organization bucket applied to every authenticated API request; the per-IP bucket applied to unauthenticated traffic before an API key is validated; and the per-IP bucket applied when repeated invalid API keys are submitted from the same address. Honor the Retry-After header (also exposed as retryAfterSeconds in the body) before retrying. Current limits and remaining budget are visible in X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on rate-limited route responses.",
"resolution": "Sleep until Retry-After seconds have elapsed, then retry. For sustained workloads exceeding the per-organization defaults, request a rate-limit increase through your support contact.",
"docs": "https://conduit-v2.mintlify.app/errors#rate-limited",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z",
"retryAfterSeconds": 3
}{
"type": "INTERNAL_ERROR",
"title": "Internal Error",
"status": 500,
"detail": "An unexpected error occurred while processing your request.",
"resolution": "Retry the request after a brief delay. If the error persists, contact support and include the correlationId from the error response for investigation.",
"docs": "https://conduit-v2.mintlify.app/errors#internal-error",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "RATE_UNAVAILABLE",
"title": "Rate Unavailable",
"status": 503,
"detail": "A live exchange rate could not be retrieved for the requested currency pair. The rate provider may be temporarily unavailable.",
"resolution": "Retry the request after a short delay. If the error persists, the rate provider for this currency pair may be experiencing an outage.",
"docs": "https://conduit-v2.mintlify.app/errors/rate-unavailable",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}Authorizations
Headers
Caller-generated unique key that lets the server safely replay this request. The cached response is returned for 5 minutes on any retry with the same key from the same API principal. Required on every state-changing money-moving or resource-creating POST.
1 - 128^[A-Za-z0-9_.:-]{1,128}$Body
- Option 1
- Option 2
- Option 1
- Option 2
Show child attributes
Show child attributes
source, destination - Option 1
- Option 2
Show child attributes
Show child attributes
Client-supplied reference, unique per resource within your organization. 1-255 characters from A-Za-z, 0-9, underscore, hyphen, colon, and period — no spaces.
^[A-Za-z0-9_\-:.]{1,255}$- Option 1
- Option 2
Show child attributes
Show child attributes
Response
^ord_[0-9A-Za-z]{22}$^cus_[0-9A-Za-z]{22}$pending, succeeded, failed, cancelled onramp, offramp, conversion - Option 1
- Option 2
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
source, destination Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
^txn_[0-9A-Za-z]{22}$Client-supplied reference, unique per resource within your organization. 1-255 characters from A-Za-z, 0-9, underscore, hyphen, colon, and period — no spaces.
^[A-Za-z0-9_\-:.]{1,255}$The funding resource, when the order named one. Omitted entirely on a deposit-funded order (created without a source): the funding wallet is Conduit-managed infrastructure with no client-resolvable id, and depositInstructions carries the address to fund at instead. The presence of depositInstructions is the discriminator.
- Option 1
- Option 2
Show child attributes
Show child attributes
AutoPayout payload. Crypto recipients omit rail/ach/swift/instant/remittance; fiat (us|swift) recipients require rail and may carry the matching per-rail context block.
Show child attributes
Show child attributes
ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
client, auto ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
expired, client_cancelled insufficient_funds, provider_unavailable, provider_rejected, internal_error, cancelled Where to send funds to fund this order. Exactly one crypto_address block.
1 elementShow child attributes
Show child attributes
Transfers that funded this order, with how much of each it draws. Present on the order detail read for an order funded at a Conduit funding address; omitted on the list read and on an order that names its own source.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.sandbox.conduit.financial/v2/orders \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"destination": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"amount": "<string>",
"source": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"clientReferenceId": "<string>",
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"swift": {
"purposeOfPayment": "<string>"
},
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
},
"documents": [
"<string>"
]
},
"autoExecute": false
}
'import requests
url = "https://api.sandbox.conduit.financial/v2/orders"
payload = {
"destination": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"amount": "<string>",
"source": {
"type": "wallet",
"id": "<string>",
"asset": {}
},
"clientReferenceId": "<string>",
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"swift": { "purposeOfPayment": "<string>" },
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
},
"documents": ["<string>"]
},
"autoExecute": False
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
destination: {type: 'wallet', id: '<string>', asset: {}},
amount: '<string>',
source: {type: 'wallet', id: '<string>', asset: {}},
clientReferenceId: '<string>',
autoPayout: {
recipient: {
rail: 'us',
accountNumber: '<string>',
routingNumber: '<string>',
bankAddress: {
addressLine1: '<string>',
city: '<string>',
country: '<string>',
addressLine2: '<string>',
state: '<string>',
postalCode: '<string>'
},
type: 'individual',
firstName: '<string>',
lastName: '<string>',
postalAddress: {
addressLine1: '<string>',
city: '<string>',
country: '<string>',
addressLine2: '<string>',
state: '<string>',
postalCode: '<string>'
},
bankName: '<string>',
phone: '<string>',
dateOfBirth: '2023-12-25',
countryOfCitizenship: '<string>'
},
swift: {purposeOfPayment: '<string>'},
instant: {},
remittance: {reference: '<string>', description: '<string>'},
documents: ['<string>']
},
autoExecute: false
})
};
fetch('https://api.sandbox.conduit.financial/v2/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.conduit.financial/v2/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination' => [
'type' => 'wallet',
'id' => '<string>',
'asset' => [
]
],
'amount' => '<string>',
'source' => [
'type' => 'wallet',
'id' => '<string>',
'asset' => [
]
],
'clientReferenceId' => '<string>',
'autoPayout' => [
'recipient' => [
'rail' => 'us',
'accountNumber' => '<string>',
'routingNumber' => '<string>',
'bankAddress' => [
'addressLine1' => '<string>',
'city' => '<string>',
'country' => '<string>',
'addressLine2' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'type' => 'individual',
'firstName' => '<string>',
'lastName' => '<string>',
'postalAddress' => [
'addressLine1' => '<string>',
'city' => '<string>',
'country' => '<string>',
'addressLine2' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'bankName' => '<string>',
'phone' => '<string>',
'dateOfBirth' => '2023-12-25',
'countryOfCitizenship' => '<string>'
],
'swift' => [
'purposeOfPayment' => '<string>'
],
'instant' => [
],
'remittance' => [
'reference' => '<string>',
'description' => '<string>'
],
'documents' => [
'<string>'
]
],
'autoExecute' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.conduit.financial/v2/orders"
payload := strings.NewReader("{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.conduit.financial/v2/orders")
.header("Idempotency-Key", "<idempotency-key>")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.conduit.financial/v2/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"amount\": \"<string>\",\n \"source\": {\n \"type\": \"wallet\",\n \"id\": \"<string>\",\n \"asset\": {}\n },\n \"clientReferenceId\": \"<string>\",\n \"autoPayout\": {\n \"recipient\": {\n \"rail\": \"us\",\n \"accountNumber\": \"<string>\",\n \"routingNumber\": \"<string>\",\n \"bankAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"type\": \"individual\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"postalAddress\": {\n \"addressLine1\": \"<string>\",\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"addressLine2\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"bankName\": \"<string>\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"2023-12-25\",\n \"countryOfCitizenship\": \"<string>\"\n },\n \"swift\": {\n \"purposeOfPayment\": \"<string>\"\n },\n \"instant\": {},\n \"remittance\": {\n \"reference\": \"<string>\",\n \"description\": \"<string>\"\n },\n \"documents\": [\n \"<string>\"\n ]\n },\n \"autoExecute\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"customerId": "<string>",
"destination": {
"type": "wallet",
"id": "<string>"
},
"sourceAsset": {
"amount": "<string>"
},
"destinationAsset": {
"amount": "<string>"
},
"rate": {
"referenceRate": "<string>",
"totalSpreadBps": "<string>",
"endUserRate": "<string>"
},
"fees": [
{
"type": "fixed",
"assetAmount": {
"amount": "<string>"
}
}
],
"totalDebit": {
"amount": "<string>"
},
"lockExpiresAt": "2026-01-15T09:30:00.000Z",
"createdAt": "2026-01-15T09:30:00.000Z",
"autoExecute": true,
"linkedTransactionIds": [
"<string>"
],
"clientReferenceId": "<string>",
"source": {
"type": "wallet",
"id": "<string>"
},
"autoPayout": {
"recipient": {
"rail": "us",
"accountNumber": "<string>",
"routingNumber": "<string>",
"bankAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"type": "individual",
"firstName": "<string>",
"lastName": "<string>",
"postalAddress": {
"addressLine1": "<string>",
"city": "<string>",
"country": "<string>",
"addressLine2": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"bankName": "<string>",
"phone": "<string>",
"dateOfBirth": "2023-12-25",
"countryOfCitizenship": "<string>"
},
"ach": {},
"swift": {
"purposeOfPayment": "<string>"
},
"instant": {},
"remittance": {
"reference": "<string>",
"description": "<string>"
}
},
"executedAt": "2026-01-15T09:30:00.000Z",
"cancelledAt": "2026-01-15T09:30:00.000Z",
"failureMessage": "<string>",
"depositInstructions": [
{
"type": "crypto_address",
"address": "<string>",
"expiresAt": "2026-01-15T09:30:00.000Z"
}
],
"fundedBy": [
{
"transactionId": "<string>",
"amount": {
"amount": "<string>"
}
}
]
}{
"type": "INVALID_OID_FORMAT",
"title": "Invalid Object ID Format",
"status": 400,
"detail": "A path or query parameter expected a valid object identifier but received a value that does not match the expected format.",
"resolution": "Verify that all IDs in the request URL and query parameters are correctly formatted. IDs are typically prefixed strings like 'cus_...', 'app_...', or 'doc_...'.",
"docs": "https://conduit-v2.mintlify.app/errors#invalid-oid-format",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "API_KEY_MISSING",
"title": "API Key Missing",
"status": 401,
"detail": "The request did not include an API key. All API requests must be authenticated.",
"resolution": "Include your API key in the 'x-api-key' header with every request.",
"docs": "https://conduit-v2.mintlify.app/errors#api-key-missing",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "API_KEY_READ_ONLY",
"title": "API Key Is Read-Only",
"status": 403,
"detail": "This API key has read-only access and cannot perform write operations. Read-only keys may make read requests (GET, HEAD, OPTIONS) only.",
"resolution": "Use a read-write API key for this request, or have an organization admin mint one from the dashboard.",
"docs": "https://conduit-v2.mintlify.app/errors#api-key-read-only",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "NO_PRICING_CONFIGURED",
"title": "No Pricing Configured",
"status": 404,
"detail": "No active pricing profile contains a base pricing rule for the requested asset pair.",
"resolution": "Configure a base pricing rule for the source/destination pair before requesting an order.",
"docs": "https://conduit-v2.mintlify.app/errors#no-pricing-configured",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "IDEMPOTENCY_KEY_CONFLICT",
"title": "Idempotency Key Conflict",
"status": 409,
"detail": "The idempotency key was previously used with a different request body. Idempotency keys are bound to the exact request shape — replays must match the original.",
"resolution": "Use a fresh idempotency key for the new request, or replay the original request unchanged.",
"docs": "https://conduit-v2.mintlify.app/errors#idempotency-key-conflict",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "UNSUPPORTED_MEDIA_TYPE",
"title": "Unsupported Media Type",
"status": 415,
"detail": "The request carries a body with a Content-Type this endpoint cannot parse. JSON endpoints accept 'application/json'; a body with no Content-Type header at all is assumed to be JSON. File-upload endpoints accept only 'multipart/form-data' — JSON or undeclared bodies are rejected there.",
"resolution": "Send the request body with the 'Content-Type: application/json' header. For file uploads, use 'Content-Type: multipart/form-data' — upload endpoints accept no other body type.",
"docs": "https://conduit-v2.mintlify.app/errors#unsupported-media-type",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "UNSUPPORTED_PAIR",
"title": "Unsupported Pair",
"status": 422,
"detail": "The requested source and destination asset pair is not supported.",
"resolution": "Check the configured trading pairs and submit a supported source/destination asset combination.",
"docs": "https://conduit-v2.mintlify.app/errors#unsupported-pair",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "RATE_LIMITED",
"title": "Rate Limited",
"status": 429,
"detail": "Too many requests. This error is returned by three independent checks: the per-organization bucket applied to every authenticated API request; the per-IP bucket applied to unauthenticated traffic before an API key is validated; and the per-IP bucket applied when repeated invalid API keys are submitted from the same address. Honor the Retry-After header (also exposed as retryAfterSeconds in the body) before retrying. Current limits and remaining budget are visible in X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on rate-limited route responses.",
"resolution": "Sleep until Retry-After seconds have elapsed, then retry. For sustained workloads exceeding the per-organization defaults, request a rate-limit increase through your support contact.",
"docs": "https://conduit-v2.mintlify.app/errors#rate-limited",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z",
"retryAfterSeconds": 3
}{
"type": "INTERNAL_ERROR",
"title": "Internal Error",
"status": 500,
"detail": "An unexpected error occurred while processing your request.",
"resolution": "Retry the request after a brief delay. If the error persists, contact support and include the correlationId from the error response for investigation.",
"docs": "https://conduit-v2.mintlify.app/errors#internal-error",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}{
"type": "RATE_UNAVAILABLE",
"title": "Rate Unavailable",
"status": 503,
"detail": "A live exchange rate could not be retrieved for the requested currency pair. The rate provider may be temporarily unavailable.",
"resolution": "Retry the request after a short delay. If the error persists, the rate provider for this currency pair may be experiencing an outage.",
"docs": "https://conduit-v2.mintlify.app/errors/rate-unavailable",
"instance": "/v2/...",
"correlationId": "req_a1b2c3d4",
"timestamp": "2026-01-15T09:30:00.000Z"
}