EDistribution API

Price a new order#

POST/v1/orders

Builds and prices a real cart for the requested stay — the same pricing path a CRS agent's cart goes through, so the quoted price matches exactly. Scoped to the caller's own channel and agent group (there is no channelId/agentId/userId field on this payload — none would be honoured). Takes no inventory hold: validUntil is a courtesy expiry, not a guarantee that the stay is still available or that its price hasn't moved. Book promptly once the quote is accepted.

Bank offers. Supply bankOfferCode to apply a specific offer, or applyBestBankOffer: true to have the highest-value one picked for you. Only offers on your own channel are ever visible or applicable. An explicit bankOfferCode always wins over applyBestBankOffer — a named code is never swapped for a richer one — and a code that is unknown, off-channel, or ineligible for this stay comes back 400 rather than being quietly ignored. Whatever was applied is named in summary.bankOffer, with the amount and the stayAfterCancellationPlanpriceAfterBankOffer steps it moved between.

Request

cURL
curl -X POST 'https://partner-api.elivaas.com/v1/orders' \
  -u "$ELIVAAS_API_KEY:" \
  -H 'Content-Type: application/json' \
  -d '{"listingId":"list_9f8a2b1c","checkIn":"2026-08-10","checkOut":"2026-08-13","adults":2,"children":0,"infants":0,"selectedProperties":[{"propertyId":"prop_1a2b3c","quantity":1}],"meals":[{"mealId":"meal_breakfast","dates":["2026-08-01"],"unsureOfDates":true,"adults":0,"children":0,"chefOnCall":true}],"vas":[{"vasId":"vas_airport_transfer","variantId":"string","dates":["2026-08-01"],"unsureOfDates":true,"quantity":0,"dateQuantities":[{"date":"2026-08-01","quantity":0}]}],"bankOfferCode":"HDFC10","applyBestBankOffer":false,"externalRef":"PO-48213"}'
Response 200
{
  "orderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "validUntil": "2026-07-27T05:30:00Z",
  "currency": "INR",
  "items": [
    {
      "listingId": "string",
      "checkIn": "2026-08-01",
      "checkOut": "2026-08-01",
      "nights": 0,
      "soldOut": true,
      "itemSubtotal": 0,
      "cancellationPlanId": "string",
      "cancellationPlanDiscount": 0,
      "cancellationPolicy": [
        {
          "cancelBy": "2026-08-01",
          "refundPercentage": 0,
          "label": "string"
        }
      ]
    }
  ],
  "summary": {
    "baseSubtotal": 0,
    "mealsSubtotal": 0,
    "vasSubtotal": 0,
    "cancellationPlanDiscount": 0,
    "stayAfterCancellationPlan": 0,
    "bankOffer": {
      "code": "HDFC10",
      "title": "10% off with HDFC credit cards",
      "discountType": "PERCENTAGE",
      "discount": 1000,
      "applied": true,
      "reason": "string"
    },
    "priceAfterBankOffer": 0,
    "offersDiscount": 0,
    "taxableSubtotal": 0,
    "gst": 0,
    "grandTotal": 0
  }
}

Request body#

listingIdstringrequired

Listing to price.

checkInstring<date>required

Check-in date (ISO 8601).

checkOutstring<date>required

Check-out date (ISO 8601).

adultsinteger<int32>

Adult guest count.

childreninteger<int32>

Child guest count.

infantsinteger<int32>

Infant guest count.

selectedPropertiesobject[]

Specific properties picked from the listing, with per-property quantity. Omit to record only the listing-level booking, with no property breakdown tracked.

mealsobject[]

Meal add-ons to apply to the stay. Omit or leave empty for none.

vasobject[]

Value-added-service add-ons to apply to the stay. Omit or leave empty for none.

bankOfferCodestring

Apply this specific bank offer to the stay. Only offers available on your own channel can be applied; a code that doesn't exist, isn't offered on your channel, or isn't eligible for this stay is rejected with 400 — it is never silently dropped and never silently replaced by a different offer. Takes precedence over applyBestBankOffer, even when the best available offer is worth more.

applyBestBankOfferboolean

Apply the highest-value bank offer available on your channel for this stay, chosen for you. Ignored entirely when bankOfferCode is supplied. When no offer is eligible the order simply prices without one — that is not an error. The offer that won is named in summary.bankOffer on the response.

externalRefstring

Optional caller-supplied reference. Used as the order's display name when supplied; purely cosmetic, never used for lookups or scoping.

Responses#

StatusMeaning
200OK
400Validation failure. The message names the offending parameter. Limits are rejected, never silently clamped: an over-length id list, a page size above 100 or a date window longer than 365 days all land here rather than coming back quietly truncated.
401Missing, malformed, revoked or unknown API key, or an agent group whose distribution access is disabled. Pass the key as the HTTP Basic username with an empty password.
429Rate limit exhausted for this credential. Wait Retry-After seconds before retrying; the budget is per credential, not per IP.

See Errors for the error body shape and which statuses are worth retrying.