iotoms Docs

Award a request for quote

POST
/api/v1/procurement/rfqs/{id}/award

Picks a winning vendor per line and creates one draft purchase order per winning vendor. Checks quote expiry and minimum order quantity, requires a reason when a winner is not the lowest rate, and marks losing quotes as lost. Requires the separate award permission; no journal entry is created.

How to use it

  1. Call Compare quotes on a request for quote and pick one winning cell per line; send its quotationItemId, and awardedQty if not the full required quantity.
  2. Add a reason if any winner is not the cheapest, and set acceptBelowMoq to true only if you accept a quantity below a vendor's minimum.
  3. The request must be SENT or QUOTED and winning quotes must not be expired on the order date; this needs the separate award permission.
  4. One draft purchase order is created per winning vendor, losing quotes become LOST, and the request becomes AWARDED and cannot be awarded again.

Authorization

BearerAuth
headerAuthorizationBearer <JWT>

Path Parameters

id*string

ID of the record (UUID).

Formatuuid

Header Parameters

X-TenantID*string

Your merchant's tenant code — the value typed in the Domain field on the iotoms login screen. See Concepts.

Request Body

application/json
  1. body
decisions*array<>

One decision per request line you are awarding, naming the winning quote line. Lines can go to different vendors.

reason?|

Why you chose this outcome. Required when any winner is not the cheapest quote for its line.

acceptBelowMoq*boolean

Set true to award a quantity below a vendor's minimum order quantity; otherwise such awards are refused. Default false.

rememberRates*boolean

Save each winning rate as an agreed price so later purchase orders pre-fill it. Default true.

orderDate?|

Order date for the purchase orders created (YYYY-MM-DD). Defaults to today; quote expiry is checked against it.

Formatdate

Response Body

OK

*/*
  1. response
status*string

Outcome of the call: SUCCESS when the request worked, ERROR when it did not.

message*string

Short human-readable message describing the result, for logs or display; do not parse it.

data?

The award outcome: the draft purchase orders created, the lines awarded and the quotes that lost.

Example Request
curl -X POST 'https://beta.iotoms.com/api/v1/procurement/rfqs/497f6eca-6276-4993-bfeb-53cbbbba6f08/award' \  -H 'X-TenantID: your-tenant-code' \  -H 'Content-Type: application/json' \  -d '{  "decisions": [    {      "quotationItemId": 0    }  ],  "acceptBelowMoq": true,  "rememberRates": true}'
Example Response
{  "status": "string",  "message": "string",  "data": {    "rfqId": "5483c05b-f58d-4a80-82f1-a80d2c5d2632",    "rfqNumber": "string",    "status": "string",    "awardReason": "string",    "awardedBy": "string",    "awardedAt": "2019-08-24T14:15:22Z",    "purchaseOrders": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "poNumber": "string",        "vendorId": "e9b57fab-1850-44d4-8499-71fd15c845a0",        "vendorName": "string",        "status": "string",        "orderDate": "2019-08-24",        "expectedDeliveryDate": "2019-08-24",        "totalAmount": 0,        "notes": "string",        "items": [          {            "id": 0,            "itemId": "string",            "itemName": "string",            "orderedQty": 0,            "receivedQty": 0,            "outstandingQty": 0,            "unitCost": 0,            "unitOfMeasure": "string",            "uomId": "4df47f00-a69d-4ff2-b50d-4a7649a4b70c",            "receivingLocationId": "f1f8626b-ea08-4582-99e5-64aabd817e6a",            "receivingLocationName": "string",            "sourceQuotationItemId": 0          }        ],        "rfqId": "5483c05b-f58d-4a80-82f1-a80d2c5d2632",        "sourceQuotationId": "5ebd081a-5e1a-48e9-b096-b5f5f5f7febd",        "createdAt": "2019-08-24T14:15:22Z"      }    ],    "awardedLines": [      {        "quotationItemId": 0,        "quotationId": "98c8afab-b1d9-462f-9483-5a2dbf34985f",        "vendorId": "e9b57fab-1850-44d4-8499-71fd15c845a0",        "vendorName": "string",        "itemId": "string",        "itemName": "string",        "awardedQty": 0,        "unitPrice": 0,        "extendedAmount": 0,        "purchaseOrderId": "84a099d9-2935-4997-a6ac-0d3ee9bbef72",        "purchaseOrderNumber": "string",        "overriddenLowestRate": true      }    ],    "lostQuotationIds": [      "3f95f250-f434-4340-a98a-e1f4245c8b92"    ],    "agreedRatesRecorded": 0  }}