Submit a money-exchange counter transaction → Fawtara QR + invoice reference
POST/api/v1/pos/exchange-invoice
Submit a real-time money-exchange counter transaction — a remittance, an over-the-counter FX deal, a WPS transfer or a card load — from a teller application.
What is taxed. The taxable supply is the commission, not the principal
being remitted. A customer sending OMR 250 abroad is buying a service, and the
price of that service is the fee. The principal is carried on the document as
context and never enters the tax base. Both tax_category and vat_rate are
inputs, so a confirmed treatment is a field change rather than a rewrite.
GoRoute will:
- Build the Fawtara QR (TLV) from the charged total and its VAT, and render a scannable PNG for the counter receipt.
- Map the transaction to the canonical PINT OM model and validate it.
- Compute the deterministic invoice UUID.
- Schedule reporting: TDD to OTA Fawtara within 24h for a B2C simplified receipt, or Peppol AS4 to the buyer's Access Point for a B2B one.
The receipt number is scoped to the branch, so 56 branches cannot collide and a resubmitted receipt is idempotent rather than a duplicate.
Only an organisation whose country is OM may call this endpoint. Any other organisation, or one with no country set, is refused with 422 POS_COUNTRY_NOT_SUPPORTED: nothing is recorded and no QR is returned.
Request
Responses
- 201
- 409
- 422
- 503
Successful Response
The invoice UUID this sale computes to (seller, invoice number, date and totals) is already held by a different document of this organisation: a sale issued by another counter, or as the other of B2B/B2C. The sale was NOT recorded and there is no QR in the body, so do not print a receipt. Resubmitting the same sale will not succeed; issue it under a new invoice number.
Validation Error
The sale could not be confirmed as recorded (a transient platform fault). There is no QR in the body — do not print a receipt. Resubmit the same sale, with the same invoice number, after Retry-After seconds; never re-key it under a new number. The deterministic invoice UUID makes the resubmission idempotent: the sale is recorded and reported once (if the save did land but its acknowledgement was lost, the resubmission returns the original with 200).
Response Headers
Seconds to wait before resubmitting.