Skip to main content
POST
Create a draft order
When you want to delegate the payment term selection and order detail collection to Tilta’s hosted checkout experience, start by creating a draft order. A draft order requires only your identifiers – Tilta’s checkout session handles gathering amounts, line items, and payment term preferences directly from the buyer. Once the buyer completes checkout, the draft order is promoted to a standard order and you receive a webhook notification with the finalized details.
After creating a draft order, call the Create Checkout Session endpoint to generate the hosted checkout URL or JWT token to present to the buyer.
draft orders that are never completed by the buyer will remain in DRAFT status. Tilta does not automatically expire Draft orders – implement your own cleanup logic if needed.

Authorizations

Authorization
string
header
required

Your Tilta API key, sent as Bearer <key>.

Body

application/json

Order to be created.

external_id
string
required

Unique identifier of an order.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
buyer_external_id
string
required

Unique identifier of a buyer.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
amount
object
required
merchant_external_id
string

Unique identifier of a merchant. Optional only for Single-merchant platforms.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
comment
string | null

Additional order comment added below the order summary in related communication with the buyer.

Example:

"For Daniel without tomatoes"

custom_data
object | null

Free-form metadata for storing integration-specific data alongside this order.

line_items
object[]

Order line items. Please do not merge line items but provide them individually to allow for subsequent correlation with invoices.

contact_email
string<email> | null

Order-specific contact email address, used if different from the main buyer email. This allows merchants to specify which individual or entity should be contacted about this specific order.

Example:

"john.doe@example.com"

Response

Order has been successfully created.

external_id
string
required

Unique identifier of an order.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
status
enum<string>
required

Order status.

Available options:
DRAFT,
CANCELLED,
CLOSED,
PENDING_CONFIRMATION,
CONFIRMED,
EXPIRED,
DISBURSED
buyer_external_id
string
required

Unique identifier of a related buyer.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
created_at
number
required

Timestamp indicating when the order was created (unix time in seconds).

Example:

1582896122

updated_at
number
required

Timestamp indicating the last time the order was updated (unix time in seconds).

Example:

1582896122

merchant_external_id
string
required

Unique identifier of a related merchant.

Maximum string length: 100
Pattern: ^[a-zA-Z0-9-_]+$
ordered_at
integer
required

Order creation date (unix time in seconds). It cannot be in the future

payment_method
enum<string>
required

The chosen payment method for a respective order. Available payment methods depend on a number of criteria. Check the paymentterms endpoint for available options. May be left empty if the payment method has not been chosen yet.

Available options:
CASH,
CARD,
TRANSFER,
DEBIT
Example:

"TRANSFER"

payment_term
enum<string>
required

The chosen payment term for a respective order. Available payment terms depend on a number of criteria. Check the payment_terms endpoint for available options

Available options:
PREPAYMENT,
DEFER_3D,
DEFER_7D,
DEFER_14D,
DEFER_21D,
DEFER_30D,
DEFER_45D,
DEFER_60D,
DEFER_75D,
DEFER_90D,
DEFER_120D,
SPLIT_3M,
SPLIT_6M
Example:

"DEFER_30D"

amount
object
required
buyer
object
comment
string | null

Additional order comment added below the order summary in related communication with the buyer.

Example:

"For Daniel without tomatoes"

delivery_address
object | null

Delivery or shipping address for orders of goods.

custom_data
object | null

Free-form metadata for storing integration-specific data alongside this order.

line_items
object[]

Order line items. Please do not merge line items but provide them individually to allow for subsequent correlation with invoices.

contact_email
string<email> | null

Order-specific contact email address, used if different from the main buyer email. This allows merchants to specify which individual or entity should be contacted about this specific order.

Example:

"john.doe@example.com"