Create Order
Converting a quote into an order is the final step of the purchase flow. Ticket Buyback confirms the ticket assignment, records the order under your partner account, and returns a ticket transfer email address that your customer uses to accept the tickets.
This endpoint requires a valid Bearer token and a configured Routable payment method on your TBB account. See Authentication and Routable Setup.
Endpointβ
POST /v1/orders
Requestβ
Headersβ
Authorization: Bearer <token>
Content-Type: application/json
Bodyβ
{
"quote_id": "qt_9f3a2b1c",
"delivery_type": "mobile_transfer",
"delivery_deadline": "2026-09-12T18:00:00Z"
}
Field Definitionsβ
| Field | Type | Required | Description |
|---|---|---|---|
quote_id | string | Yes | Quote ID from the Create Quote response |
delivery_type | enum | Yes | Ticket delivery method β see options below |
delivery_deadline | datetime (UTC) | Yes | When your customer must complete the ticket transfer by. Must be before the event start time |
Delivery Typesβ
| Value | Description |
|---|---|
mobile_transfer | TBB initiates a mobile ticket transfer β most common for Ticketmaster and AXS events |
mobile_qr | QR code-based ticket delivery |
pdf | PDF ticket file delivery |
mobile_transfer is the recommended delivery type for the majority of events. Use mobile_qr or pdf only if the event platform does not support mobile transfers.
cURL Exampleβ
curl -X POST https://api.ticketbuyback.com/partner/v1/orders \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "qt_9f3a2b1c",
"delivery_type": "mobile_transfer",
"delivery_deadline": "2026-09-12T18:00:00Z"
}'
JavaScript Exampleβ
const response = await fetch(
"https://api.ticketbuyback.com/partner/v1/orders",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
quote_id: "qt_9f3a2b1c",
delivery_type: "mobile_transfer",
delivery_deadline: "2026-09-12T18:00:00Z",
}),
}
);
const { data } = await response.json();
const transferEmail = data.delivery.transfer_email;
Response β 201 Createdβ
{
"success": true,
"data": {
"order_id": "TBB-20260226-X7K9",
"status": "awaiting_transfer",
"quote_id": "qt_9f3a2b1c",
"event": {
"event_id": "5496123",
"event_name": "New England Patriots vs. Buffalo Bills",
"event_datetime_local": "2026-09-13T13:00:00",
"event_timezone": "America/New_York"
},
"seats": {
"section_name_display": "Section 101",
"row_name_display": "Row A",
"quantity": 2,
"seat_range": "12-13"
},
"pricing": {
"unit_price": 175.00,
"subtotal": 350.00
},
"delivery": {
"delivery_type": "mobile_transfer",
"delivery_deadline": "2026-09-12T18:00:00Z",
"transfer_email": "transfer-inbox-abc123@ticketbuyback.com"
},
"created_at": "2026-02-26T10:32:00Z",
"updated_at": "2026-02-26T10:32:00Z"
},
"meta": {
"request_id": "abc123",
"timestamp": "2026-02-26T10:32:00Z"
}
}
Response Fieldsβ
| Field | Description |
|---|---|
order_id | Unique order identifier β save this for your records |
status | Order status β see status values below |
quote_id | The quote this order was created from |
event | Event details for this order |
seats.section_name_display | Human-readable section name |
seats.row_name_display | Human-readable row name |
seats.quantity | Number of tickets in this order |
seats.seat_range | Specific seat numbers assigned (e.g. 12-13) |
pricing.unit_price | Price per ticket in USD |
pricing.subtotal | Total charged for this order |
delivery.delivery_type | Delivery method used |
delivery.delivery_deadline | Transfer acceptance deadline |
delivery.transfer_email | The email address your customer must accept the ticket transfer from |
Order Statusesβ
| Status | Description |
|---|---|
awaiting_transfer | Order confirmed β waiting for your customer to accept the ticket transfer |
transfer_complete | Customer has accepted the ticket transfer successfully |
transfer_expired | Customer did not accept the transfer before the deadline |
cancelled | Order was cancelled |
Ticket Transferβ
After a successful order, your customer must accept the ticket transfer from the transfer_email address returned in the response.
Make sure your customer accepts the transfer before the delivery_deadline. If the deadline passes without acceptance, the order status moves to transfer_expired.
Here is a suggested message to send your customer:
Your tickets are on the way!
You will receive a ticket transfer from:
transfer-inbox-abc123@ticketbuyback.com
Please accept the transfer before September 12, 2026 at 6:00 PM UTC.
Check your inbox (and spam folder) for the transfer email.
Error Scenariosβ
| Scenario | HTTP Status | Error Code |
|---|---|---|
| Missing or invalid Bearer token | 401 | UNAUTHORIZED |
| Token expired | 401 | TOKEN_EXPIRED |
| Routable payment not configured | 403 | PAYMENT_NOT_CONFIGURED |
| Quote not found | 404 | QUOTE_NOT_FOUND |
| Quote belongs to a different partner | 403 | FORBIDDEN |
| Quote has expired | 422 | QUOTE_EXPIRED |
| Quote already used | 422 | QUOTE_ALREADY_CONSUMED |
Invalid delivery_type value | 400 | VALIDATION_ERROR |
delivery_deadline is after event time | 422 | INVALID_DELIVERY_DEADLINE |
Full Order Creation Flowβ
async function createOrder({ quoteId, deliveryDeadline }) {
// Check quote expiry before submitting
const response = await fetch(
"https://api.ticketbuyback.com/partner/v1/orders",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
quote_id: quoteId,
delivery_type: "mobile_transfer",
delivery_deadline: deliveryDeadline,
}),
}
);
if (!response.ok) {
const { error } = await response.json();
throw new Error(`Order failed: ${error.code} β ${error.message}`);
}
const { data } = await response.json();
// Save these for your records and to instruct your customer
return {
orderId: data.order_id,
status: data.status,
transferEmail: data.delivery.transfer_email,
deliveryDeadline: data.delivery.delivery_deadline,
seats: data.seats,
pricing: data.pricing,
};
}
End-to-End Flow Summaryβ
1. POST /auth/token β Get access token
2. GET /events β Find the event
3. GET /events/{id}/sections β Browse sections
4. GET /events/{id}/sections/{name}/rows β Browse rows
5. POST /quotes β Lock in a price
6. POST /orders β Confirm the order β You are here
β Share transfer_email with your customer
Next Stepβ
Understand how billing and payouts work between you and Ticket Buyback: