Method
POST /v1/billing/invoices
Body Parameters
Headers
string
Bearer token with
billing:write scope.string
application/jsonRequest Example
curl -X POST https://api.voyantcloud.com/v1/billing/invoices \
-H "Authorization: Bearer $VOYANT_API_KEY" \
-H "content-type: application/json" \
-d '{
"series": "INV",
"currency": "EUR",
"issueDate": "2025-02-15",
"dueDate": "2025-03-01",
"buyerAddress": {
"company": "Voyant Travel SRL",
"vat": "RO12345678",
"country": "RO"
},
"lines": [
{
"itemType": "service",
"description": "Summer cruise package",
"quantity": 1,
"unitPrice": 2450,
"taxRate": 0,
"lineTotal": 2450
}
]
}'
const res = await fetch("https://api.voyantcloud.com/v1/billing/invoices", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
"content-type": "application/json",
},
body: JSON.stringify({
currency: "EUR",
lines: [
{ description: "Deposit", quantity: 1, unitPrice: 500, lineTotal: 500 },
],
}),
})
const { id } = await res.json()
import os, requests
payload = {
"currency": "EUR",
"buyerAddress": {"company": "Voyant Travel SRL", "country": "RO"},
"lines": [{"description": "Deposit", "quantity": "1", "unitPrice": "500", "lineTotal": "500"}],
}
resp = requests.post(
"https://api.voyantcloud.com/v1/billing/invoices",
headers={
"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
"content-type": "application/json",
},
json=payload,
)
invoice = resp.json()
Response
{ "id": "4a9a807e-5c7c-4f57-8e6d-2c6f1b1c5d10" }
{ "error": "Missing workspace context" }
Workspace context is provided by the API key. Partner integrations that operate across multiple workspaces must call the endpoint once per workspace.