Bestellingen aanmaken, afrekenen, annuleren en terugbetalen.
GET
/api/v1/orders
#
De bestellingen van de organisatie.
Recht nodig:
read
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
page[size]
integer
· in de url
· optioneel
Aantal per pagina, hoogstens 100.
-
page[cursor]
string
· in de url
· optioneel
De next_cursor van de vorige pagina.
-
sort
string
· in de url
· optioneel
Sorteer; een streepje ervoor keert de volgorde om.
Waarden:
created_at, -created_at, paid_at, -paid_at, total_cent, -total_cent, id, -id
-
filter[status]
string
· in de url
· optioneel
Filter op status.
-
filter[channel]
string
· in de url
· optioneel
Filter op channel.
-
filter[reference]
string
· in de url
· optioneel
Filter op reference.
-
filter[email]
string
· in de url
· optioneel
Filter op email.
-
filter[from]
string
· in de url
· optioneel
Filter op from.
-
filter[to]
string
· in de url
· optioneel
Filter op to.
-
filter[sandbox]
string
· in de url
· optioneel
Filter op sandbox.
-
include
string
· in de url
· optioneel
Neem deze relaties mee: lines, tickets, payments, refunds.
Waarden:
lines, tickets, payments, refunds
Voorbeeldoproep
curl
curl "https://passavo.eu/api/v1/orders" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json"
PHP
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->get('https://passavo.eu/api/v1/orders');
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders', {
method: 'GET',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
},
});
const { data } = await response.json();
Python
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY"}
response = requests.get("https://passavo.eu/api/v1/orders", headers=headers)
data = response.json()["data"]
Antwoorden
-
200
— De bestellingen van de organisatie.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": [
{
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"meta": {
"next_cursor": "string"
}
}
POST
/api/v1/orders
#
Een nieuwe bestelling, met de plaatsen vastgehouden.
Recht nodig:
write
Deze oproep stuurt een body mee.
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· verplicht
Verplicht. Zonder deze sleutel kan een herhaling na een netwerkfout een tweede bestelling of een tweede bon opleveren.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'
PHP
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://passavo.eu/api/v1/orders', []);
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({}),
});
const { data } = await response.json();
Python
import uuid
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY", "Idempotency-Key": str(uuid.uuid4())}
response = requests.post("https://passavo.eu/api/v1/orders", headers=headers, json={})
data = response.json()["data"]
Antwoorden
-
201
— Een nieuwe bestelling, met de plaatsen vastgehouden.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— Het tijdslot is vol of al begonnen.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
}
GET
/api/v1/orders/{id}
#
Eén bestelling.
Recht nodig:
read
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
-
include
string
· in de url
· optioneel
Neem deze relaties mee: lines, tickets, payments, refunds.
Waarden:
lines, tickets, payments, refunds
Voorbeeldoproep
curl
curl "https://passavo.eu/api/v1/orders/12" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json"
PHP
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->get('https://passavo.eu/api/v1/orders/12');
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12', {
method: 'GET',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
},
});
const { data } = await response.json();
Python
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY"}
response = requests.get("https://passavo.eu/api/v1/orders/12", headers=headers)
data = response.json()["data"]
Antwoorden
-
200
— Eén bestelling.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
}
POST
/api/v1/orders/{id}/cancel
#
Annuleren en de plaatsen teruggeven.
Recht nodig:
write
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· optioneel
Herhaal een oproep veilig: dezelfde sleutel met dezelfde inhoud geeft hetzelfde antwoord.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders/12/cancel" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json"
PHP
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->post('https://passavo.eu/api/v1/orders/12/cancel');
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12/cancel', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
},
});
const { data } = await response.json();
Python
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY"}
response = requests.post("https://passavo.eu/api/v1/orders/12/cancel", headers=headers)
data = response.json()["data"]
Antwoorden
-
200
— Annuleren en de plaatsen teruggeven.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— Deze bestelling kan niet geannuleerd worden.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
}
POST
/api/v1/orders/{id}/checkout
#
De betaallink van de gekoppelde provider.
Recht nodig:
write
Deze oproep stuurt een body mee.
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· optioneel
Herhaal een oproep veilig: dezelfde sleutel met dezelfde inhoud geeft hetzelfde antwoord.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders/12/checkout" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'
PHP
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://passavo.eu/api/v1/orders/12/checkout', []);
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12/checkout', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({}),
});
const { data } = await response.json();
Python
import uuid
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY", "Idempotency-Key": str(uuid.uuid4())}
response = requests.post("https://passavo.eu/api/v1/orders/12/checkout", headers=headers, json={})
data = response.json()["data"]
Antwoorden
-
200
— De betaallink van de gekoppelde provider.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— Deze organisatie heeft geen betaalprovider gekoppeld.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
}
POST
/api/v1/orders/{id}/invoice-request
#
Een factuur op naam vragen.
Recht nodig:
write
Deze oproep stuurt een body mee.
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· optioneel
Herhaal een oproep veilig: dezelfde sleutel met dezelfde inhoud geeft hetzelfde antwoord.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders/12/invoice-request" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'
PHP
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://passavo.eu/api/v1/orders/12/invoice-request', []);
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12/invoice-request', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({}),
});
const { data } = await response.json();
Python
import uuid
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY", "Idempotency-Key": str(uuid.uuid4())}
response = requests.post("https://passavo.eu/api/v1/orders/12/invoice-request", headers=headers, json={})
data = response.json()["data"]
Antwoorden
-
201
— Een factuur op naam vragen.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— De bestelling staat niet in een toestand waarin dit kan.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"order_id": "string",
"requested_at": "2026-09-21T14:00:00+02:00",
"company_name": "string",
"vat_number": "string",
"vat_number_valid": true,
"country": "string",
"invoice_number": "string"
}
}
POST
/api/v1/orders/{id}/mark-paid
#
Betaald buiten de provider om (overschrijving, contant).
Recht nodig:
write
Deze oproep stuurt een body mee.
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· optioneel
Herhaal een oproep veilig: dezelfde sleutel met dezelfde inhoud geeft hetzelfde antwoord.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders/12/mark-paid" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'
PHP
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://passavo.eu/api/v1/orders/12/mark-paid', []);
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12/mark-paid', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({}),
});
const { data } = await response.json();
Python
import uuid
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY", "Idempotency-Key": str(uuid.uuid4())}
response = requests.post("https://passavo.eu/api/v1/orders/12/mark-paid", headers=headers, json={})
data = response.json()["data"]
Antwoorden
-
200
— Betaald buiten de provider om (overschrijving, contant).
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— De bestelling staat niet in een toestand waarin dit kan.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": "string",
"reference": "string",
"status": "draft",
"channel": "online",
"venue_id": 1,
"buyer": {
"name": "string",
"email": "string",
"phone": "string",
"locale": "string"
},
"totals": {
"subtotal": {
"amount_cent": 1,
"currency": "EUR"
},
"discount": {
"amount_cent": 1,
"currency": "EUR"
},
"discount_code": {
"amount_cent": 1,
"currency": "EUR"
},
"voucher": {
"amount_cent": 1,
"currency": "EUR"
},
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"total": {
"amount_cent": 1,
"currency": "EUR"
}
},
"discount_code": "string",
"voucher_code": "string",
"reserved_until": "2026-09-21T14:00:00+02:00",
"sandbox": true,
"test": true,
"payment": {
"provider": "string",
"provider_ref": "string",
"redirect_url": "string",
"qr_code_url": "string"
},
"paid_at": "2026-09-21T14:00:00+02:00",
"cancelled_at": "2026-09-21T14:00:00+02:00",
"lines": [
{
"id": 1,
"product_id": 1,
"slot_id": 1,
"description": "string",
"quantity": 1,
"unit_price": {
"amount_cent": 1,
"currency": "EUR"
},
"line_total": {
"amount_cent": 1,
"currency": "EUR"
},
"vat_rate_bp": 1,
"vat": {
"amount_cent": 1,
"currency": "EUR"
},
"valid_on": "2026-09-21",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"tickets": [
{
"id": "9f1c0b4a-6b2f-4a1b-9c7e-1f2d3e4a5b6c",
"order_line_id": 1,
"order_id": "string",
"product_id": 1,
"slot_id": 1,
"description": "string",
"holder_name": "string",
"status": "valid",
"valid_on": "2026-09-21",
"is_scannable": true,
"used_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
],
"payments": [
{
"id": 1,
"provider": "string",
"provider_ref": "string",
"method": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "string",
"paid_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"refunds": [
{
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
],
"created_at": "2026-09-21T14:00:00+02:00",
"updated_at": "2026-09-21T14:00:00+02:00"
}
}
POST
/api/v1/orders/{id}/refund
#
Volledig of gedeeltelijk terugbetalen.
Recht nodig:
write
Deze oproep stuurt een body mee.
Parameters
-
Accept-Language
string
· als header
· optioneel
De taal van de vertaalde velden, met terugval op de taal van de organisatie.
-
Idempotency-Key
string
· als header
· optioneel
Herhaal een oproep veilig: dezelfde sleutel met dezelfde inhoud geeft hetzelfde antwoord.
-
id
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/orders/12/refund" \
-H "Authorization: Bearer pv_live_YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'
PHP
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
$response = Http::acceptJson()
->withToken('pv_live_YOUR_API_KEY')
->withHeader('Idempotency-Key', (string) Str::uuid())
->post('https://passavo.eu/api/v1/orders/12/refund', []);
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/orders/12/refund', {
method: 'POST',
headers: {
Accept: 'application/json',
Authorization: 'Bearer pv_live_YOUR_API_KEY',
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({}),
});
const { data } = await response.json();
Python
import uuid
import requests
headers = {"Accept": "application/json", "Authorization": "Bearer pv_live_YOUR_API_KEY", "Idempotency-Key": str(uuid.uuid4())}
response = requests.post("https://passavo.eu/api/v1/orders/12/refund", headers=headers, json={})
data = response.json()["data"]
Antwoorden
-
201
— Volledig of gedeeltelijk terugbetalen.
-
401
— Deze sleutel is niet geldig.
-
403
— Deze sleutel mag dit niet.
-
404
— Niet gevonden.
-
409
— Er valt niets (meer) terug te betalen.
-
422
— De vraag klopt niet.
-
429
— Te veel oproepen. Probeer opnieuw over 60 seconden.
Voorbeeldantwoord
{
"data": {
"id": 1,
"payment_id": 1,
"provider": "string",
"provider_ref": "string",
"amount": {
"amount_cent": 1,
"currency": "EUR"
},
"status": "pending",
"reason": "string",
"refunded_at": "2026-09-21T14:00:00+02:00",
"created_at": "2026-09-21T14:00:00+02:00"
}
}
GET
/api/v1/sandbox/payments/{reference}
#
De nagebootste betaalpagina van de sandbox.
Recht nodig:
Geen sleutel nodig
Parameters
-
reference
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
-
signature
string
· in de url
· optioneel
De handtekening uit de link; wijzig hem niet.
-
expires
integer
· in de url
· optioneel
Wanneer de link vervalt, als tijdstempel.
-
return_url
string
· in de url
· optioneel
Waar de koper na afloop naartoe gaat.
Voorbeeldoproep
curl
curl "https://passavo.eu/api/v1/sandbox/payments/12" \
-H "Accept: application/json"
PHP
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->get('https://passavo.eu/api/v1/sandbox/payments/12');
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/sandbox/payments/12', {
method: 'GET',
headers: {
Accept: 'application/json',
},
});
const { data } = await response.json();
Python
import requests
headers = {"Accept": "application/json"}
response = requests.get("https://passavo.eu/api/v1/sandbox/payments/12", headers=headers)
data = response.json()["data"]
Antwoorden
-
200
— De nagebootste betaalpagina van de sandbox.
-
302
— Terug naar de return_url van de koppeling.
-
403
— Deze link is niet geldig of vervallen.
-
404
— Niet gevonden.
POST
/api/v1/sandbox/payments/{reference}
#
De nagebootste betaling afronden.
Recht nodig:
Geen sleutel nodig
Parameters
-
reference
string
· in het pad
· verplicht
De referentie van de bestelling, bv. ORD-AB12CD34EF.
-
signature
string
· in de url
· optioneel
De handtekening uit de link; wijzig hem niet.
-
expires
integer
· in de url
· optioneel
Wanneer de link vervalt, als tijdstempel.
-
return_url
string
· in de url
· optioneel
Waar de koper na afloop naartoe gaat.
Voorbeeldoproep
curl
curl -X POST "https://passavo.eu/api/v1/sandbox/payments/12" \
-H "Accept: application/json"
PHP
use Illuminate\Support\Facades\Http;
$response = Http::acceptJson()
->post('https://passavo.eu/api/v1/sandbox/payments/12');
$data = $response->json('data');
JavaScript
const response = await fetch('https://passavo.eu/api/v1/sandbox/payments/12', {
method: 'POST',
headers: {
Accept: 'application/json',
},
});
const { data } = await response.json();
Python
import requests
headers = {"Accept": "application/json"}
response = requests.post("https://passavo.eu/api/v1/sandbox/payments/12", headers=headers)
data = response.json()["data"]
Antwoorden
-
200
— De nagebootste betaling afronden.
-
302
— Terug naar de return_url van de koppeling.
-
403
— Deze link is niet geldig of vervallen.
-
404
— Niet gevonden.