- Request
- Body
- Cart
- Contact
- PaymentMethod
- Address
- ShippingMethod
- CartItem
- Coupon
- Discount
- Measurements
- CartTotal
- Location
- CourierOption
- PickupOption
- YandexDeliveryOption
- ItemQuantity
- ItemReceipt
- FlexibleCustomerChoice
- FlexibleTimeIntervals
- PickupSchedule
- Agent
- MarkQuantity
- Supplier
- TimeInterval
- FlexibleTimeIntervalsGridDescriptor
- PaymentsOperator
- TransferOperator
- Responses
- 200 OK
- 400 Bad Request
/v1/order/create
Request for validation or creation of an order on the merchant side.
In the request parameters, it passes a cart with items and their prices, selected delivery method,
and the total order cost (orderAmount
). The merchant checks that the prices and items in the cart are correct.
If the cart is correct, the merchant reserves the items for 30 minutes and responds with the success code to the Yandex Pay backend. Within 30 minutes, the Yandex Pay backend should send a notification about the payment status. The merchant can also poll the order status by the order details handle in the Yandex Pay API.
If the cart is correct, the merchant reserves the items for 30 minutes and responds by the success code with the order ID. If the merchant doesn't get the notification about the change in the order payment status within 30 minutes, you need to get the order details synchronously before releasing the items.
Warning
Only after receiving the FAILED
payment status, the merchant can release the items and mark
the order as canceled.
If the merchant receives code 4xx in response, the validation of the order is considered unsuccessful, the order won't be paid, and there won't be any repeat attempts to check the order. In the case of response 5xx, the request is repeated.
Request
POST
https://example.merchant.ru/v1/order/create
Production
POST
https://sandbox.example.merchant.ru/v1/order/create
Sandbox
Body
application/json
{
"billingContact": {
"email": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneAdditionalCode": "string",
"secondName": "string"
},
"cart": {
"cartId": "string",
"coupons": [
{
"description": "string",
"status": "VALID",
"value": "string"
}
],
"discounts": [
{
"amount": "123.45",
"description": "string",
"discountId": "string"
}
],
"externalId": "string",
"items": [
{
"description": "string",
"discountedUnitPrice": "123.45",
"finalPrice": "123.45",
"measurements": {
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"pointsAmount": "123.45",
"productId": "string",
"quantity": {
"available": "123.45",
"count": "123.45",
"label": "string"
},
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"subtotal": "123.45",
"title": "string",
"total": "123.45",
"type": "PHYSICAL",
"unitPrice": "123.45"
}
],
"measurements": {
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"total": {
"amount": "123.45",
"label": "string",
"pointsAmount": "123.45"
}
},
"currencyCode": "RUB",
"merchantId": "c3073b9d-edd0-49f2-a28d-b7ded8ff9a8b",
"metadata": "string",
"orderAmount": "123.45",
"orderId": "string",
"paymentMethod": {
"cardLast4": "string",
"cardNetwork": "AMEX",
"methodType": "CARD"
},
"shippingAddress": {
"addressLine": "string",
"building": "string",
"comment": "string",
"country": "string",
"district": "string",
"entrance": "string",
"floor": "string",
"intercom": "string",
"locale": "string",
"locality": "string",
"location": {
"latitude": 0,
"longitude": 0
},
"region": "string",
"room": "string",
"street": "string",
"zip": "string"
},
"shippingContact": {
"email": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneAdditionalCode": "string",
"secondName": "string"
},
"shippingMethod": {
"courierOption": {
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"category": "EXPRESS",
"courierOptionId": "string",
"customerChoice": {
"date": "string",
"time": {
"end": "string",
"start": "string"
}
},
"fromDate": "string",
"fromTime": "string",
"provider": "BOXBERRY",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"timeIntervals": {
"grid": {
"duration": "string",
"end": "string",
"start": "string",
"step": "string"
},
"type": "GRID",
"values": [
{
"end": "string",
"start": "string"
}
]
},
"title": "string",
"toDate": "string",
"toTime": "string",
"type": "PLAIN"
},
"methodType": "DIRECT",
"pickupOption": {
"address": "string",
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"description": "string",
"fromDate": "string",
"location": {
"latitude": 0,
"longitude": 0
},
"phones": [
"string"
],
"pickupPointId": "string",
"provider": "YANDEX_MARKET",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"schedule": [
{
"fromTime": "string",
"label": "string",
"toTime": "string"
}
],
"storagePeriod": 0,
"title": "string",
"toDate": "string"
},
"yandexDeliveryOption": {
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"category": "EXPRESS",
"fromDatetime": "2022-12-29T18:02:01Z",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"title": "string",
"toDatetime": "2022-12-29T18:02:01Z",
"yandexDeliveryOptionId": "string"
}
}
}
Name |
Description |
cart* |
Type: Cart Cart |
currencyCode* |
Type: string Three-letter code of the order currency code (ISO 4217) Enum: |
billingContact |
Type: Contact |
merchantId |
Type: string<uuid> |
metadata |
Type: string Arbitrary data transmitted at button initialization |
orderAmount |
Type: string<double> Total cost of the order to be paid, including refunds, delivery costs, discounts, and promo codes Example: |
orderId |
Type: string ID assigned to the existing order on the merchant side and transmitted at button initialization |
paymentMethod |
Type: PaymentMethod Selected payment method |
shippingAddress |
Type: Address Delivery address is available if the COURIER method is selected |
shippingContact |
Type: Contact |
shippingMethod |
Type: ShippingMethod Selected delivery method. |
Cart
Name |
Description |
items* |
Type: CartItem[] Cart item |
cartId |
Type: string The internal ID of the Yandex Pay cart. The store's backend must use this parameter as the ID of the customer cart and the idempotency key for the |
coupons |
Type: Coupon[] Coupons applied to the cart |
discounts |
Type: Discount[] Discounts applied to the cart |
externalId |
Type: string Cart ID passed by the merchant |
measurements |
Type: Measurements |
total |
Type: CartTotal Total cart cost that the customer is to pay |
Contact
Name |
Description |
|
Type: string |
firstName |
Type: string |
lastName |
Type: string |
phone |
Type: string |
phoneAdditionalCode |
Type: string |
secondName |
Type: string |
PaymentMethod
Name |
Description |
methodType* |
Type: string Enum: |
cardLast4 |
Type: string |
cardNetwork |
Type: string Payment system Enum: |
Address
Name |
Description |
building* |
Type: string |
country* |
Type: string |
addressLine |
Type: string Full address |
comment |
Type: string |
district |
Type: string |
entrance |
Type: string |
floor |
Type: string |
intercom |
Type: string |
locale |
Type: string |
locality |
Type: string |
location |
Type: Location |
region |
Type: string |
room |
Type: string |
street |
Type: string |
zip |
Type: string |
ShippingMethod
Name |
Description |
methodType* |
Type: string Enum: |
courierOption |
Type: CourierOption if methodType == COURIER |
pickupOption |
Type: PickupOption if methodType == PICKUP |
yandexDeliveryOption |
Type: YandexDeliveryOption if methodType == YANDEX_DELIVERY |
CartItem
Name |
Description |
productId* |
Type: string Product ID in the merchant system Make sure that each |
quantity* |
Type: ItemQuantity Product quantity in the order |
description |
Type: string Product description |
discountedUnitPrice |
Type: string<double> Price per product unit with discount per item Example: |
finalPrice |
Type: string<double> Price per product unit with all discounts per item and on the cart Example: |
measurements |
Type: Measurements Product dimensions and weight. Required for the |
pointsAmount |
Type: string<double> Number of Plus points Example: |
receipt |
Type: ItemReceipt Data for receipt generation |
subtotal |
Type: string<double> Total price per item without discount Example: |
title |
Type: string Product name |
total |
Type: string<double> Total price per item with item discount Example: |
type |
Type: string Product type. Important for integrating with delivery services Default: Enum: |
unitPrice |
Type: string<double> Total price per product unit without discount Example: |
Coupon
Name |
Description |
value* |
Type: string Coupon code |
description |
Type: string Description For example, "3% discount" |
status |
Type: string Enum: |
Discount
Name |
Description |
amount* |
Type: string<double> Discount amount Example: |
description* |
Type: string Text description |
discountId* |
Type: string Discount ID in the merchant system |
Measurements
Name |
Description |
height* |
Type: number<float> Height, in meters |
length* |
Type: number<float> Length, in meters |
weight* |
Type: number<float> Weight, in kilograms |
width* |
Type: number<float> Width, in meters |
CartTotal
Name |
Description |
amount* |
Type: string<double> Cart cost with all discounts Example: |
label |
Type: string Name of measurement units, for example, "kg" or "pcs" |
pointsAmount |
Type: string<double> Number of plus points Example: |
Location
Name |
Description |
latitude* |
Type: number<float> |
longitude* |
Type: number<float> |
CourierOption
Name |
Description |
amount* |
Type: string<double> Delivery cost Example: |
category* |
Type: string Enum: |
courierOptionId* |
Type: string ID of the selected delivery method in the merchant system |
title* |
Type: string Delivery method name. Shown to the user in the option list |
allowedPaymentMethods |
Type: string[] Individual payment methods for the delivery method. Use this parameter if you want to restrict the payment methods specified in Enum: |
customerChoice |
Type: FlexibleCustomerChoice Date and interval selected by the user. Only for |
fromDate |
Type: string<date> Closest delivery date for |
fromTime |
Type: string Start of the delivery time interval. Only for |
provider |
Type: string Delivery service type. Enum: |
receipt |
Type: ItemReceipt |
timeIntervals |
Type: FlexibleTimeIntervals Codes the intervals of the delivery time available for selection. Only for |
toDate |
Type: string<date> Latest delivery date for |
toTime |
Type: string End of the delivery time interval. Only for |
type |
Type: string Option type.
For
Default: Enum: |
PickupOption
Name |
Description |
address* |
Type: string Address in string format |
location* |
Type: Location |
pickupPointId* |
Type: string Unique pickup point ID in the merchant's system |
title* |
Type: string Pickup point's name |
allowedPaymentMethods |
Type: string[] Individual payment methods for the selected pickup method. Methods that can be used to pay for the order with the selected pickup method. Use this parameter if you want to restrict the payment methods specified in Enum: |
amount |
Type: string<double> Cost of delivery to the location Example: |
description |
Type: string Additional description |
fromDate |
Type: string<date> YYYY-MM-DD. Closest possible delivery date |
phones |
Type: string[] Contact phone numbers |
provider |
Type: string Pickup point's type. Enum: |
receipt |
Type: ItemReceipt |
schedule |
Type: PickupSchedule[] Pickup point's schedule |
storagePeriod |
Type: integer<int32> Optional. Storage period at the pickup point, in days. |
toDate |
Type: string<date> YYYY-MM-DD. Latest delivery date |
YandexDeliveryOption
Name |
Description |
amount* |
Type: string<double> Delivery cost Example: |
category* |
Type: string Enum: |
title* |
Type: string Delivery method name. Shown to the user in the option list |
yandexDeliveryOptionId* |
Type: string ID of the Yandex Delivery offer |
allowedPaymentMethods |
Type: string[] Individual payment methods for the delivery method. Use this parameter if you want to restrict the payment methods specified in Enum: |
fromDatetime |
Type: string<date-time> |
receipt |
Type: ItemReceipt |
toDatetime |
Type: string<date-time> |
ItemQuantity
Name |
Description |
count* |
Type: string<double> Product quantity in the order Example: |
available |
Type: string<double> Maximum available product quantity Example: |
label |
Type: string Name of measurement units, for example, "kg" or "pcs" |
ItemReceipt
Name |
Description |
tax* |
Type: integer Value description: Link Enum: |
agent |
Type: Agent |
excise |
Type: string<double> It shouldn't include more than two decimal digits. For example: 1.12, 5.1, 10, 11.00 . Example: |
markQuantity |
Type: MarkQuantity |
measure |
Type: integer Value description: Link Enum: |
paymentMethodType |
Type: integer Value description: Link Enum: |
paymentSubjectType |
Type: integer Value description: Link Enum: |
productCode |
Type: string<base64> Product code (a base64-encoded array of 1 to 32 bytes) |
supplier |
Type: Supplier |
title |
Type: string |
FlexibleCustomerChoice
Name |
Description |
date* |
Type: string<date> |
time |
Type: TimeInterval |
FlexibleTimeIntervals
Name |
Description |
type* |
Type: string For the Enum: |
grid |
Type: FlexibleTimeIntervalsGridDescriptor Encodes the intervals as a grid. Use this format if you want to set more than 20 delivery intervals.
Example: |
values |
Type: TimeInterval[] Set the list of intervals directly. Suitable for a small number of delivery intervals. The maximum recommended number of intervals is 20 |
PickupSchedule
Name |
Description |
fromTime* |
Type: string HH:mm, "08:00" |
label* |
Type: string For example, "Mon-Fri" |
toTime* |
Type: string HH:mm, "20:00" |
Agent
Name |
Description |
agentType* |
Type: integer Agent type by taxable object. See values Enum: |
operation |
Type: string |
paymentsOperator |
Type: PaymentsOperator |
phones |
Type: string[] |
transferOperator |
Type: TransferOperator |
MarkQuantity
Name |
Description |
denominator* |
Type: integer<int32> |
numerator* |
Type: integer<int32> |
Supplier
Name |
Description |
inn |
Type: string |
name |
Type: string |
phones |
Type: string[] |
TimeInterval
Name |
Description |
end* |
Type: string Interval end time |
start* |
Type: string Interval start time |
FlexibleTimeIntervalsGridDescriptor
Name |
Description |
duration* |
Type: string Duration of each interval |
end* |
Type: string Maximum start time for the latest interval |
start* |
Type: string Start time for the very first interval |
step* |
Type: string Difference in time between the starts of two neighboring intervals |
PaymentsOperator
Name |
Description |
phones |
Type: string[] |
TransferOperator
Name |
Description |
address |
Type: string |
inn |
Type: string |
name |
Type: string |
phones |
Type: string[] |
Responses
200 OK
success
Body
application/json
{
"data": {
"metadata": "string",
"orderId": "string",
"redirectUrls": {
"onAbort": "string",
"onError": "string",
"onSuccess": "string"
},
"ttl": null
},
"status": "string"
}
Name |
Description |
data* |
|
status* |
Type: string |
MerchantCreateOrderResponse
Name |
Description |
orderId* |
Type: string ID assigned to the created order on the merchant side |
metadata |
Type: string |
redirectUrls |
Type: MerchantRedirectUrls |
ttl |
Type: integer<int32> Order's time to live (in seconds) Default: |
MerchantRedirectUrls
Name |
Description |
onError* |
Type: string The field is required for online stores only. A link to redirect the user in case of a payment error or TTL expiry for a payment link |
onSuccess* |
Type: string The field is required for online stores only. Link to redirect the user on payment success. |
onAbort |
Type: string Link to redirect the user on payment cancellation. Payment can be canceled by the user in the payment form. |
400 Bad Request
bad request
Body
application/json
{
"reason": "string",
"reasonCode": "FORBIDDEN",
"status": "fail"
}
Name |
Description |
reasonCode* |
Type: string Enum: |
reason |
Type: string |
status |
Type: string Default: |
No longer supported, please use an alternative and newer version.