Method
POST /v1/payments/start
Body Parameters
Headers
string
Bearer token (workspace API key).
string
application/jsonRequest Example
curl -X POST https://api.voyantcloud.com/v1/payments/start \
-H "Authorization: Bearer $VOYANT_API_KEY" \
-H "content-type: application/json" \
-d '{
"bookingId": "4a9a807e-5c7c-4f57-8e6d-2c6f1b1c5d10",
"amount": 8450,
"currency": "RON",
"billing": {
"email": "ana@example.com",
"firstName": "Ana",
"lastName": "Ionescu"
},
"products": [
{ "name": "Summer Cruise", "price": 8450, "qty": 1 }
]
}'
const res = await fetch("https://api.voyantcloud.com/v1/payments/start", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
"content-type": "application/json",
},
body: JSON.stringify({
wizardSessionId: "b1f7f7a0-220c-4f89-9d6d-0c0ae943a99d",
amount: 4200,
currency: "EUR",
billing: { email: "ana@example.com" },
products: [{ name: "Deposit", price: 4200, qty: 1 }],
}),
})
const session = await res.json()
import os, requests
payload = {
"bookingId": "4a9a807e-5c7c-4f57-8e6d-2c6f1b1c5d10",
"amount": 8450,
"currency": "RON",
"billing": {"email": "ana@example.com"},
"products": [{"name": "Summer Cruise", "price": 8450, "qty": 1}]
}
resp = requests.post(
"https://api.voyantcloud.com/v1/payments/start",
headers={
"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
"content-type": "application/json",
},
json=payload,
)
session = resp.json()
Response
{
"url": "https://secure.mobilpay.ro/pay?orderId=ORDER-20250301-0001",
"orderId": "ORDER-20250301-0001",
"provider": "netopia"
}
{ "error": "Payment account not found for provider netopia", "requestId": "req_789" }
The API uses the encrypted payment account matching the workspace + provider. For Netopia it also injects the notify URL (
/v1/integrations/netopia/notify) and returns the hosted payment URL you must redirect the customer to.