curl --request POST \
--url https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"paymentMethodId": "<string>",
"payCurrency": "<string>"
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({paymentMethodId: '<string>', payCurrency: '<string>'})
};
fetch('https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment"
payload = {
"paymentMethodId": "<string>",
"payCurrency": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment",
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([
'paymentMethodId' => '<string>',
'payCurrency' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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;
}{
"payment": {
"paymentMethodId": "<string>",
"status": "pending",
"paymentId": "<string>",
"appliedAmount": 123,
"appliedCurrency": "<string>",
"providerAmount": 123,
"providerCurrency": "<string>",
"providerPaymentId": "<string>",
"paymentUrl": "<string>",
"paymentAddress": "<string>",
"memo": "<string>",
"destinationTag": "<string>",
"amount": "<string>",
"currency": "<string>",
"network": "Bitcoin",
"exchangeRate": "<string>",
"expiresAt": 1753142400000,
"qr": {
"withAmount": "<string>",
"withoutAmount": "<string>"
},
"fee": {
"percentage": 123,
"fixed": 123,
"recommended": true,
"feeUnit": "sat/vB"
},
"errorMessage": "<string>"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "NOT_FOUND",
"message": "Checkout not found"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "CONFLICT",
"message": "externalRef already used on another API surface"
},
"requestId": "req_8f3k2"
}{
"error": "Too many requests",
"message": "<string>"
}Create (or refresh) the payment invoice for a checkout
Two-step flow: create the invoice after the customer picks a method.
The amount is always the full remaining balance (split payments are
not exposed on this surface). Re-calling with the same method
refreshes an expired crypto invoice (provider-side dedup returns the
same invoice with fresh data). The balance method deducts from your
business balance and must confirm instantly, otherwise 400 with
details.reason.
curl --request POST \
--url https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"paymentMethodId": "<string>",
"payCurrency": "<string>"
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({paymentMethodId: '<string>', payCurrency: '<string>'})
};
fetch('https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment"
payload = {
"paymentMethodId": "<string>",
"payCurrency": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wizzgift.com/retailer/v1/checkouts/{checkoutId}/payment",
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([
'paymentMethodId' => '<string>',
'payCurrency' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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;
}{
"payment": {
"paymentMethodId": "<string>",
"status": "pending",
"paymentId": "<string>",
"appliedAmount": 123,
"appliedCurrency": "<string>",
"providerAmount": 123,
"providerCurrency": "<string>",
"providerPaymentId": "<string>",
"paymentUrl": "<string>",
"paymentAddress": "<string>",
"memo": "<string>",
"destinationTag": "<string>",
"amount": "<string>",
"currency": "<string>",
"network": "Bitcoin",
"exchangeRate": "<string>",
"expiresAt": 1753142400000,
"qr": {
"withAmount": "<string>",
"withoutAmount": "<string>"
},
"fee": {
"percentage": 123,
"fixed": 123,
"recommended": true,
"feeUnit": "sat/vB"
},
"errorMessage": "<string>"
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid input"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API key"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "NOT_FOUND",
"message": "Checkout not found"
},
"requestId": "req_8f3k2"
}{
"error": {
"code": "CONFLICT",
"message": "externalRef already used on another API surface"
},
"requestId": "req_8f3k2"
}{
"error": "Too many requests",
"message": "<string>"
}Authorizations
API key (wg_live_…) created in the dashboard (Account → API Keys).
Shown once at creation; only a hash is stored server-side.
Path Parameters
Checkout/order id.
Body
Response
Payment invoice created.
Payment created for a checkout or deposit. Render the crypto invoice from paymentAddress + amount + currency (+ memo/ destinationTag when memoRequired), or redirect to paymentUrl for hosted providers. Refresh expired invoices by re-calling the payment endpoint.
Show child attributes
Show child attributes