---
title: "Place orders using the full range of available payment methods (with examples)."
method: POST
path: "/orders/"
tags: ["Place order"]
---

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

`POST /orders/`

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.

## Headers

- `X-Avangate-Authentication` string, required
- `Accept` string, required

## Request body

- PlaceOrder
  - `Language` string
  - `Country` string
  - `CustomerIP` string
  - `Source` string
  - `WSOrder` string
  - `ExternalCustomerReference` string
  - `Currency` string
  - `Promotions` string[]
  - `Affiliate` Orders0Affiliate
    - `AffiliateCode` string
    - `AffiliateSource` string
  - `Items` PlaceOrderItems[]
    - `Code` string — The unique code defined for your product.
    - `RenewalInformation` PlaceOrderRenewalInformation — Used for manual renewal orders.
      - `SubscriptionReference` string — Unique, system-generated subscription identifier of the subscription that needs to be renewed.
      - `Code` string — The unique code defined for your product. Required for manual renewal only if you wish to change the product on the subscription.
      - `Quantity` string — Number of units. Required for manual renewal only if you wish to change the product quantity on the subscription.
    - `UpgradeInformation` PlaceOrderUpgradeInformation — Used for upgrade orders.
      - `SubscriptionReference` string — Unique, system-generated subscription identifier of the subscription that needs to be upgraded.
      - `Code` string — The unique code defined for your product. Required for upgrade order only if you wish to change the product on the subscription.
      - `Quantity` string — Number of units. Required for upgrade order only if you wish to change the product quantity on the subscription.
    - `Name` string
    - `Description` string
    - `Quantity` string
    - `IsDynamic` boolean
    - `Tangible` boolean
    - `PurchaseType` string
    - `Price` PlaceOrderPrice
      - `Amount` integer
      - `Type` string
    - `ProductTaxCategoryUUID` string
    - `PriceType` string
    - `PriceOptions` PlaceOrderPriceOptions[]
      - `Name` string
      - `Options` PlaceOrderOptions[]
        - `Name` string
        - `Value` string
        - `Surcharge` integer
    - `CrossSell` PlaceOrderItemCrossSell
      - `ParentCode` string
      - `CampaignCode` integer
      - `AutoAdded` boolean
    - `UpSell` PlaceOrderItemUpSell
      - `ParentCode` string
      - `CampaignCode` integer
      - `PriceOptions` string[]
      - `Quantity` integer
    - `RecurringOptions` PlaceOrderRecurringOptions
      - `CycleLength` integer
      - `CycleUnit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
      - `CycleAmount` number
      - `ContractLength` integer
      - `ContractUnit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR' | 'FOREVER'
    - `SubscriptionCustomSettings` ItemSubscriptionCustomSettings
      - `CycleLength` integer, nullable, required
      - `CycleUnit` 'DAY' | 'MONTH', nullable, required
      - `CycleAmount` number, float, required
      - `CycleAmountType` 'NET' | 'GROSS', required
    - `Trial` PlaceOrderTrialInput
      - `Period` integer
      - `Price` number
    - `Promotion` PlaceOrderItemPromotion
      - `Code` string
  - `BillingCycleReset` boolean — 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` PlaceOrderBillingDetails
    - `Address1` string, required
    - `City` string, required
    - `State` string, required
    - `CountryCode` string, required
    - `Email` string, required
    - `FirstName` string, required
    - `LastName` string, required
    - `Zip` string, required
  - `PaymentDetails` PlaceOrderPaymentDetails
    - `Type` string, required
    - `Currency` string, required — 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` string
    - `PaymentMethod` PlaceOrderPaymentDetailsPaymentMethod
      - `CardNumber` string
      - `CardType` string
      - `Vendor3DSReturnURL` string
      - `Vendor3DSCancelURL` string
      - `ExpirationYear` string
      - `ExpirationMonth` string
      - `CCID` string
      - `HolderName` string
      - `RecurringEnabled` boolean
      - `HolderNameTime` integer
      - `CardNumberTime` integer
  - `ExtraInformation` PlaceOrderExtraInformation
    - `RetryFailedPaymentLink` string, url — One of the url query params must be "[REFNO]"
    - `ProposalId` string
    - `PurchaseOrderDownloadLink` string, url
    - `AssistedSale` boolean
    - `AssistedSaleAccountManagerEmail` string

## Response `201`

Created

- PlaceOrderResponse — 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.
  - `RefNo` string — Unique order reference number.
  - `OrderNo` integer
  - `ExternalReference` string
  - `Status` string — The status of the order (e.g. AUTHRECEIVED, PENDING, COMPLETE).
  - `ApproveStatus` string
  - `VendorApproveStatus` string
  - `Language` string
  - `Source` string
  - `WSOrder` string
  - `OrderDate` string

## Other responses

- `400` — Error
- `500` — Error

---

[API](https://skmtc.dev/2checkout/apis/api-rest-documentation.md) · [All operations](https://skmtc.dev/2checkout/apis/api-rest-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/2checkout/api-rest-documentation/revisions/8a7ea610933e/schema)
