Vignetim

Bestelling aanmaken (Create Order)

Dien een nieuwe bestelling in met productselectie, betalingsgegevens en klantinformatie.

POST /orders

Verzoeklichaam

{
	"products": [
		{
			"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
			"productTypeId": 1,
			"quantity": 1,
			"vehiclePlate": "AB123CD",
			"vehicleCountryIsocode": "AT",
			"vehicleCategoryId": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
			"startAt": "2026-04-01T00:00:00.000Z",
			"endAt": "2026-04-10T23:59:59.000Z",
			"driverFirstname": "John",
			"driverLastname": "Doe"
		}
	],
	"payment": {
		"type": "CARD",
		"paymentMethodId": "pm_1234567890abcdef",
		"returnUrl": "https://yourapp.com/payment/callback"
	},
	"customer": {
		"email": "john.doe@example.com",
		"firstName": "John",
		"lastName": "Doe",
		"phone": "+43123456789"
	},
	"address": {
		"countryIsocode": "AT",
		"city": "Vienna",
		"addressLine": "Mariahilfer Strasse 1",
		"postalCode": "1060",
		"taxNumber": "ATU12345678",
		"companyName": "Doe GmbH"
	},
	"idempotencyKey": "unique-order-key-12345",
	"externalReference": "YOUR-ORDER-REF-001",
	"callbackUrl": "https://yourapp.com/webhooks/vignetim"
}

Producten-DTO

VeldTypeVerplichtBeschrijving
productIdUUIDJaHet product-ID uit de catalogus
productTypeIdintegerJaProducttype: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT
quantityintegerJaAantal eenheden
vehiclePlatestringVoorwaardelijkKenteken van het voertuig (verplicht voor VIGNETTE)
vehicleCountryIsocodestringVoorwaardelijkRegistratieland van het voertuig (verplicht voor VIGNETTE)
vehicleCategoryIdUUIDVoorwaardelijkVoertuigcategorie (verplicht voor VIGNETTE)
startAtISO 8601VoorwaardelijkStartdatum geldigheid (verplicht voor VIGNETTE)
endAtISO 8601VoorwaardelijkEinddatum geldigheid (verplicht voor VIGNETTE)
driverFirstnamestringNeeVoornaam bestuurder
driverLastnamestringNeeAchternaam bestuurder

Betaling-DTO

VeldTypeVerplichtBeschrijving
typestringJaEen van: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT
paymentMethodIdstringVoorwaardelijkStripe-betaalmethode-token (verplicht voor CARD)
returnUrlstringVoorwaardelijkHTTPS-URL voor 3DS-omleidingscallback (verplicht voor CARD)

Betalingsroutering

  • CARD-betalingen worden gerouteerd via NestPay en vereisen mogelijk 3D Secure-verificatie.
  • GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT en BANCONTACT worden gerouteerd via Stripe.

Klant-DTO

VeldTypeVerplichtBeschrijving
emailstringJaE-mailadres van de klant
firstNamestringJaVoornaam van de klant
lastNamestringJaAchternaam van de klant
phonestringNeeTelefoonnummer van de klant (E.164-formaat aanbevolen)

Adres-DTO

VeldTypeVerplichtBeschrijving
countryIsocodestringJaLand ISO-code
citystringJaPlaatsnaam
addressLinestringJaStraatnaam en huisnummer
postalCodestringNeePostcode
taxNumberstringNeeBtw-nummer
companyNamestringNeeBedrijfsnaam (voor zakelijke klanten)

Aanvullende velden

VeldTypeVerplichtBeschrijving
idempotencyKeystringNeeUnieke sleutel om dubbele bestellingen te voorkomen. Dezelfde sleutel met dezelfde payload retourneert de oorspronkelijke bestelling (aanbevolen).
externalReferencestringNeeUw interne bestelreferentie voor tracking
callbackUrlstringNeeURL om bestelstatusupdates te ontvangen

Antwoord

201 Created

{
	"id": "ord-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
	"status": "PENDING",
	"redirectUrl": "https://pay.vignetim.com/3ds/verify/abc123",
	"clientSecret": "pi_1234567890_secret_abcdef",
	"products": [
		{
			"productId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
			"productTypeId": 1,
			"quantity": 1,
			"status": "PENDING"
		}
	],
	"total": {
		"amount": 11.5,
		"currency": "EUR"
	},
	"externalReference": "YOUR-ORDER-REF-001",
	"createdAt": "2026-03-20T14:30:00.000Z"
}
  • redirectUrl -- Aanwezig wanneer 3D Secure-verificatie vereist is (CARD-betalingen). Leid de klant om naar deze URL.
  • clientSecret -- Aanwezig voor via Stripe gerouteerde betalingen. Gebruik dit met Stripe.js om de betaling aan de clientzijde te bevestigen.

409 Conflict (Idempotent)

Als dezelfde idempotencyKey met dezelfde payload wordt verzonden, wordt de oorspronkelijke bestelling geretourneerd met een 409-statuscode. Dit is veilig om opnieuw te proberen.

{
	"statusCode": 409,
	"message": "Order already exists for this idempotency key",
	"error": "Conflict"
}