Vignetim

Crear pedido

Envíe un nuevo pedido (order) con selección de productos, datos de pago e información del cliente.

POST /orders

Cuerpo de la solicitud

{
	"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"
}

DTO de productos

CampoTipoRequeridoDescripción
productIdUUIDEl ID del producto del catálogo
productTypeIdintegerTipo de producto: 1 = VIGNETTE, 2 = ESIM, 3 = INSURANCE, 4 = FINE_PAYMENT
quantityintegerNúmero de unidades
vehiclePlatestringCondicionalMatrícula del vehículo (requerido para VIGNETTE)
vehicleCountryIsocodestringCondicionalPaís de registro del vehículo (requerido para VIGNETTE)
vehicleCategoryIdUUIDCondicionalCategoría del vehículo (requerido para VIGNETTE)
startAtISO 8601CondicionalFecha de inicio de validez (requerido para VIGNETTE)
endAtISO 8601CondicionalFecha de fin de validez (requerido para VIGNETTE)
driverFirstnamestringNoNombre del conductor
driverLastnamestringNoApellido del conductor

DTO de pago

CampoTipoRequeridoDescripción
typestringUno de: CARD, GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT, BANCONTACT
paymentMethodIdstringCondicionalToken de método de pago de Stripe (requerido para CARD)
returnUrlstringCondicionalURL HTTPS para el callback de redirección 3DS (requerido para CARD)

Enrutamiento de pagos

  • Los pagos con CARD se enrutan a través de NestPay y pueden requerir verificación 3D Secure.
  • GOOGLE_PAY, APPLE_PAY, IDEAL, REVOLUT y BANCONTACT se enrutan a través de Stripe.

DTO de cliente

CampoTipoRequeridoDescripción
emailstringDirección de correo electrónico del cliente
firstNamestringNombre del cliente
lastNamestringApellido del cliente
phonestringNoNúmero de teléfono del cliente (se recomienda formato E.164)

DTO de dirección

CampoTipoRequeridoDescripción
countryIsocodestringCódigo ISO del país
citystringNombre de la ciudad
addressLinestringDirección
postalCodestringNoCódigo postal
taxNumberstringNoNúmero de identificación fiscal
companyNamestringNoNombre de la empresa (para clientes comerciales)

Campos adicionales

CampoTipoRequeridoDescripción
idempotencyKeystringNoClave única para prevenir pedidos duplicados. La misma clave con la misma carga útil devuelve el pedido original (recomendado).
externalReferencestringNoSu referencia interna de pedido para seguimiento
callbackUrlstringNoURL para recibir actualizaciones de estado del pedido

Respuesta

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 -- Presente cuando se requiere verificación 3D Secure (pagos con CARD). Redirija al cliente a esta URL.
  • clientSecret -- Presente para pagos enrutados a través de Stripe. Use esto con Stripe.js para confirmar el pago en el lado del cliente.

409 Conflict (Idempotente)

Si se envía la misma idempotencyKey con la misma carga útil, se devuelve el pedido original con un código de estado 409. Es seguro reintentar.

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