This endpoint is used to send an invoice to PMS so that the invoice details are added to corresponding folio.
Request
POST https://app.hotelrunner.com/api/v1/apps/pos/postings
Query Parameters
Key | Description |
---|---|
TOKEN | Token generated for this integration on integration setup page |
HR ID | Hotel ID provided on integration setup page |
Example: POST https://app.hotelrunner.com/api/v1/apps/pos/postings?token=12345&hr_id=67890
Example Query Body
{ "transaction_id": "tr1234", "invoice_number": "in1234", "pos_id": "123", "reservation_id_customer_id": "41749:25238942", "note": "Invoice Note", "posts": [ { "post_type": "expense", "department_id": "HR:37", "revenue_account_id": "pos_code_for_f-b", "product_id": null, "product_name": "Tost", "quantity": 1, "unit": "Portion", "amount": 1, "currency": "USD", "exchange_rate": "15.40" }, { "post_type": "expense", "department_id": null, "revenue_account_id": null, "product_id": "peynir", "product_name": "Peynir", "quantity": 1, "unit": "Portion", "amount": 15, "currency": null, "exchange_rate": null } ] }
Body Parameters
Parameter | Required | Description |
---|---|---|
transaction_id | Yes | Unique transaction id generated for this operation. Same ID will be used to cancel this operation |
invoice_number | Yes | Invoice identifier used in POS |
pos_id | Yes | Physical terminal ID in the target system |
reservation_id_customer_id | Yes | Identifier of guest who is charged for the invoice. For posting as a direct sale, enter "-1". |
note | No | Invoice note as a string |
post.post_type | Yes | Type of the invoice item. Accepted values: "Expense", "Payment", "Refund", "Discount" |
post.department_id | Yes* | Sales department ID. Mapped IDs used in POS can be entered directly. HotelRunner IDs should be entered with "HR:" prefix. |
post.revenue_account_id | Yes* | Revenue account ID. Mapped IDs used in POS can be entered directly. HotelRunner IDs should be entered with "HR:" prefix. |
post.product_id | Yes* | Extra/Product ID. Mapped IDs used in POS can be entered directly. HotelRunner IDs should be entered with "HR:" prefix. |
post.product_name | No | Product name as a string |
post.quantity | Yes | Quantity of sold product |
post.unit | No | Unit of the quantity |
post.amount | Yes | Total price |
post.currency | No | Used currency as a string. Base currency is used if left blank |
post.exchange_rate | No** | Exchange rate of given currency to the base currency. **Mandatory if different currency is used |
*: Either product_id should be given, or both department_id and revenue_account_id should be given.
Guidelines
- For department_id, revenue_account_id and product_id:
- Each item in a posting should have its sales department and revenue account information. Since products (defined as extras on HotelRunner) have their own sales department and revenue account info, there is no need to provide department and revenue account if product info is given.
- The system checks product_id first. If it is null, then it looks at department_id and revenue_account_id.
- If a POS ID is entered and the mapping cannot be found, the default selection for the mapping is used.
- For an item, specified sales department and revenue account should have the same type_code.
- reservation_id_customer_id: This is provided with In-House API. The system finds the correct folio for the posting with this information. If "-1" entered, posting is added under the direct sales folio.