Create an order
curl --request POST \
--url https://api.staging.paywire.xyz/payments/links/{linkId}/orders \
--header 'Content-Type: application/json' \
--data '
{
"network": "solana_devnet",
"token": "native",
"refundAddress": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
network: 'solana_devnet',
token: 'native',
refundAddress: '4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T'
})
};
fetch('https://api.staging.paywire.xyz/payments/links/{linkId}/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.staging.paywire.xyz/payments/links/{linkId}/orders"
payload = {
"network": "solana_devnet",
"token": "native",
"refundAddress": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.staging.paywire.xyz/payments/links/{linkId}/orders");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"network\": \"solana_devnet\",\n \"token\": \"native\",\n \"refundAddress\": \"4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"id": "0193a0c5-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
"paymentLinkId": "0193a0c4-5f2e-7c1d-9b8a-3e4f5a6b7c8d",
"status": "AwaitingPayment",
"network": "solana_devnet",
"token": "native",
"decimals": 9,
"depositAddress": "8xKq3nV5pQ2rL7mT9wY4bF6hJ1dS3aZ8cX5vN2eR7uK",
"refundAddress": null,
"expectedAmount": "301204819",
"expectedAmountDisplay": 0.301204819,
"confirmedAmount": "0",
"receivedAmount": "0",
"remainingAmount": "301204819",
"remainingAmountDisplay": 0.301204819,
"fiatAmount": 49.9,
"fiatCurrency": "USD",
"rate": 165.67,
"createdAt": "2026-10-24T09:13:05.118Z",
"expiresAt": "2026-10-24T09:33:05.118Z",
"resolvedAt": null,
"deposits": []
}{
"title": "PaymentLink.AssetNotAllowed",
"status": 400,
"detail": "This asset is not on the link's allowlist."
}{
"title": "PaymentLink.NotFound",
"status": 404,
"detail": "No payment link with this id."
}{
"title": "PaymentLink.Inactive",
"status": 409,
"detail": "This payment link is no longer active."
}{
"title": "Order.PriceUnavailable",
"status": 503,
"detail": "No trustworthy price is available right now; try again shortly."
}Orders
Create an order
The payer picked a coin: locks a quote and issues the order’s deposit address. Public: no API key needed. Call it from your server.
POST
/
payments
/
links
/
{linkId}
/
orders
Create an order
curl --request POST \
--url https://api.staging.paywire.xyz/payments/links/{linkId}/orders \
--header 'Content-Type: application/json' \
--data '
{
"network": "solana_devnet",
"token": "native",
"refundAddress": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
network: 'solana_devnet',
token: 'native',
refundAddress: '4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T'
})
};
fetch('https://api.staging.paywire.xyz/payments/links/{linkId}/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.staging.paywire.xyz/payments/links/{linkId}/orders"
payload = {
"network": "solana_devnet",
"token": "native",
"refundAddress": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api.staging.paywire.xyz/payments/links/{linkId}/orders");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"network\": \"solana_devnet\",\n \"token\": \"native\",\n \"refundAddress\": \"4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
{
"id": "0193a0c5-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
"paymentLinkId": "0193a0c4-5f2e-7c1d-9b8a-3e4f5a6b7c8d",
"status": "AwaitingPayment",
"network": "solana_devnet",
"token": "native",
"decimals": 9,
"depositAddress": "8xKq3nV5pQ2rL7mT9wY4bF6hJ1dS3aZ8cX5vN2eR7uK",
"refundAddress": null,
"expectedAmount": "301204819",
"expectedAmountDisplay": 0.301204819,
"confirmedAmount": "0",
"receivedAmount": "0",
"remainingAmount": "301204819",
"remainingAmountDisplay": 0.301204819,
"fiatAmount": 49.9,
"fiatCurrency": "USD",
"rate": 165.67,
"createdAt": "2026-10-24T09:13:05.118Z",
"expiresAt": "2026-10-24T09:33:05.118Z",
"resolvedAt": null,
"deposits": []
}{
"title": "PaymentLink.AssetNotAllowed",
"status": 400,
"detail": "This asset is not on the link's allowlist."
}{
"title": "PaymentLink.NotFound",
"status": 404,
"detail": "No payment link with this id."
}{
"title": "PaymentLink.Inactive",
"status": 409,
"detail": "This payment link is no longer active."
}{
"title": "Order.PriceUnavailable",
"status": 503,
"detail": "No trustworthy price is available right now; try again shortly."
}The payer picked a coin: this locks the quote and returns the deposit address and exact amount. Call it from your server.
Path Parameters
The payment link's id.
Body
application/json
Response
The order.
Available options:
AwaitingPayment, Confirming, Settled, Overpaid, Expired, ExpiredUnderpaid, ManualReview, Refunded Base units the payer must send.
The same, in whole coins.
Fiat per coin used for the quote.
Show child attributes
Show child attributes