Skip to main content
Altcraft Docs LogoAltcraft Docs Logo
User guideDeveloper guideAdmin guide
Company siteHelp center
English
  • Русский
  • English
v75
Login
  • User API documentation
  • API interaction
  • Matching
  • Profiles
  • Databases
  • Resources
  • Segments
  • Suppression lists
  • Templates and fragments
  • Campaigns
  • Mailings
  • Automation scenarios
  • Loyalty Programs
    • Get profile tier in a loyalty program
    • Export points transactions
    • Expiring points for a period
    • Get profile account transactions
    • Get trigger promotions list
    • Accrue points to a member
    • Redeem member points
    • Commit temporary transaction
    • Preliminary Order Calculation
    • Order Confirmation
    • Roll back temporary transaction
    • Cancel points transaction
    • Get points account balance
    • Register member in a loyalty program
    • Remove member from loyalty program
  • Promo codes
  • Goals
  • Application push notifications
  • Market
  • Analytic reports
  • SendersDev
  • External datatables queries
  • Objects
  • Miscellaneous
  • Importing the API collection in Postman
  • List of API endpoints
  • SDK
  • Loyalty Programs
  • Preliminary Order Calculation
Documentation for version v75

Preliminary Order Calculation

Description​

The preorder method allows you to perform a preliminary order calculation considering promotions and loyalty program member points.

The request result can be used to display final amounts, discounts, and write-offs before creating the final order.

tip

This method does not create an order in the system; it returns the calculated state of the order with applied market and loyalty rules. To create the calculated order after a successful preorder, use the preorder_commit method.

URL​

Method: POST

https://example.com/api/v1.1/market/orders/preorder

Request Parameters​

ParameterTypeExampleRequiredDescription
tokenstring"abcdefghijklmnqrstuvwxyz"YesAPI token
external_idstring"12"YesExternal order ID
matchingstring

"email"
"phone"
"profile_id"
"custom"

Yes

Method for searching the loyalty program member profile

emailstring"example@example.com"If matching = emailMember's email
phonestring"+79000000000"If matching = phoneMember's phone number
profile_idstring"696e304f547840a7286619e0"If matching = profile_idProfile ID
dataJSON object
{
   "endpoint": "site",
   "status": "new",
   "currency": "RUB",
   "total_price": "139999.00",
   "lines": [...]
}
Yes

The data object contains order data

tip

The lines field is required and must contain at least one order item.

data object​

ParameterTypeExampleRequiredDescription
endpointstring"bot", "website"YesOrder source (touchpoint). Must be configured in the Market module
statusstring"new", "confirmed", "paid"YesOrder status. Uses statuses configured in the platform
currencystring"RUB", "USD", "EUR"YesOrder currency (three-letter ISO code)
total_pricestring"2500.00"YesTotal order cost before discounts
final_total_pricestring"2150.00"YesFinal order cost after applying all discounts
delivery_coststring"300.00"NoDelivery cost
create_timestring (ISO 8601)"2026-02-18T13:01:05.141Z"NoOrder creation date and time. If not provided, the current server time is used
regionstring"region_moscow"NoRegion identifier for applying regional prices and promotions
linesarraySee "lines array" section belowYesArray of order items. Must contain at least 1 element
promocodesarraySee "promocodes array" section belowNoArray of promo codes applied to the order
applied_promotionsarraySee "applied_promotions array" section belowNoPromotions applied to this order.
redeem_pointsarraySee "redeem_points array" section belowYes, if type="redeem_points" is specified in applied_promotionsArray of point redemptions by point currency types
custom_fieldsobject
{
"field1": "value1",
"field2": "value2"
}
NoOrder custom fields
tagsarray
[
"summer_sale",
"first_order"
]
NoTags for labeling the order

lines array​

The array contains information about the order items. Must contain at least 1 item.

Each item is a separate object within the array with the following parameters:

ParameterTypeExampleRequiredDescription
external_idstring"line_1"YesExternal line ID in the client's system
productstring"iphone17pmb256"Yes*Product identifier
skustring"IPHONE17-256-BLACK"Yes*SKU identifier
line_numberinteger1NoSequential line number in the order
countinteger1YesQuantity of the product
base_price_per_itemstring"139999.00"YesBase price per unit
min_price_per_itemstring"130000.00"NoMinimum allowable price per unit
final_price_per_itemstring"139500.00"YesFinal price per unit after applying all discounts
statusstring"new"NoOrder line status
custom_fieldsobject{"color": "black", "size": "XL"}NoLine custom fields
applied_promotionsarraySee "applied_promotions array" section belowNoPromotions applied to this line.

* — one of the parameters is required: product or sku

promocodes array​

The array contains objects with information about promo codes.

A full description of the promo code structure can be found in this article.

ParameterTypeExampleRequiredDescription
codestring"SUMMER20"YesPromo code
pool_idinteger42YesPromo code pool identifier

redeem_points array​

An array with information about loyalty point redemption. Each object describes a separate redemption.

A full description of the point redemption structure can be found in this article.

ParameterTypeExampleRequiredDescription
points_currency_iidinteger1Yes*Internal identifier of the point type
points_currency_eidstring"bonus1"Yes*External identifier of the point type
namestring"Bonus points"NoName of the point type
amountinteger499YesNumber of points to redeem

* — one of the parameters is required: points_currency_iid or points_currency_eid

applied_promotions array​

tip

The applied_promotions array can be contained both in the data object and in the lines array within that object. In the first case, the array will contain promotions applied to the order, in the second — promotions applied to the products/lines.

An array of promotions applied to the order. Each object in the array describes a separate promotion.

ParameterTypeExampleRequiredDescription
typestring"discount", "accrue_points", "redeem_points", "code_issue", "message"YesPromotion type
promotionobject
"promotion": {
"external_id": "promo_1",
"name": "Summer Sale"
}
YesObject with the promotion's identifier and name
amountstring"150.00"Yes, if type is discount, accrue_points, or redeem_pointsDiscount amount or number of points
points_infoobject
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Bonus points",
"amount": "50"
}
Yes, if type is accrue_points or redeem_pointsObject with point information

The structure of the points_info object is as follows:

ParameterTypeExampleRequiredDescription
points_currency_iidinteger1Yes*Internal identifier of the point type
points_currency_eidstring"bonus1"Yes*External identifier of the point type
namestring"Bonus points"NoName of the point type
amountstring"6999"YesNumber of points
expiration_datestring (ISO 8601)"2027-02-18T00:00:00.000Z"NoExpiration date for accrued points

* — one of the parameters is required: points_currency_iid or points_currency_eid

Request Example​

  • JSON
  • XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"external_id": "12",
"matching": "email",
"email": "example@example.com",
"data": {
"endpoint": "site",
"status": "new",
"delivery_cost": "0.00",
"total_price": "139999.00",
"currency": "RUB",
"redeem_points": [
{
"points_currency_iid": 1,
"amount": 499
}
],
"lines": [
{
"external_id": "line___ASTGRf",
"product": "iphone17pmb256",
"base_price_per_item": "139999.00",
"min_price_per_item": "0.00",
"final_price_per_item": "139999.00",
"count": 1,
"custom_fields": {},
"currency": "RUB"
}
]
}
}
<xml>
<token>abcdefghijklmnqrstuvwxyz</token>
<external_id>12</external_id>
<matching>email</matching>
<email>example@example.com</email>
<data>
<endpoint>site</endpoint>
<status>new</status>
<delivery_cost>0.00</delivery_cost>
<total_price>139999.00</total_price>
<currency>RUB</currency>
<redeem_points>
<points_currency_iid>1</points_currency_iid>
<amount>499</amount>
</redeem_points>
<lines>
<external_id>line___ASTGRf</external_id>
<product>iphone17pmb256</product>
<base_price_per_item>139999.00</base_price_per_item>
<min_price_per_item>0.00</min_price_per_item>
<final_price_per_item>139999.00</final_price_per_item>
<count>1</count>
<currency>RUB</currency>
</lines>
</data>
</xml>

Response Example​

  • JSON
  • XML
{
"data": {
"profile": {
"profile_id": "696e304f547840a7286619e0"
},
"order": {
"processing_target": "calculated",
"total_price": "139999.00",
"final_total_price": "139500.00",
"delivery_cost": "0.00",
"currency": "RUB",
"lines": [
{
"external_id": "line___ASTGRf",
"line_number": 0,
"count": 1,
"product": "iphone17pmb256",
"base_price_per_item": "139999.00",
"min_price_per_item": "0.00",
"final_price_per_item": "139500.00",
"custom_fields": {},
"applied_promotions": [
{
"type": "accrue_points",
"promotion": {
"external_id": "bonus",
"name": "Point Accrual"
},
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Main Point",
"amount": "6999"
}
},
{
"type": "redeem_points",
"promotion": {
"external_id": "bonus",
"name": "Point Redemption"
},
"points_info": {
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Main Point",
"amount": "499"
}
}
]
}
],
"custom_fields": {},
"applied_promotions": [],
"points_info": [
{
"points_currency_iid": 1,
"points_currency_eid": "bonus1",
"name": "Main Point",
"status": "success",
"active_amount_for_current_order": "20999",
"accrue_points_amount_for_current_order": "6999",
"redeemed_points_amount_for_current_order": "499"
}
],
"promocodes_info": []
}
},
"error": 0,
"error_text": "Successful operation"
}
<xml>
<data>
<profile>
<profile_id>696e304f547840a7286619e0</profile_id>
</profile>
<order>
<processing_target>calculated</processing_target>
<total_price>139999.00</total_price>
<final_total_price>139500.00</final_total_price>
<delivery_cost>0.00</delivery_cost>
<currency>RUB</currency>
<lines>
<external_id>line___ASTGRf</external_id>
<line_number>0</line_number>
<count>1</count>
<product>iphone17pmb256</product>
<base_price_per_item>139999.00</base_price_per_item>
<min_price_per_item>0.00</min_price_per_item>
<final_price_per_item>139500.00</final_price_per_item>
<custom_fields/>
<applied_promotions>
<type>accrue_points</type>
<promotion>
<external_id>bonus</external_id>
<name>Point Accrual</name>
</promotion>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Main Point</name>
<amount>6999</amount>
</points_info>
</applied_promotions>
<applied_promotions>
<type>redeem_points</type>
<promotion>
<external_id>bonus</external_id>
<name>Point Redemption</name>
</promotion>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Main Point</name>
<amount>499</amount>
</points_info>
</applied_promotions>
</lines>
<custom_fields/>
<applied_promotions/>
<points_info>
<points_currency_iid>1</points_currency_iid>
<points_currency_eid>bonus1</points_currency_eid>
<name>Main Point</name>
<status>success</status>
<active_amount_for_current_order>20999</active_amount_for_current_order>
<accrue_points_amount_for_current_order>6999</accrue_points_amount_for_current_order>
<redeemed_points_amount_for_current_order>499</redeemed_points_amount_for_current_order>
</points_info>
<promocodes_info/>
</order>
</data>
<error>0</error>
<error_text>Successful operation</error_text>
</xml>

Response Parameters​

ParameterTypeDescription
dataobjectCalculation result data
errorintError code
error_textstringError description

The data object has the following structure.

ParameterTypeDescription
profileobjectMember profile. Contains the profile identifier
orderobjectCalculated order. More details
Last updated on Mar 12, 2026
Previous
Commit temporary transaction
Next
Order Confirmation
  • Description
  • URL
  • Request Parameters
    • data object
      • lines array
      • promocodes array
      • redeem_points array
      • applied_promotions array
  • Request Example
  • Response Example
  • Response Parameters
© 2015 - 2026 Altcraft, LLC. All rights reserved.