Skip to main content
POST
/
placeOrder
Place Order API
curl --request POST \
  --url https://stagingstores.xoxoday.com/chef/v1/oauth/api/placeOrder \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "query": "plumProAPI.mutation.placeOrder",
  "tag": "plumProAPI",
  "variables": {
    "data": {
      "productId": 15365,
      "quantity": 1,
      "denomination": 20,
      "email": "your.email@example.com",
      "tag": "Rewarding",
      "poNumber": "PO12662",
      "notifyReceiverEmail": 1,
      "notifyAdminEmail": 0,
      "performOperatorValidation": 0,
      "userMeta": {
        "topupPhoneCode": "+91",
        "topupPhoneNumber": "9857535678"
      }
    }
  }
}
'
{
  "data": {
    "placeOrder": {
      "status": 123,
      "data": {
        "orderId": 123,
        "orderTotal": 123,
        "currencyCode": "<string>",
        "amountCharged": 123,
        "orderStatus": "<string>",
        "deliveryStatus": "<string>",
        "quantity": 123,
        "voucherDetails": [
          {
            "orderId": 123,
            "productId": 123,
            "productName": "<string>",
            "currencyCode": "<string>",
            "productStatus": "<string>",
            "denomination": 123
          }
        ]
      }
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://help-plum.xoxoday.com/llms.txt

Use this file to discover all available pages before exploring further.

A unique reference ID needs to be sent for every unique order in the “poNumber” parameter We strongly recommend storing the request and response of every “PlaceOrderAPI” call

Request Schema

PathTypeDescription
dataobjectRoot request object.
data.productIdnumberProduct ID for the top-up plan.
data.quantitynumberQuantity of the top-up purchase (always 1 typically).
data.denominationnumberRecharge/top-up amount.
data.emailstringCustomer email for notifications.
data.tagstringOptional tracking tag.
data.poNumberstringClient-provided PO number (idempotency key).
data.notifyReceiverEmailnumberWhether user gets email notification (1 = yes).
data.performOperatorValidationbooleanPerforms operator validation.
data.notifyAdminEmailnumberWhether admin receives notification (1 = yes).
data.userMetaobjectMobile top-up specific parameters.
data.topupData.topupPhoneCodestringCountry code prefix (e.g., +91).
data.topupData.topupPhoneNumberstringMobile number to be recharged.

Response Schema

PathTypeDescription
dataobjectRoot response object.
data.placeOrderobjectPlace order result.
data.placeOrder.statusnumberAPI execution status (1 = success).
data.placeOrder.dataobjectComplete order details.
data.placeOrder.data.orderIdnumberUnique order ID.
data.placeOrder.data.orderTotalnumberOrder total (rounded).
data.placeOrder.data.rawOrderTotalnumberExact unrounded order amount.
data.placeOrder.data.orderDiscountstringDiscount amount applied.
data.placeOrder.data.rawOrderDiscountstringPrecise unrounded discount.
data.placeOrder.data.discountPercentstringDiscount percent.
data.placeOrder.data.currencyCodestringCurrency code.
data.placeOrder.data.currencyValuenumberCurrency conversion multiplier.
data.placeOrder.data.amountChargednumberFinal charged amount.
data.placeOrder.data.orderStatusstringOrder lifecycle status.
data.placeOrder.data.deliveryStatusstringDelivery status (pending, etc.).
data.placeOrder.data.tagstringTag from request.
data.placeOrder.data.quantitynumberQuantity ordered.
data.placeOrder.data.vouchersarrayAlways empty for top-up.
data.placeOrder.data.voucherDetailsarraySummary of top-up item(s).
data.placeOrder.data.voucherDetails[].orderIdnumberOrder ID.
data.placeOrder.data.voucherDetails[].productIdnumberProduct ID.
data.placeOrder.data.voucherDetails[].productNamestringName of the telecom/data top-up.
data.placeOrder.data.voucherDetails[].currencyCodestringCurrency code for the product.
data.placeOrder.data.voucherDetails[].productStatusstringStatus (pending).
data.placeOrder.data.voucherDetails[].denominationnumberRecharge amount.
data.placeOrder.data.voucherDetails[].vendorLogostringLogo of telecom vendor (may be empty).
data.placeOrder.data.orderMetaobjectMetadata passed in request.
data.placeOrder.data.orderMeta.emailstringEmail submitted during request.

Implementation Notes

  1. To avoid facing an error while placing an order, please pass the valid productID and denomination
  2. The maximum order quantity allowed for the products is 1 as mentioned in the “orderQuantityLimit” parameter in the GetVouchersAPI
  3. Should you wish to notify the recipient via email, please pass “1” in the “notifyReceiverEmail” parameter
  4. We recommend you store the “poNumber” that you pass in the request and the “orderID” you receive in the response
  5. A new boolean parameter, performOperatorValidation, has been introduced. When set to 0, no operator validation is performed and the order is attempted directly using the operator provided in the request. When set to 1, the system validates the requested operator against the operator identified from the vendor; if both match, the order proceeds successfully, and if they do not match, the order is rejected with an operator validation error.
  6. Should you get a 5xx error from the PlaceOrderAPI, please call GetOrderDetails and confirm if an order exists using the poNumber. If there’s no order against the poNumber, you can go ahead and place another order
Learn how to manage webhooks to receive order status updates for delayed product types.

Authorizations

Authorization
string
header
required

Authorization: Bearer <access_token>

Body

application/json
query
enum<string>
default:plumProAPI.mutation.placeOrder
required
Available options:
plumProAPI.mutation.placeOrder
tag
enum<string>
default:plumProAPI
required
Available options:
plumProAPI
variables
object
required

Response

Top-up order placed successfully.

data
object