Create Order
POST https://api.paysera.com/merchant-order/integration/v1/orders
Creates a new payment order in the system. The order represents the core transaction record and must be created before generating a payment link.
Authorization​
This endpoint requires OAuth2 Bearer token authentication.
Authorization Header Format:
Authorization: Bearer YOUR_ACCESS_TOKEN
For more details, see the Authentication section.
Request Body​
| Field | Type | Required | Description |
|---|---|---|---|
project_id | string (UUID) | Your merchant project ID (defaults to the project from your JWT token) | |
redirect_urls.success_url | string | URL to redirect customer after successful payment | |
redirect_urls.failure_url | string | URL to redirect customer after failed payment | |
redirect_urls.callback_url | string | Webhook URL for payment notifications (omit and you receive no webhooks) | |
purchase.reference | string | ✓ | Your unique order reference (e.g., order ID in your system) |
purchase.amount | integer | ✓ | Amount in minor units (e.g., 2500 for €25.00) |
purchase.currency | string | ✓ | ISO 4217 currency code (e.g., EUR) |
splits | array | Per-order entries for the project's split policy. Required when the policy has a variadic slot. See Split Payments. | |
splits[].type | string | ✓ (when splits present) | variadic (the per-order recipient for the policy's variadic slot) or tip (an extra tip recipient) |
splits[].beneficiary_id | string | ✓ (when splits present) | Id of the registered beneficiary to pay (UUID) |
splits[].slot_id | string | Variadic slot to bind to. Required only when the policy has more than one variadic slot; ignored for tips | |
split_overrides | object | Per-order restatement of the whole split policy. Accepts a recipient account directly (no registration). Requires per-order overrides enabled. See Per-order rule overrides. | |
metadata | object | Key-value metadata. Include referrer (your site URL) for origin verification |
All amounts use minor currency units (e.g., cents for EUR). The amount 2500 represents €25.00.
Response​
| Field | Type | Description |
|---|---|---|
project_id | string (UUID) | Project identifier associated with the order |
order_id | string (UUID) | Unique order identifier |
created_at | integer | Creation timestamp in UTC timezone |
merchant_data | object | Key-value merchant data attached to the order |
source | string | Source indicating where this order originated from |
purchase.reference | string | Unique identifier for the order in the merchant system |
purchase.amount | integer | Order amount in minor currency units (cents), returned as an integer |
purchase.currency | string | Currency code in ISO 4217 format |
Example​
Request​
POST https://api.paysera.com/merchant-order/integration/v1/orders
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
{
"project_id": "b7c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"redirect_urls": {
"success_url": "https://example.com/checkout/success",
"failure_url": "https://example.com/checkout/failure",
"callback_url": "https://example.com/webhooks/paysera"
},
"purchase": {
"reference": "ORDER-12345",
"amount": 2500,
"currency": "EUR"
},
"metadata": {
"referrer": "https://example.com",
"platform": "my-ecommerce",
"platform_version": "2.0.0"
}
}
Splits Example​
When the merchant project has a configured split policy with a variadic slot, attach the recipient's beneficiary_id per order. Register the beneficiary first (see Split Payments); the remaining shares come from the policy template:
{
"purchase": {
"reference": "ORDER-12345",
"amount": 100000,
"currency": "EUR"
},
"splits": [
{ "type": "variadic", "beneficiary_id": "550e8400-e29b-41d4-a716-446655440000" }
]
}
For payer tips, use "type": "tip" (one entry per recipient). See Split Payments for the full reference. Orders with splits require a non-expiring payment link — set lifetime: 0 when creating the link.
Response​
{
"project_id": "b7c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"order_id": "a6f2b8e3-5e5f-47d9-b13f-87ed2db2938a",
"created_at": 1736433270,
"merchant_data": {
"key1": "value1",
"key2": "value2"
},
"source": "https://example.com",
"purchase": {
"reference": "ORDER-12345",
"amount": 2500,
"currency": "EUR"
}
}
Next Steps​
After creating an order, create a payment link to generate a URL where customers can complete the payment.
AUTHORIZATION: HTTP
REQUEST
RESPONSE
{
"project_id": "b7c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"order_id": "a6f2b8e3-5e5f-47d9-b13f-87ed2db2938a",
"created_at": 1736433270,
"merchant_data": {
"key1": "value1",
"key2": "value2"
},
"source": "https://example.com",
"purchase": {
"reference": "ORDER-12345",
"amount": 2500,
"currency": "EUR"
}
}