curl --request GET \
--url https://staging.crossmint.com/api/2022-06-09/orders \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/2022-06-09/orders"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://staging.crossmint.com/api/2022-06-09/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://staging.crossmint.com/api/2022-06-09/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/2022-06-09/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/2022-06-09/orders")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/2022-06-09/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"orderId": "b2959ca5-65e4-466a-bd26-1bd05cb4f837",
"phase": "payment",
"locale": "en-US",
"lineItems": [
{
"chain": "polygon-amoy",
"executionMode": "exact-out",
"quantity": 1,
"callData": {
"quantity": 1,
"ADDITIONAL_PROPERTIES": "Your other mint function arguments"
},
"executionParams": {},
"maxSlippageBps": "50",
"metadata": {
"name": "Headless Checkout Demo",
"description": "NFT Description",
"imageUrl": "https://cdn.io/image.png"
},
"quote": {
"status": "valid",
"charges": {
"unit": {
"amount": "0.0001",
"currency": "eth"
},
"salesTax": {
"amount": "0.34",
"currency": "usdc"
},
"shipping": {
"amount": "0",
"currency": "usdc"
}
},
"totalPrice": {
"amount": "0.0001",
"currency": "eth"
}
},
"delivery": {
"status": "awaiting-payment",
"rail": "rtp",
"completedAt": "2026-07-27T20:35:00.000Z",
"recipient": {
"locator": "email:<email_address>:<chain>",
"email": "testy@crossmint.com",
"walletAddress": "0x1234abcd..."
},
"txId": "0x2e69f11dae7869b92e3d5eaf4cadd50c48b5c6803d1232815f979d744521ad4c",
"tokens": [
{
"locator": "polygon:0xE04Cf294985282Ddc088E6433c064cfB85eD9EdA:3",
"contractAddress": "0xE04Cf294985282Ddc088E6433c064cfB85eD9EdA",
"tokenId": "3",
"mintHash": "MintHashAbc123",
"quantity": "1500000",
"symbol": "USDC",
"decimals": 6
}
]
}
}
],
"quote": {
"status": "valid",
"quotedAt": "2024-06-07T16:55:44.653Z",
"expiresAt": "2024-06-07T17:55:44.653Z",
"totalPrice": {
"amount": "0.0001375741",
"currency": "eth"
}
},
"payment": {
"status": "awaiting-payment",
"method": "base-sepolia",
"currency": "eth",
"preparation": {
"chain": "base-sepolia",
"payerAddress": "0x1234abcd...",
"serializedTransaction": "0x02f90....."
},
"receiptEmail": "user@example.com",
"received": {
"amount": "0.50",
"currency": "usd"
},
"refunded": {
"amount": "0.50",
"currency": "usd"
},
"failureReason": {
"code": "payment-declined",
"message": "The payment was declined by the issuer."
}
}
}
],
"nextCursor": "<string>",
"previousCursor": "<string>"
}{
"error": true,
"message": "<string>",
"code": "single_purchase_exceeded",
"parameters": {
"amount": "<string>",
"limit": "<string>",
"hoursUntilReset": "<string>",
"remainingAmount": "<string>"
}
}{
"error": true,
"message": "Malformed API key. / API key provided doesn't have required scopes."
}List Orders
Returns a paginated list of onramp orders for your project, newest first by default. Use nextCursor or previousCursor from the response to page through results.
Use this endpoint to track purchases through the onramp lifecycle: quote, payment (including KYC and recipient verification for external wallets), delivery, and completed. Filter by paymentStatus and deliveryStatus to surface orders at each stage.
Optional filters accept comma-separated values (maximum 20 terms per filter). Keep the same filter params when following cursors.
API scope required: orders.read
curl --request GET \
--url https://staging.crossmint.com/api/2022-06-09/orders \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/2022-06-09/orders"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://staging.crossmint.com/api/2022-06-09/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://staging.crossmint.com/api/2022-06-09/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/2022-06-09/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/2022-06-09/orders")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/2022-06-09/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"orderId": "b2959ca5-65e4-466a-bd26-1bd05cb4f837",
"phase": "payment",
"locale": "en-US",
"lineItems": [
{
"chain": "polygon-amoy",
"executionMode": "exact-out",
"quantity": 1,
"callData": {
"quantity": 1,
"ADDITIONAL_PROPERTIES": "Your other mint function arguments"
},
"executionParams": {},
"maxSlippageBps": "50",
"metadata": {
"name": "Headless Checkout Demo",
"description": "NFT Description",
"imageUrl": "https://cdn.io/image.png"
},
"quote": {
"status": "valid",
"charges": {
"unit": {
"amount": "0.0001",
"currency": "eth"
},
"salesTax": {
"amount": "0.34",
"currency": "usdc"
},
"shipping": {
"amount": "0",
"currency": "usdc"
}
},
"totalPrice": {
"amount": "0.0001",
"currency": "eth"
}
},
"delivery": {
"status": "awaiting-payment",
"rail": "rtp",
"completedAt": "2026-07-27T20:35:00.000Z",
"recipient": {
"locator": "email:<email_address>:<chain>",
"email": "testy@crossmint.com",
"walletAddress": "0x1234abcd..."
},
"txId": "0x2e69f11dae7869b92e3d5eaf4cadd50c48b5c6803d1232815f979d744521ad4c",
"tokens": [
{
"locator": "polygon:0xE04Cf294985282Ddc088E6433c064cfB85eD9EdA:3",
"contractAddress": "0xE04Cf294985282Ddc088E6433c064cfB85eD9EdA",
"tokenId": "3",
"mintHash": "MintHashAbc123",
"quantity": "1500000",
"symbol": "USDC",
"decimals": 6
}
]
}
}
],
"quote": {
"status": "valid",
"quotedAt": "2024-06-07T16:55:44.653Z",
"expiresAt": "2024-06-07T17:55:44.653Z",
"totalPrice": {
"amount": "0.0001375741",
"currency": "eth"
}
},
"payment": {
"status": "awaiting-payment",
"method": "base-sepolia",
"currency": "eth",
"preparation": {
"chain": "base-sepolia",
"payerAddress": "0x1234abcd...",
"serializedTransaction": "0x02f90....."
},
"receiptEmail": "user@example.com",
"received": {
"amount": "0.50",
"currency": "usd"
},
"refunded": {
"amount": "0.50",
"currency": "usd"
},
"failureReason": {
"code": "payment-declined",
"message": "The payment was declined by the issuer."
}
}
}
],
"nextCursor": "<string>",
"previousCursor": "<string>"
}{
"error": true,
"message": "<string>",
"code": "single_purchase_exceeded",
"parameters": {
"amount": "<string>",
"limit": "<string>",
"hoursUntilReset": "<string>",
"remainingAmount": "<string>"
}
}{
"error": true,
"message": "Malformed API key. / API key provided doesn't have required scopes."
}Authorizations
Query Parameters
Opaque cursor from a previous response's nextCursor or previousCursor. Omit on the first request.
Maximum number of orders to return. Minimum 1, maximum 100.
1 <= x <= 100Sort direction applied to createdAt.
asc, desc Comma-separated list of payment statuses. Orders matching any value are returned. Maximum 20 terms per parameter. Keep filter params stable when paginating with cursors.
20quote-phase, in-progress, succeeded, declined, expired, refunded Comma-separated list of delivery statuses. Orders matching any value are returned. Maximum 20 terms per parameter. Keep filter params stable when paginating with cursors.
20not-started, in-progress, partial-delivery, delivered, failed Comma-separated list of currencies matched against payment.totalPaid.currency. The fiat value matches all fiat payment methods. Maximum 20 terms per parameter.
20Exact match on buyer wallet address (buyer.mintTo). Supports EVM and Solana addresses. Maximum 20 terms per parameter.
20Exact match on order ID (orderIdentifier). Maximum 20 terms per parameter.
20Response
Orders retrieved successfully.
Was this page helpful?

