> For the complete documentation index, see [llms.txt](https://docs.2checkout.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.2checkout.com/api-reference/reference/place-order.md).

# Place Order

## Place orders using the full range of available payment methods (with examples).

> Create a new orders and collect payments from shoppers using catalog products (products defined in your Control Panel) or dynamic products (products created via API on the fly).\
> \
> For orders placed with Credit Card, the 3DS Secure flow needs to be covered by redirecting the shoppers to complet the security flow. The full process is detailed \[here]\(<https://verifone.cloud/docs/2checkout/API-Integration/01Start-using-the-2Checkout-API/2Checkout-API-general-information/3D-Secure-Flow).\\>
> \
> For a full list of list of common errors that may arise when using placing order calls  via API version 6 \[here]\(<https://verifone.cloud/docs/2checkout/API-Integration/JSON-RPC\\_API\\_6.0/API-6.0-Error-Codes/Error-handling-for-API-6.0).\\>
> \
> When placing a new order it generates unique order reference numbers for all orders (purchases). You can use this parameter RefNo sent in the body to retry authorizations for orders with failed transactions by changing the payment method.\
> \
> \*\*UniToken reuse for card payments\*\*: When an order is placed and authorized using a card, the system checks whether a UniToken already exists for that customer (matched on CustomerReference/ExternalCustomerReference plus the card's first 4 and last 4 digits). If a matching UniToken is found, it is updated with the new order reference instead of a new UniToken being generated. The response includes the \`UniToken\` field with the ID of the token that was created or updated. Requires the feature to be enabled at account-level. See \`GET /unitokens/\` to retrieve the list of tokens associated with a customer.

```json
{"openapi":"3.0.0","info":{"title":"API REST Documentation","version":"6.0-oas3"},"servers":[{"url":"https://api.2checkout.com/rest/6.0"}],"paths":{"/orders/":{"post":{"tags":["Place order"],"summary":"Place orders using the full range of available payment methods (with examples).","description":"Create a new orders and collect payments from shoppers using catalog products (products defined in your Control Panel) or dynamic products (products created via API on the fly).\n\nFor orders placed with Credit Card, the 3DS Secure flow needs to be covered by redirecting the shoppers to complet the security flow. The full process is detailed [here](https://verifone.cloud/docs/2checkout/API-Integration/01Start-using-the-2Checkout-API/2Checkout-API-general-information/3D-Secure-Flow).\n\nFor a full list of list of common errors that may arise when using placing order calls  via API version 6 [here](https://verifone.cloud/docs/2checkout/API-Integration/JSON-RPC_API_6.0/API-6.0-Error-Codes/Error-handling-for-API-6.0).\n\nWhen placing a new order it generates unique order reference numbers for all orders (purchases). You can use this parameter RefNo sent in the body to retry authorizations for orders with failed transactions by changing the payment method.\n\n**UniToken reuse for card payments**: When an order is placed and authorized using a card, the system checks whether a UniToken already exists for that customer (matched on CustomerReference/ExternalCustomerReference plus the card's first 4 and last 4 digits). If a matching UniToken is found, it is updated with the new order reference instead of a new UniToken being generated. The response includes the `UniToken` field with the ID of the token that was created or updated. Requires the feature to be enabled at account-level. See `GET /unitokens/` to retrieve the list of tokens associated with a customer.","parameters":[{"name":"X-Avangate-Authentication","in":"header","required":true,"style":"simple","explode":false,"schema":{"type":"string"}},{"name":"Accept","in":"header","required":true,"style":"simple","explode":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceOrder"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceOrderResponse"}}}},"400":{"description":"Error","content":{"application/json":{}}},"500":{"description":"Error","content":{"application/json":{}}}}}}},"components":{"schemas":{"PlaceOrder":{"type":"object","properties":{"Language":{"type":"string"},"Country":{"type":"string"},"CustomerIP":{"type":"string"},"Source":{"type":"string"},"WSOrder":{"type":"string"},"ExternalCustomerReference":{"type":"string"},"Currency":{"type":"string"},"Promotions":{"type":"array","items":{"type":"string"}},"Affiliate":{"$ref":"#/components/schemas/orders0_Affiliate"},"Items":{"type":"array","items":{"$ref":"#/components/schemas/PlaceOrder_Items"}},"BillingCycleReset":{"type":"boolean","description":"Only used when the request type is \"Place an order with manual renewal\". Licence renewal will start immediately upon processing the new order, resetting the billing cycle."},"BillingDetails":{"$ref":"#/components/schemas/PlaceOrder_BillingDetails"},"PaymentDetails":{"$ref":"#/components/schemas/PlaceOrder_PaymentDetails"},"ExtraInformation":{"$ref":"#/components/schemas/PlaceOrder_ExtraInformation"}}},"orders0_Affiliate":{"type":"object","properties":{"AffiliateCode":{"type":"string"},"AffiliateSource":{"type":"string"}}},"PlaceOrder_Items":{"type":"object","properties":{"Code":{"type":"string","description":"The unique code defined for your product."},"RenewalInformation":{"$ref":"#/components/schemas/PlaceOrder_RenewalInformation"},"UpgradeInformation":{"$ref":"#/components/schemas/PlaceOrder_UpgradeInformation"},"Name":{"type":"string"},"Description":{"type":"string"},"Quantity":{"type":"string"},"IsDynamic":{"type":"boolean"},"Tangible":{"type":"boolean"},"Fulfillment":{"type":"string"},"PurchaseType":{"type":"string"},"Price":{"$ref":"#/components/schemas/PlaceOrder_Price"},"ProductTaxCategoryUUID":{"type":"string"},"PriceType":{"type":"string"},"PriceOptions":{"type":"array","items":{"$ref":"#/components/schemas/PlaceOrder_PriceOptions"}},"CrossSell":{"$ref":"#/components/schemas/PlaceOrder_ItemCrossSell"},"UpSell":{"$ref":"#/components/schemas/PlaceOrder_ItemUpSell"},"RecurringOptions":{"$ref":"#/components/schemas/PlaceOrder_RecurringOptions"},"SubscriptionCustomSettings":{"$ref":"#/components/schemas/Item_SubscriptionCustomSettings"},"Trial":{"$ref":"#/components/schemas/PlaceOrder_TrialInput"},"Promotion":{"$ref":"#/components/schemas/PlaceOrder_ItemPromotion"},"MainProductCode":{"type":"string","description":"Required for addon products only. The ProductCode of the main (parent) product in the same order to which this addon is linked. Must match the Code of a non-addon item present in the Items array."},"MainSubscriptionReference":{"type":"string","nullable":true,"description":"When set on an item, that item is treated as a prorated addon for this existing active subscription. The first billing cycle is prorated proportionally to the remaining time between the purchase date and the main subscription's expiration date. Different items in the same order may reference different main subscriptions. Accepted payment methods are CC, EXISTING_PAYMENT_DATA, and EES_TOKEN_PAYMENT. The order currency must match the main subscription's currency. The billing email must match the customer on the main subscription.\n"}}},"PlaceOrder_RenewalInformation":{"type":"object","description":"Used for manual renewal orders.","properties":{"SubscriptionReference":{"type":"string","description":"Unique, system-generated subscription identifier of the subscription that needs to be renewed."},"Code":{"type":"string","description":"The unique code defined for your product. Required for manual renewal only if you wish to change the product on the subscription."},"Quantity":{"type":"string","description":"Number of units. Required for manual renewal only if you wish to change the product quantity on the subscription."}}},"PlaceOrder_UpgradeInformation":{"type":"object","description":"Used for upgrade orders.","properties":{"SubscriptionReference":{"type":"string","description":"Unique, system-generated subscription identifier of the subscription that needs to be upgraded."},"Code":{"type":"string","description":"The unique code defined for your product. Required for upgrade order only if you wish to change the product on the subscription."},"Quantity":{"type":"string","description":"Number of units. Required for upgrade order only if you wish to change the product quantity on the subscription."}}},"PlaceOrder_Price":{"type":"object","properties":{"Amount":{"type":"integer"},"Type":{"type":"string"}}},"PlaceOrder_PriceOptions":{"type":"object","properties":{"Name":{"type":"string"},"Options":{"type":"array","items":{"$ref":"#/components/schemas/PlaceOrder_Options"}}}},"PlaceOrder_Options":{"type":"object","properties":{"Name":{"type":"string"},"Value":{"type":"string"},"Surcharge":{"type":"integer"}}},"PlaceOrder_ItemCrossSell":{"type":"object","properties":{"ParentCode":{"type":"string"},"CampaignCode":{"type":"integer"},"AutoAdded":{"type":"boolean"}}},"PlaceOrder_ItemUpSell":{"type":"object","properties":{"ParentCode":{"type":"string"},"CampaignCode":{"type":"integer"},"PriceOptions":{"type":"array","items":{"type":"string"}},"Quantity":{"type":"integer"}}},"PlaceOrder_RecurringOptions":{"type":"object","properties":{"CycleLength":{"type":"integer"},"CycleUnit":{"type":"string","enum":["DAY","WEEK","MONTH","YEAR"]},"CycleAmount":{"type":"number"},"ContractLength":{"type":"integer"},"ContractUnit":{"type":"string","enum":["DAY","WEEK","MONTH","YEAR","FOREVER"]}}},"Item_SubscriptionCustomSettings":{"type":"object","required":["CycleUnit","CycleLength","CycleAmount","CycleAmountType"],"properties":{"CycleLength":{"type":"integer","nullable":true,"minimum":1},"CycleUnit":{"type":"string","enum":["DAY","MONTH"],"nullable":true},"CycleAmount":{"type":"number","format":"float","minimum":0,"exclusiveMinimum":true},"CycleAmountType":{"type":"string","enum":["NET","GROSS"]}}},"PlaceOrder_TrialInput":{"type":"object","properties":{"Period":{"type":"integer"},"Price":{"type":"number"}}},"PlaceOrder_ItemPromotion":{"type":"object","properties":{"Code":{"type":"string"}}},"PlaceOrder_BillingDetails":{"required":["Address1","City","CountryCode","Email","FirstName","LastName","State","Zip"],"type":"object","properties":{"Address1":{"type":"string"},"City":{"type":"string"},"State":{"type":"string"},"CountryCode":{"type":"string"},"Email":{"type":"string"},"FirstName":{"type":"string"},"LastName":{"type":"string"},"Zip":{"type":"string"}}},"PlaceOrder_PaymentDetails":{"required":["Currency","Type"],"type":"object","properties":{"Type":{"type":"string"},"Currency":{"type":"string","description":"The currency ISO code for the payment - ISO 4217. Can be changed for the method \"Place an order with manual renewal\" to set a common currency for multiple subscriptions renewed via the same order."},"CustomerIP":{"type":"string"},"UniToken":{"type":"string","description":"The UUID of a previously issued UniToken to use as the payment method. Required when Type is UNITOKEN. When an order is placed and authorized with a card and a UniToken already exists for the same customer (matched on CustomerReference/ExternalCustomerReference plus the card's first 4 and last 4 digits), that UniToken is updated with the new order reference and its ID is returned in the response, instead of a new UniToken being created."},"PaymentMethod":{"$ref":"#/components/schemas/PlaceOrder_PaymentDetails_PaymentMethod"}}},"PlaceOrder_PaymentDetails_PaymentMethod":{"type":"object","properties":{"CardNumber":{"type":"string"},"CardType":{"type":"string"},"Vendor3DSReturnURL":{"type":"string"},"Vendor3DSCancelURL":{"type":"string"},"ExpirationYear":{"type":"string"},"ExpirationMonth":{"type":"string"},"CCID":{"type":"string"},"HolderName":{"type":"string"},"RecurringEnabled":{"type":"boolean"},"HolderNameTime":{"type":"integer"},"CardNumberTime":{"type":"integer"}}},"PlaceOrder_ExtraInformation":{"type":"object","properties":{"RetryFailedPaymentLink":{"type":"string","format":"url","description":"One of the url query params must be \"[REFNO]\""},"ProposalId":{"type":"string","maximum":36},"PurchaseOrderDownloadLink":{"type":"string","format":"url"},"AssistedSale":{"type":"boolean"},"AssistedSaleAccountManagerEmail":{"type":"string"}}},"PlaceOrderResponse":{"type":"object","description":"The order that was created (or updated, for a retry/resume). Field availability can vary slightly by payment method - see the response examples on the operation for the full, method-specific payloads.","properties":{"RefNo":{"type":"string","description":"Unique order reference number."},"OrderNo":{"type":"integer"},"ExternalReference":{"type":"string"},"Status":{"type":"string","description":"The status of the order (e.g. AUTHRECEIVED, PENDING, COMPLETE)."},"ApproveStatus":{"type":"string"},"VendorApproveStatus":{"type":"string"},"UniToken":{"type":"string","description":"The ID of the UniToken associated with this order. Present on orders authorized with a card (directly or via a stored UniToken). If a UniToken already existed for the customer and card (matched on CustomerReference/ExternalCustomerReference plus the card's first 4 and last 4 digits), that same UniToken is updated with this order's reference and returned here instead of a new one being created."},"Language":{"type":"string"},"Source":{"type":"string"},"WSOrder":{"type":"string"},"OrderDate":{"type":"string"}},"additionalProperties":true}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.2checkout.com/api-reference/reference/place-order.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
