{
  "openapi": "3.0.1",
  "info": {
    "title": "PetroMon Integration Gateway",
    "description": "Partner API for the PetroMon order lifecycle — submit orders, drive stage\ntransitions, and receive lifecycle events without the PetroMon web UI.\n\n## Authentication\n\nSend your API key as `X-Api-Key: ptm_live_…` (or `ptm_test_…` in sandbox). Keys are\nissued in the portal; keys issued before the PetroMon rename start `erd_` and remain\nvalid.\n\nThis reference covers every endpoint an API key can call. Account management —\nsigning in, team, issuing keys, registering webhook endpoints, the event feed and the\naudit log — is done in the portal and accepts a portal session only, so it is\ndeliberately absent here.\n\n## Statuses are names, never numbers\n\nThe lifecycle runs `ordered → bdc_approved → good_standing → depot_approved →\nbrv_checked → loaded → marked → released`.\n\nPetroMon stores these as integers internally and **those integers are not ordered by\nprogress** — cancellations sit numerically above `released`. Compare the names.\n\n## Every list is paged\n\nLists answer with `items`, `page`, `pageSize`, `totalCount` and `totalPages`, and take\n`?page=` and `?pageSize=` — 50 by default, 200 at most. Read `totalCount` rather than\nassuming a short page means the end: one OMC sponsors 542 outlets.\n\n`GET /api/v1/reference` is the exception. It is a snapshot for priming a cache at\nstartup, so its lists are capped rather than paged — walk the individual endpoints when\nyou need all of something.\n\n## Errors\n\nEvery rejection carries a stable `errorCode` to branch on, a human `message` for logs,\nand a `requestId` to quote to support.\n\n## Scope\n\nWhat you can see comes from your company's PetroMon registration, never from the request.\nAn order outside your scope returns `404`, not `403` — otherwise the response would\nconfirm that someone else's order exists.\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n\n### Every code\n\nBranch on the code, not the status: the same code can arrive with different statuses depending on where it arises, and the status alone never says which of a dozen refusals you met.\n\n**Credentials**\n\n| Code | Meaning |\n|---|---|\n| `account_selection_required` | The sign-in matched several companies; retry naming one. Portal only. |\n| `forbidden_scope` | The key does not hold the licence this call needs. |\n| `rate_limit_exceeded` | Too many requests. Back off and retry. |\n| `unauthorized` | The API key is missing, unknown, revoked or expired. |\n\n**Request**\n\n| Code | Meaning |\n|---|---|\n| `idempotency_key_reuse` | This idempotency key was used with a different body. |\n| `request_in_progress` | An identical request is still in flight. Retry shortly. |\n| `unmapped_petromon_failure` | PetroMon refused the write for a reason the gateway does not yet translate. Quote the `requestId`. |\n| `validation_failed` | The request body or query is malformed. The message says what. |\n\n**Parties**\n\n| Code | Meaning |\n|---|---|\n| `actor_not_permitted` | Your licence type may not drive this stage, or none of your companies is the party that drives it on this order. |\n| `ambiguous_actor` | You hold several OMCs and the request did not say which raises the order. Send `omcCode`. |\n| `bdc_inactive` | The BDC is not operational in PetroMon. |\n| `depot_inactive` | The depot is not operational in PetroMon. |\n| `not_a_party` | Your companies are not party to this record. |\n| `omc_inactive` | The OMC is not operational in PetroMon. |\n\n**Codes**\n\n| Code | Meaning |\n|---|---|\n| `ambiguous_code` | A code resolves to more than one record — a data fault rather than a bad request. |\n| `delivery_point_not_found` | No outlet with that code. |\n| `depot_not_found` | No depot with that code. |\n| `mode_of_transport_not_found` | No transport mode with that code. |\n| `product_class_invalid` | The product's class is missing or unusable. |\n| `product_not_found` | The product is not in PetroMon's list, so the order cannot move. |\n| `product_not_permitted` | This OMC is restricted from ordering this product. |\n| `service_provider_not_found` | No company with that code. |\n| `unknown_code` | A code matches no PetroMon record. Resolve it from `/reference`. |\n\n**Creating an order**\n\n| Code | Meaning |\n|---|---|\n| `duplicate_order_number` | You have already used this order number. |\n| `invalid_nominal_volume` | The nominal volume does not fit what this movement allows. |\n| `invalid_volume` | The volume is zero, negative or unusable. |\n| `order_number_required` | `orderNumber` is required. |\n| `order_type_required` | `type` is required. |\n| `volume_over_capacity` | The volume exceeds the vehicle's capacity. |\n| `volume_under_minimum` | The volume is below the minimum this movement allows. |\n\n**Vehicles**\n\n| Code | Meaning |\n|---|---|\n| `brv_in_transaction` | The vehicle is already committed to another order. |\n| `brv_not_found` | No vehicle with that registration number. |\n| `brv_suspended` | The vehicle is suspended. |\n| `brv_unavailable` | The vehicle is not available for this movement. |\n\n**Stock**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_balance` | The BDC does not hold enough available stock at this depot. |\n| `no_active_period` | PetroMon has no open stocking period. |\n| `no_stock_for_period` | No stock is recorded for the active period. |\n| `stock_lockdown_active` | A stock take is in progress and holds this product at this depot. |\n\n**Lifecycle**\n\n| Code | Meaning |\n|---|---|\n| `amendment_not_allowed` | The order can no longer be amended. |\n| `cancellation_not_allowed` | The order's status does not allow this cancellation. |\n| `comment_required` | A decline or cancellation needs a comment. |\n| `concurrent_modification` | Somebody else moved the order first. Re-read it and try again. |\n| `invalid_stage_transition` | The order is not at a status this action can move it from. |\n| `invalid_status` | The `status` sent is not one this endpoint accepts. |\n| `order_at_invoicing` | The order has reached invoicing and is no longer yours to change. |\n| `order_closed` | The order was closed at the end of its trading day and can no longer be changed. |\n| `order_not_found` | No such order within your scope. |\n| `reason_not_found` | No reason with that code. |\n| `reason_required` | A decline or cancellation needs a `reasonCode` from `/reference/reasons`. |\n\n**Loading**\n\n| Code | Meaning |\n|---|---|\n| `depot_storage_in_quarantine` | The depot's storage is quarantined. |\n| `meter_readings_required` | Loading needs meter readings. |\n| `tank_blocked` | Free water was recorded in the tank and the depot blocks trading on it. |\n| `tank_not_recertified` | The tank has no recertification record, which is required before loading. |\n| `tank_number_required` | This depot requires the tank the product was drawn from. |\n\n**Marking**\n\n| Code | Meaning |\n|---|---|\n| `insufficient_marker` | The can does not hold enough marker for what was asked of it. |\n| `insufficient_marker_volume` | The marker volume available is too low. |\n| `marker_info_not_found` | This order has no marking record — only a marked product has one. |\n| `marker_stock_not_found` | No marker can with that number. |\n| `marking_certificate_failed` | PetroMon could not generate a marking certificate number. |\n| `marking_certificate_unavailable` | The depot has no certificate configuration, so no number can be issued. |\n\n**Pricing**\n\n| Code | Meaning |\n|---|---|\n| `margin_not_found` | No margin is configured for this party. |\n| `price_not_set` | No price is set for this product. |\n| `price_window_not_found` | No pricing window covers this date. |\n\n**Reading**\n\n| Code | Meaning |\n|---|---|\n| `date_range_invalid` | The window is backwards, or wider than 366 days. |\n| `date_range_required` | A history read needs `createdFrom` and `createdTo`. |\n",
    "contact": {
      "name": "PetroMon Integration",
      "url": "https://erdms-integration.persolqa.com/docs"
    },
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://erdms-integration.persolqa.com",
      "description": "This gateway"
    }
  ],
  "paths": {
    "/api/v1/orders/{orderNumber}/approve": {
      "post": {
        "tags": [
          "bdc-orders"
        ],
        "summary": "BDC approval",
        "description": "Approve, decline or cancel the order. `status` decides what happens: send the status\r\nthe order should end up in.\r\n            \r\n| `status` | Effect | From |\r\n|---|---|---|\r\n| `bdc_approved` | **Approve** — reserves the volume out of the BDC's *available* balance; the actual balance is untouched until loading settles it | `ordered` |\r\n| `bdc_declined` | **Decline** | `ordered`, `bdc_approved` |\r\n| `bdc_cancelled` | **Cancel** | `ordered`, `bdc_approved`, `depot_approved`, `brv_checked` |\r\n            \r\nDeclining or cancelling needs a `comment` and a `reasonCode` from\r\n`/api/v1/reference/reasons?type=BDC`, and gives back any stock the approval reserved.\r\nAny other `status` is `422 invalid_status`.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers": {
      "get": {
        "tags": [
          "custody-transfers"
        ],
        "summary": "List transfers",
        "description": "Every transfer this partner is a party to, newest first. A BDC sees transfers it is <b>sending or receiving</b>; a depot sees transfers at its own\r\nsite. Filter by `stage` using a name — `requested`, `gra_approved`,\r\n`depot_approved`, `icums_approved`, `depot_declined`.",
        "parameters": [
          {
            "name": "stage",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "createdFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfCustodyTransferResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers/stage-counts": {
      "get": {
        "tags": [
          "custody-transfers"
        ],
        "summary": "Transfer counts",
        "description": "How many of your transfers sit at each stage. One call instead of one per stage. Stages with no transfers are omitted — treat a missing key\r\nas zero. Scoped exactly like the list, so the two always agree.",
        "parameters": [
          {
            "name": "createdFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers/{id}": {
      "get": {
        "tags": [
          "custody-transfers"
        ],
        "summary": "Get transfer",
        "description": "One transfer, with the remarks left against it. A transfer outside your scope returns `404`, never `403` — otherwise the response\r\nwould confirm that another company's transfer exists.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustodyTransferResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers/{id}/decline": {
      "post": {
        "tags": [
          "depot-custody"
        ],
        "summary": "Decline transfer",
        "description": "Declines a transfer and releases the sender's reserved stock. The depot decides. A comment and a reason are both <b>required</b> — PetroMon refuses a\r\ndecline without them, and a stock movement with no recorded reason cannot be audited later.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustodyTransferAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers/{id}/approve": {
      "post": {
        "tags": [
          "depot-custody"
        ],
        "summary": "Approve transfer",
        "description": "Reserves the sending BDC's stock. Takes the volume out of the sender's <b>available</b> balance and records a reservation. The\r\n<b>actual</b> balance does not move: the fuel is committed but still physically theirs until\r\nthe transfer is confirmed.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustodyTransferAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/custody-transfers/{id}/confirm": {
      "post": {
        "tags": [
          "depot-custody"
        ],
        "summary": "Confirm transfer",
        "description": "Settles the transfer and moves custody. Converts the reservation into a matched pair of stock transactions, takes the volume off the\r\nsender's actual balance, and credits the receiver on both. This is the point at which the\r\nfuel changes hands.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustodyTransferActionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustodyTransferAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/depot-approve": {
      "post": {
        "tags": [
          "depot-orders"
        ],
        "summary": "Depot manager approval",
        "description": "Approve or cancel the order.\r\n            \r\n| `status` | Effect | From |\r\n|---|---|---|\r\n| `depot_approved` | **Approve** — a pipeline order has no vehicle to inspect and lands on `brv_checked` | `good_standing` only |\r\n| `depot_cancelled` | **Cancel** — gives back the stock the BDC's approval reserved | `good_standing`, `depot_approved` |\r\n            \r\nICUMS moves an order to `good_standing` itself once its checks pass, so approving\r\nstraight after BDC approval is refused. Cancelling needs a `comment` and a\r\n`reasonCode` from `/api/v1/reference/reasons?type=DEPOT`.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/check-brv": {
      "post": {
        "tags": [
          "depot-orders"
        ],
        "summary": "BRV check",
        "description": "Record that the vehicle has been checked, or cancel the order.\r\n            \r\n| `status` | Effect | From |\r\n|---|---|---|\r\n| `brv_checked` | **Checked** — for a marked product this also opens the order's marking record, sizing the dose from the product's blend factor and the order's nominal volume | `depot_approved` |\r\n| `depot_cancelled` | **Cancel** — the vehicle failed its check; gives back the reserved stock | `good_standing`, `depot_approved` |\r\n            \r\nAn unmarked product gets no marking record, which is not an error. Cancelling needs a\r\n`comment` and a `reasonCode` from `/api/v1/reference/reasons?type=DEPOT`.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderApprovalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/load": {
      "post": {
        "tags": [
          "depot-orders"
        ],
        "summary": "Loading",
        "description": "Normal order loading — the waybill, the meter readings, and the tank drawn from.\r\n`status` is `loaded`, from `brv_checked`. Loading has no decline: an order that\r\nshould not load is cancelled at depot approval or the vehicle check.\r\n            \r\n`meterReadings` is required; the first pair is the one written to the order. A\r\n`tankNumber` is required where the depot operates tank recertification, and always\r\nchecked against the free-water block when given.\r\n            \r\n`loadedVolume` is required for LPG and pipeline only, and restates the order's volume —\r\nan LPG road movement must fall between 70% and 85% of the nominal volume, and a pipeline\r\nmovement may not exceed it. A road movement of anything else is already fixed at the\r\nvehicle's capacity and ignores the figure.\r\n            \r\nA product that nobody marks lands on `marked` rather than `loaded`: it would\r\notherwise wait on a marking company that is never coming.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderLoadingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderLoadingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderLoadingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/tag": {
      "post": {
        "tags": [
          "depot-orders"
        ],
        "summary": "Tagging",
        "description": "Records the tag fixed to a checked vehicle. `status` is `tagged`, from\r\n`brv_checked`. The order <b>does not move</b>:\r\ntagging records that the vehicle carries a tag, not that the product has been marked, and\r\nmarking follows loading. (PetroMon records a tag under its marked status, because tagging is\r\nthe first half of marking — the gateway sends that for you.)\r\n            \r\nOnly a marked product has anything to tag. The vehicle check opens its marking record; a\r\nproduct nobody marks has none, and is refused with `marker_info_not_found`.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderTaggingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderTaggingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderTaggingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/mark": {
      "post": {
        "tags": [
          "depot-orders"
        ],
        "summary": "Marking",
        "description": "Tags a checked order, or marks a loaded one: the same endpoint does two different things,\r\ndecided by where the order already is.\r\n            \r\nFrom `brv_checked` it <b>tags</b>: `tagNumber` is required, and the order stays\r\nwhere it is. Tagging records that the vehicle has been tagged, not that it has been marked.\r\n            \r\nFrom `loaded` it <b>marks</b>: a certificate number is issued, the order moves to\r\n`marked`, and each entry in `compartmentMarkings` draws marker from a numbered can\r\ninto one tank. A can that does not hold enough is `insufficient_marker`, counting what\r\nearlier tanks in the same request already took.\r\n            \r\nA product nobody marks never reaches here — it is already `marked` when loading\r\nfinishes.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StageTransitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StageTransitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StageTransitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/inter-depot-transfers": {
      "get": {
        "tags": [
          "inter-depot"
        ],
        "summary": "List movements",
        "description": "Every inter-depot movement you are a party to, newest request first.\r\n            \r\nA BDC sees the movements of its own stock. A depot sees what is **leaving and arriving** —\r\nboth halves, because a depot that could see only its outbound movements would be reading one\r\nside of its own stock.\r\n            \r\nFilter by `stage` using a name: `requested`, `depot_approved`, `depot_declined`,\r\n`gra_approved`, `gra_declined`, `completed`, `delivery_submitted`, `delivery_processed`.",
        "parameters": [
          {
            "name": "stage",
            "in": "query",
            "description": "One stage, by name. Omit for all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requestedFrom",
            "in": "query",
            "description": "Earliest request date. Optional.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "requestedTo",
            "in": "query",
            "description": "Latest request date. Optional.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Which page, from 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "1–200, default 50.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfInterDepotTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/inter-depot-transfers/{requestNumber}": {
      "get": {
        "tags": [
          "inter-depot"
        ],
        "summary": "Get movement",
        "description": "One movement by its PetroMon reference — the `REQ…` number, which is what its own users\r\nquote. A movement you are not a party to answers `404`, never `403`: otherwise the\r\nresponse would confirm that another BDC's movement exists.",
        "parameters": [
          {
            "name": "requestNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterDepotTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders": {
      "get": {
        "tags": [
          "orders"
        ],
        "summary": "List orders",
        "description": "Every order the partner is a party to, within a window you ask for.\r\n            \r\n`createdFrom` and `createdTo` are **required**, and may span at most 366 days.\r\nThis list reaches back through everything you have ever raised, including orders PetroMon\r\nclosed at the end of their trading day, so an unbounded call would walk years of history to\r\nbuild the first page. Asking for the window also means a caller always knows which span it\r\nis looking at, which a quiet default would not.\r\n            \r\nBoth are dates or timestamps: `?createdFrom=2026-09-01&createdTo=2026-09-30`.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "createdFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfOrderResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ppmc-orders"
        ],
        "summary": "Create order",
        "description": "Raises a new order. The OMC is taken from your API key's binding — there is no `omcId` in the body, so an\r\norder can only ever be raised in your own company's name.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/stage-counts": {
      "get": {
        "tags": [
          "orders"
        ],
        "summary": "Order counts",
        "description": "How many of the partner's orders sit at each status, within a window you ask for. One call\r\ninstead of one per status. Statuses with no orders are omitted rather than returned as zero\r\n— treat a missing key as zero.\r\n            \r\n`createdFrom` and `createdTo` are **required** and bounded exactly as they are on\r\nthe list, so the two always describe the same set of orders.",
        "parameters": [
          {
            "name": "createdFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}": {
      "get": {
        "tags": [
          "orders"
        ],
        "summary": "Get order",
        "description": "Fetches one order by its number. Preferred over id lookup: with the partner's OMC this is a\r\nseek on the clustered primary key.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/events": {
      "get": {
        "tags": [
          "orders"
        ],
        "summary": "Order timeline",
        "description": "The full stage timeline, including PetroMon auto-advances.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TransitionResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/good-standing": {
      "get": {
        "tags": [
          "orders"
        ],
        "summary": "Good standing",
        "description": "The ICUMS good-standing outcome. Separate because an order can sit at\r\n`good_standing` indefinitely, and a failure leaves it at `bdc_approved` with no\r\ndistinct status — so the status alone cannot tell a partner what happened.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoodStandingResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/orders/{orderNumber}/cancel": {
      "post": {
        "tags": [
          "ppmc-orders"
        ],
        "summary": "Cancel order",
        "description": "Cancelled by the OMC (PPMC) that raised it, before the BDC approves.\r\n            \r\n| `status` | Effect | From |\r\n|---|---|---|\r\n| `ppmc_cancelled` | **Cancel** | `ordered` |\r\n            \r\nOnly while the order is still `ordered`. Once the BDC approves, stock is reserved against\r\nit and the order is the BDC's or the depot's to decline or cancel. Nothing has been reserved\r\nyet, so no stock moves. Needs a `comment` and a `reasonCode` from\r\n`/api/v1/reference/reasons?type=OMC`. Any other `status` is\r\n`422 invalid_status`.",
        "parameters": [
          {
            "name": "orderNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderCancellationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderCancellationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OrderCancellationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderAck"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "All reference data",
        "description": "Everything at once, for a partner priming its caches on startup.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceBundleResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/trading-products": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Trading products",
        "description": "What an order's `productCode` names. Named for what the industry calls them rather than for the table they come out of. Active\r\nproducts only: an inactive one cannot be ordered, so listing it would only invite a 422.\r\n            \r\nEach carries a `type` (`PD002` white products, `PD001` LPG), which is what\r\na vehicle is licensed against — match it to the `productTypeCode` on\r\n`/reference/brvs/{vehicleNumber}` before putting a product on a truck.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/product-classes": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Trading classes",
        "description": "How a product is priced and settled. Not the same thing as a product <i>type</i>. Type is physical, and decides which vehicle may\r\ncarry it; a class is commercial — GASOIL, ATK — and appears on a product as\r\n`classCode` where PetroMon records one, which it does for a minority of them.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceProductClass"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/bdcs": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "BDCs",
        "description": "Bulk distribution companies.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceCompany"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/depots": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Depots",
        "description": "PetroMon types these `BOSD`, not `DEPOT`.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceCompany"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/omcs": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "OMCs",
        "description": "Oil marketing companies.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceCompany"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/brvs": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Vehicles",
        "description": "What an order can be carried on. Search or filter rather than enumerate — there are\r\nthousands.\r\n            \r\n**The two types are different things, not two labels for one.**\r\n            \r\n| `type` | What it is | Use with |\r\n|---|---|---|\r\n| `BRV` | A bulk road vehicle — a tanker, with compartments and a capacity of a few thousand litres. 4,583 are operational. | `modeOfTransportCode: \"MOT001\"` |\r\n| `pipe` | A pipeline segment, named for its route rather than a registration (`12-B2P3 BUIPE- BOLGA`), with capacities in the millions. 19 are operational. | `modeOfTransportCode: \"MOT002\"` |\r\n            \r\nThe type has to match the order's mode of transport: a pipeline movement on a road vehicle\r\nis refused, and a pipeline skips the vehicle check entirely because there is nothing to\r\ninspect. Nine vehicles have no type recorded at all and are returned only when no filter is\r\ngiven.\r\n            \r\nMatching is case-insensitive — PetroMon stores `BRV` upper and `pipe` lower, which\r\nis not a distinction anyone should have to remember.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Part of a vehicle number.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "`BRV` or `pipe`. Omit for every type.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Which page, from 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "1–200, default 50.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceBrv"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/brvs/{vehicleNumber}": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "One vehicle",
        "description": "One vehicle, with the products it may carry. Everything an order needs about a vehicle, from its registration number alone: its capacity,\r\nits tanks, and every `productCode` that is valid on an order naming it.\r\n            \r\nThe list endpoint above deliberately does not carry the products — a page of 200 vehicles\r\nwould repeat the same 25 products 200 times. Here it is one vehicle, so it can.",
        "parameters": [
          {
            "name": "vehicleNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceBrvDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/marker-stock": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Marker stock",
        "description": "Marker cans, and what each has left to give. A can is named by its batch and can number together; neither is unique alone. The remaining\r\nvolume is computed rather than stored — received, less everything drawn and everything\r\nwritten off — so it is current as at the moment you ask.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceMarkerStock"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/transport-modes": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Transport modes",
        "description": "BRV, pipeline.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceItem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/reasons": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Reasons",
        "description": "Why an order may be declined or cancelled. A decline or cancellation must name one: send its\r\n`code` as `reasonCode`, alongside the declining or cancelling `status`, on\r\nthe stage endpoint.\r\n            \r\nEach party keeps its own list — `BDC`, `DEPOT`, `PPMC` (the OMC; `OMC` is\r\naccepted for it), `PPMS`, `GRA` — so filter by yours. A party with no reasons of its\r\nown is given PetroMon's generic list instead, typed `RSN`, exactly as the PetroMon portal\r\noffers it.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Whose reasons. Omit for every reason.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Which page, from 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "1–200, default 50.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceReason"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/event-types": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Event types",
        "description": "Every webhook event the gateway can send, and when each fires. Read from the same list the dispatcher uses, so this cannot describe an event that never\r\narrives or omit one that does.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceEventTypeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/error-codes": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Error codes",
        "description": "Every `errorCode` this API can return, with what each means.\r\n            \r\nRead from the gateway's own error vocabulary, so it cannot describe a code that is never\r\nsent or omit one that is. Branch on the code rather than the HTTP status: the same code can\r\narrive with different statuses depending on where it arises.\r\n            \r\nThe full table is also printed at the top of this reference, under **Errors**.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfErrorCodeInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/transporters": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Transporters",
        "description": "Hauliers. An order names one by code when a transporter is recorded.",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceCompany"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/outlets": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Outlets",
        "description": "Each carries what PetroMon holds about the site: its kind (`outletTypeCode` —\r\n`OUTT0005` service station, `OUTT0008` landing beach), how it is owned and run\r\n(`ownershipTypeCode`), whether it is trading (`statusCode` — `ST001`\r\noperational, `ST003` suspended, `ST004` decommissioned), and the operator's name.\r\n            \r\nStatus is reported, not filtered on: an order line naming a suspended outlet is PetroMon's\r\nto refuse, and hiding it here would leave you unable to see why. A field PetroMon has not\r\nrecorded comes back null rather than guessed at.\r\n            \r\nDelivery outlets, which order lines are addressed to. An OMC sees only the outlets it sponsors; every other partner type must search, because there\r\nare thousands and none of them are theirs. Use `code` as the line's `outletCode`.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceOutlet"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/reference/order-types": {
      "get": {
        "tags": [
          "reference"
        ],
        "summary": "Order types",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfReferenceOrderTypeResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/stock/balances": {
      "get": {
        "tags": [
          "stock"
        ],
        "summary": "Balances",
        "description": "What you hold of each product class at each depot.\r\n            \r\nTwo figures, and the gap between them is the useful part. `actual` is what is physically\r\nthere; `available` is what is free to commit. A BDC approval moves `available`\r\nstraight away and leaves `actual` alone until loading settles it, so `committed` —\r\nthe difference — is the volume already promised to orders in flight.\r\n            \r\nHeld at the **product class**, not the product: several products share one pool of stock, so\r\na balance names a `productClassCode` from `/reference/product-classes`. Rows with\r\nnothing in them are omitted rather than returned as zero.",
        "parameters": [
          {
            "name": "depotCode",
            "in": "query",
            "description": "One depot, for a partner that holds several. Omit for all of them.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productClassCode",
            "in": "query",
            "description": "One class. Omit for all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Which page, from 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "1–200, default 50.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfStockBalance"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/stock/takes": {
      "get": {
        "tags": [
          "stock"
        ],
        "summary": "Stock takes",
        "description": "What was counted, newest first.\r\n            \r\nA stock take is a reconciliation between two parties rather than a count, so each row carries\r\nfour volumes: what the depot's system said and what the depot found, and the same pair from\r\nthe BDC. `variance` is the gap between the two **actual** figures — the disagreement the\r\nexercise exists to settle. A party sees both sides of its own takes.\r\n            \r\nCounted at the **product class**, like a balance — PetroMon's column is named for a product\r\nbut holds a class.\r\n            \r\n`stage` is PetroMon's own number, reported as it stands. The gateway does not name these\r\nyet, because the stages a take moves through are not confirmed.",
        "parameters": [
          {
            "name": "depotCode",
            "in": "query",
            "description": "One depot. Omit for all of yours.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "productClassCode",
            "in": "query",
            "description": "One class. Omit for all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Which page, from 1.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "1–200, default 50.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfStockTake"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BrvCompartmentRequest": {
        "required": [
          "outletCode"
        ],
        "type": "object",
        "properties": {
          "outletCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The receiving outlet. Must be one of the outlets in `lines`."
          },
          "tankNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Which tank, as numbered on the vehicle — from `compartments` on\r\n`/api/v1/reference/brvs`.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Assigns one compartment of the vehicle to one of the delivery lines."
      },
      "CompartmentMarkingRequest": {
        "required": [
          "batchNumber",
          "canNumber"
        ],
        "type": "object",
        "properties": {
          "tankNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "The tank, as numbered on the vehicle and assigned on the order.",
            "format": "int32"
          },
          "batchNumber": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "From `/api/v1/reference/marker-stock`."
          },
          "canNumber": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The Authentix can number, from the same place."
          },
          "markerAmountUsed": {
            "minimum": 0.0001,
            "type": "number",
            "description": "How much marker went into this compartment.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Marker drawn from one numbered can into one compartment of the vehicle."
      },
      "CreateOrderRequest": {
        "required": [
          "bdcCode",
          "depotCode",
          "lines",
          "modeOfTransportCode",
          "orderNumber",
          "productCode",
          "type"
        ],
        "type": "object",
        "properties": {
          "omcCode": {
            "maxLength": 50,
            "type": "string",
            "description": "Which of your OMCs is raising this. Needed only when the credential holds more than one.",
            "nullable": true
          },
          "orderNumber": {
            "maxLength": 450,
            "minLength": 1,
            "type": "string",
            "description": "Your own reference for this order. Must be unique within your company."
          },
          "type": {
            "minLength": 1,
            "type": "string",
            "description": "A code from `/api/v1/reference/order-types` — LOC, FOR, BLOC, BFOR, LPG-CRM."
          },
          "bdcCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "From `/api/v1/reference/bdcs`."
          },
          "depotCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "From `/api/v1/reference/depots`."
          },
          "productCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "From `/api/v1/reference/products`."
          },
          "modeOfTransportCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "From `/api/v1/reference/transport-modes`."
          },
          "brvNumber": {
            "maxLength": 50,
            "type": "string",
            "description": "The vehicle's registration number, from `/api/v1/reference/brvs`. Required for BRV\r\ntransport; omit for pipeline.",
            "nullable": true
          },
          "headNumber": {
            "type": "string",
            "description": "Only used when no vehicle is given — otherwise the vehicle's own number wins.",
            "nullable": true
          },
          "volume": {
            "minimum": 0.01,
            "type": "number",
            "description": "Litres ordered. <b>Overridden by the vehicle's capacity on BRV orders</b> (except LPG-CRM).",
            "format": "double"
          },
          "nominalVolume": {
            "type": "number",
            "format": "double"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "taxStatus": {
            "type": "integer",
            "format": "int32"
          },
          "driver": {
            "$ref": "#/components/schemas/DriverRequest"
          },
          "lines": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderLineRequest"
            },
            "description": "At least one. On a BRV order these must sum to the vehicle's capacity."
          },
          "brvCompartments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrvCompartmentRequest"
            },
            "description": "Which tank carries which outlet's product. Optional, and only meaningful on a BRV order."
          }
        },
        "additionalProperties": false,
        "description": "A new order."
      },
      "CustodyTransferAck": {
        "required": [
          "id",
          "stage",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "stage": {
            "type": "string",
            "description": "Where the transfer now is, as a name."
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "What a write answers with: what changed, and nothing else."
      },
      "CustodyTransferActionRequest": {
        "type": "object",
        "properties": {
          "comment": {
            "maxLength": 2000,
            "minLength": 0,
            "type": "string",
            "description": "Why. Required when declining.",
            "nullable": true
          },
          "reasonCode": {
            "type": "string",
            "description": "A `code` from `/api/v1/reference/reasons`. Required when declining.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The body for a custody transfer stage action."
      },
      "CustodyTransferCommentResponse": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "stage": {
            "type": "string",
            "description": "The stage it was left at, as a name. Null where the source row records none.",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "reasonId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A remark left against a transfer."
      },
      "CustodyTransferParties": {
        "type": "object",
        "properties": {
          "transferringBdcCode": {
            "type": "string",
            "nullable": true
          },
          "transferringBdcName": {
            "type": "string",
            "nullable": true
          },
          "receivingBdcCode": {
            "type": "string",
            "nullable": true
          },
          "receivingBdcName": {
            "type": "string",
            "nullable": true
          },
          "depotCode": {
            "type": "string",
            "nullable": true
          },
          "depotName": {
            "type": "string",
            "nullable": true
          },
          "productClassCode": {
            "type": "string",
            "description": "A product <b>class</b>, not a product — stock is held at class grain. The code is null for\r\none of PetroMon's 34 classes, which has none.",
            "nullable": true
          },
          "productClassName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Who is involved in a transfer, and what is moving."
      },
      "CustodyTransferResponse": {
        "required": [
          "id",
          "kind",
          "parties",
          "stage"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "stage": {
            "type": "string",
            "description": "One of `requested`, `gra_approved`, `depot_approved`, `icums_approved`,\r\n`depot_declined`."
          },
          "kind": {
            "type": "string",
            "description": "`normal`, `out`, `intra`, `bost`, or `unknown`."
          },
          "parties": {
            "$ref": "#/components/schemas/CustodyTransferParties"
          },
          "volume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "depotProductLevel": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "orderId": {
            "type": "string",
            "description": "Set when the transfer arose from an order rather than a standalone request.",
            "format": "uuid",
            "nullable": true
          },
          "requestDate": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustodyTransferCommentResponse"
            },
            "description": "Populated on the single-transfer endpoint only.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A custody transfer."
      },
      "DriverRequest": {
        "type": "object",
        "properties": {
          "driverName": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "driverPhone": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "driverMateName": {
            "maxLength": 200,
            "type": "string",
            "nullable": true
          },
          "transporterCode": {
            "maxLength": 50,
            "type": "string",
            "description": "The haulier, from `/api/v1/reference/transporters`.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Who is driving, and for which transporter. Drivers are named rather than referenced — PetroMon\r\nhas no unique public identifier for one."
      },
      "ErrorCodeInfo": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "area": {
            "type": "string"
          },
          "meaning": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "GoodStandingResponse": {
        "required": [
          "orderNumber",
          "passed",
          "state"
        ],
        "type": "object",
        "properties": {
          "orderNumber": {
            "type": "string"
          },
          "passed": {
            "type": "boolean"
          },
          "state": {
            "type": "string"
          },
          "remarks": {
            "type": "string",
            "nullable": true
          },
          "taxStatus": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InterDepotStage": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          7,
          8,
          9
        ],
        "type": "integer",
        "format": "int32"
      },
      "InterDepotTransfer": {
        "required": [
          "requestNumber",
          "stage"
        ],
        "type": "object",
        "properties": {
          "requestNumber": {
            "type": "string"
          },
          "stage": {
            "$ref": "#/components/schemas/InterDepotStage"
          },
          "stageName": {
            "type": "string",
            "readOnly": true
          },
          "bdcCode": {
            "type": "string",
            "nullable": true
          },
          "loadDepotCode": {
            "type": "string",
            "nullable": true
          },
          "dischargeDepotCode": {
            "type": "string",
            "nullable": true
          },
          "productClassCode": {
            "type": "string",
            "nullable": true
          },
          "modeOfTransportCode": {
            "type": "string",
            "nullable": true
          },
          "volume": {
            "type": "number",
            "format": "double"
          },
          "requestRemarks": {
            "type": "string",
            "nullable": true
          },
          "approvalRemarks": {
            "type": "string",
            "nullable": true
          },
          "declineRemarks": {
            "type": "string",
            "nullable": true
          },
          "requestedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "decidedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "terminated": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "LoadingResponse": {
        "type": "object",
        "properties": {
          "waybillNumber": {
            "type": "string",
            "nullable": true
          },
          "beforeMeterReading": {
            "type": "number",
            "format": "double"
          },
          "afterMeterReading": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "MeterReadingRequest": {
        "type": "object",
        "properties": {
          "afterMeterReading": {
            "type": "number",
            "format": "double"
          },
          "beforeMeterReading": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "A meter reading pair taken at loading."
      },
      "OrderAck": {
        "required": [
          "createdAt",
          "id",
          "orderNumber",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "orderNumber": {
            "type": "string"
          },
          "transactionNumber": {
            "type": "string",
            "description": "PetroMon's own reference. Assigned by it, not by you — quote it to support.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "A name, never a number."
          },
          "createdAt": {
            "type": "string",
            "description": "When PetroMon recorded the order.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "What a write answers with: what changed, and what to quote afterwards."
      },
      "OrderApprovalRequest": {
        "type": "object",
        "properties": {
          "reasonCode": {
            "type": "string",
            "description": "Why the order is being declined or cancelled — a code from\r\n`/api/v1/reference/reasons`, such as `RSN001`. <b>Required</b> when declining or\r\ncancelling; not used when approving.",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "description": "Free-text remark. <b>Required</b> when declining or cancelling.",
            "nullable": true
          },
          "waybillnumber": {
            "type": "string",
            "description": "Accepted because PetroMon's request carries it; an approval does not use it.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The status the order should end up in. What each endpoint takes:\r\n`approve` — `bdc_approved`, `bdc_declined`, `bdc_cancelled`;\r\n`depot-approve` — `depot_approved`, `depot_cancelled`;\r\n`check-brv` — `brv_checked`, `depot_cancelled`.\r\nAnything else is `422 invalid_status`, and the message names what this endpoint takes.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The body of BDC approval, depot manager approval and BRV check."
      },
      "OrderCancellationRequest": {
        "type": "object",
        "properties": {
          "reasonCode": {
            "type": "string",
            "description": "Why the order is being cancelled — a code from\r\n`/api/v1/reference/reasons?type=OMC`. <b>Required.</b>",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "description": "Free-text remark. <b>Required.</b>",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Always `ppmc_cancelled`.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The body of an OMC (PPMC) cancelling its own order."
      },
      "OrderLineRequest": {
        "required": [
          "outletCode"
        ],
        "type": "object",
        "properties": {
          "outletCode": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The receiving outlet, from `/api/v1/reference/outlets`."
          },
          "volume": {
            "minimum": 0.01,
            "type": "number",
            "description": "Litres for this outlet.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "One delivery line: how much product goes to which outlet."
      },
      "OrderLineResponse": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "outletCode": {
            "type": "string",
            "description": "The receiving outlet's code. Null when the delivery point no longer exists.",
            "nullable": true
          },
          "volume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "invoiceNumber": {
            "type": "string",
            "nullable": true
          },
          "deliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "distance": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "uppf": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "OrderLoadingRequest": {
        "type": "object",
        "properties": {
          "waybillnumber": {
            "type": "string",
            "description": "The waybill issued for this load.",
            "nullable": true
          },
          "loadedVolume": {
            "type": "number",
            "description": "Litres actually loaded. Required for LPG (70–85% of the nominal volume) and pipeline (not\r\nabove it) only; a road movement of anything else is fixed at the vehicle's capacity.",
            "format": "double",
            "nullable": true
          },
          "tankNumber": {
            "type": "string",
            "description": "The depot tank drawn from. Required where the depot operates tank recertification, and always\r\nchecked against the free-water block when given.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Always `loaded`.",
            "nullable": true
          },
          "meterReadings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeterReadingRequest"
            },
            "description": "Meter readings taken at loading. At least one pair is required; the first is recorded."
          }
        },
        "additionalProperties": false,
        "description": "The body of normal order loading."
      },
      "OrderResponse": {
        "required": [
          "createdAt",
          "id",
          "orderNumber",
          "parties",
          "status",
          "volumes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "orderNumber": {
            "type": "string"
          },
          "transactionNumber": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "parties": {
            "$ref": "#/components/schemas/PartiesResponse"
          },
          "volumes": {
            "$ref": "#/components/schemas/VolumesResponse"
          },
          "transport": {
            "$ref": "#/components/schemas/TransportResponse"
          },
          "loading": {
            "$ref": "#/components/schemas/LoadingResponse"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "uppf": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderLineResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The public shape of an order. Statuses are always names — the PetroMon integers never cross this\r\nboundary, because they are not ordered by progress and a partner comparing them numerically\r\nwould read a cancellation as \"past released\"."
      },
      "OrderTaggingRequest": {
        "type": "object",
        "properties": {
          "tagNumber": {
            "type": "string",
            "description": "The tag fixed to the vehicle. Required.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Always `tagged`. The order does not move — it stays at `brv_checked`, and PetroMon\r\nrecords the tag under its marked status.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The body of tagging."
      },
      "PagedResultOfCustodyTransferResponse": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustodyTransferResponse"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfErrorCodeInfo": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorCodeInfo"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfInterDepotTransfer": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterDepotTransfer"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfOrderResponse": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderResponse"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceBrv": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceBrv"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceCompany": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceCompany"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceEventTypeResponse": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceEventTypeResponse"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceItem": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceItem"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceMarkerStock": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceMarkerStock"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceOrderTypeResponse": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceOrderTypeResponse"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceOutlet": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceOutlet"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceProduct": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceProduct"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceProductClass": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceProductClass"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfReferenceReason": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceReason"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfStockBalance": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockBalance"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PagedResultOfStockTake": {
        "required": [
          "items",
          "page",
          "pageSize",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockTake"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PartiesResponse": {
        "type": "object",
        "properties": {
          "omcCode": {
            "type": "string",
            "description": "The OMC that raised the order, by its PetroMon code.",
            "nullable": true
          },
          "bdcCode": {
            "type": "string",
            "nullable": true
          },
          "depotCode": {
            "type": "string",
            "nullable": true
          },
          "productCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceBrv": {
        "required": [
          "vehicleNumber"
        ],
        "type": "object",
        "properties": {
          "vehicleNumber": {
            "type": "string"
          },
          "capacity": {
            "type": "number",
            "format": "double"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "productTypeCode": {
            "type": "string",
            "nullable": true
          },
          "productTypeName": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "compartments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceBrvCompartment"
            }
          }
        },
        "additionalProperties": false
      },
      "ReferenceBrvCompartment": {
        "type": "object",
        "properties": {
          "tankNumber": {
            "type": "integer",
            "format": "int32"
          },
          "capacity": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "ReferenceBrvDetail": {
        "required": [
          "vehicleNumber"
        ],
        "type": "object",
        "properties": {
          "vehicleNumber": {
            "type": "string"
          },
          "capacity": {
            "type": "number",
            "format": "double"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "productTypeCode": {
            "type": "string",
            "nullable": true
          },
          "productTypeName": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "compartments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceBrvCompartment"
            }
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceItem"
            }
          }
        },
        "additionalProperties": false
      },
      "ReferenceBundleResponse": {
        "type": "object",
        "properties": {
          "tradingProducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceProduct"
            },
            "description": "Named to match `/reference/trading-products`, so the bundle and the\nindividual lists never speak two vocabularies for one thing."
          },
          "productClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceProductClass"
            }
          },
          "bdcs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceCompany"
            }
          },
          "depots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceCompany"
            }
          },
          "transportModes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceItem"
            }
          },
          "orderTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceOrderTypeResponse"
            }
          },
          "outlets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceOutlet"
            }
          },
          "reasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceReason"
            },
            "description": "Every decline and cancellation reason, each with the party it belongs to. Its `code`\r\nis what a stage request's `reasonCode` takes, on orders and on custody transfers\r\nalike."
          }
        },
        "additionalProperties": false,
        "description": "Every reference list at once, for a partner priming its caches on startup."
      },
      "ReferenceCompany": {
        "required": [
          "code",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ReferenceEventTypeResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The `event` field on the delivered payload."
          },
          "status": {
            "type": "string",
            "description": "The order status it reports, where it reports one.",
            "nullable": true
          },
          "when": {
            "type": "string",
            "description": "What has to happen for it to fire."
          }
        },
        "additionalProperties": false,
        "description": "One webhook event the gateway can send."
      },
      "ReferenceItem": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ReferenceMarkerStock": {
        "required": [
          "batchNumber",
          "canNumber"
        ],
        "type": "object",
        "properties": {
          "batchNumber": {
            "type": "string"
          },
          "canNumber": {
            "type": "string"
          },
          "receivedVolume": {
            "type": "number",
            "format": "double"
          },
          "usedVolume": {
            "type": "number",
            "format": "double"
          },
          "lostVolume": {
            "type": "number",
            "format": "double"
          },
          "remainingVolume": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "ReferenceOrderTypeResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "What you send as `type` when raising an order."
          },
          "name": {
            "type": "string",
            "description": "Its short label."
          },
          "description": {
            "type": "string",
            "description": "What the type covers."
          }
        },
        "additionalProperties": false,
        "description": "One order type, and what it is for."
      },
      "ReferenceOutlet": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "outletTypeCode": {
            "type": "string",
            "nullable": true
          },
          "outletTypeName": {
            "type": "string",
            "nullable": true
          },
          "ownershipTypeCode": {
            "type": "string",
            "nullable": true
          },
          "ownershipTypeName": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "string",
            "nullable": true
          },
          "statusName": {
            "type": "string",
            "nullable": true
          },
          "operatorName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceProduct": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceProductClass": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isRegulated": {
            "type": "boolean"
          },
          "isBlended": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ReferenceReason": {
        "required": [
          "code",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StageTransitionRequest": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Free-text remark. <b>Required</b> when cancelling or declining.",
            "nullable": true
          },
          "waybillNumber": {
            "type": "string",
            "nullable": true
          },
          "tankNumber": {
            "type": "string",
            "nullable": true
          },
          "loadedVolume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "meterReadings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeterReadingRequest"
            }
          },
          "tagNumber": {
            "type": "string",
            "description": "The tag fixed to the vehicle. Required when tagging a checked order.",
            "nullable": true
          },
          "compartmentMarkings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompartmentMarkingRequest"
            },
            "description": "Which can marked which compartment. Required to mark a loaded order; ignored when tagging."
          }
        },
        "additionalProperties": false,
        "description": "The body every stage endpoint accepts. All of it is optional for the simple stages."
      },
      "StockBalance": {
        "required": [
          "bdcCode",
          "depotCode"
        ],
        "type": "object",
        "properties": {
          "bdcCode": {
            "type": "string"
          },
          "depotCode": {
            "type": "string"
          },
          "productClassCode": {
            "type": "string",
            "nullable": true
          },
          "productClassName": {
            "type": "string",
            "nullable": true
          },
          "actual": {
            "type": "number",
            "format": "double"
          },
          "available": {
            "type": "number",
            "format": "double"
          },
          "committed": {
            "type": "number",
            "format": "double",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "StockTake": {
        "required": [
          "bdcCode",
          "depotCode"
        ],
        "type": "object",
        "properties": {
          "bdcCode": {
            "type": "string"
          },
          "depotCode": {
            "type": "string"
          },
          "productClassCode": {
            "type": "string",
            "nullable": true
          },
          "productClassName": {
            "type": "string",
            "nullable": true
          },
          "depotSystemVolume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "depotActualVolume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bdcSystemVolume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bdcActualVolume": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "variance": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "takenOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stage": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "TransitionResponse": {
        "required": [
          "at",
          "status",
          "trigger"
        ],
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "trigger": {
            "type": "string",
            "description": "`auto` for PetroMon auto-advances (pipeline BRV skip, non-markable marking skip)."
          }
        },
        "additionalProperties": false
      },
      "TransportResponse": {
        "type": "object",
        "properties": {
          "brvNumber": {
            "type": "string",
            "description": "The vehicle's registration number — how a vehicle is named in a request.",
            "nullable": true
          },
          "modeOfTransportCode": {
            "type": "string",
            "description": "From `/api/v1/reference/transport-modes`.",
            "nullable": true
          },
          "headNumber": {
            "type": "string",
            "nullable": true
          },
          "buckNumber": {
            "type": "string",
            "nullable": true
          },
          "driver": {
            "type": "string",
            "nullable": true
          },
          "driverMate": {
            "type": "string",
            "nullable": true
          },
          "driverPhone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VolumesResponse": {
        "required": [
          "ordered"
        ],
        "type": "object",
        "properties": {
          "ordered": {
            "type": "number",
            "format": "double"
          },
          "nominal": {
            "type": "number",
            "format": "double"
          },
          "sensor": {
            "type": "number",
            "format": "double"
          },
          "gas": {
            "type": "number",
            "format": "double"
          },
          "price": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "description": "Partner API key — ptm_test_… (sandbox) or ptm_live_… (production).",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "ApiKey": [ ]
    }
  ],
  "tags": [
    {
      "name": "ppmc-orders",
      "description": "Raise an order against a BDC's stock at a depot, and cancel it before the BDC approves. Fulfilled orders are the order list filtered by status — `GET /api/v1/orders?status=released`, under **All parties**.\n\nAn order that did not finish its trading day is closed by PetroMon overnight and marked `unserved`. It stays readable, and a webhook reports it, but no endpoint here can move it any further — a stage call against one answers `422 order_closed`.",
      "x-displayName": "Orders"
    },
    {
      "name": "bdc-orders",
      "description": "Approve, decline or cancel the orders you are the named BDC on. `status` decides which.\n\nAn order that did not finish its trading day is closed by PetroMon overnight and marked `unserved`. It stays readable, and a webhook reports it, but no endpoint here can move it any further — a stage call against one answers `422 order_closed`.",
      "x-displayName": "Orders"
    },
    {
      "name": "depot-orders",
      "description": "Manager approval, BRV check, loading, tagging and marking, for orders at your depot.\n\nAn order that did not finish its trading day is closed by PetroMon overnight and marked `unserved`. It stays readable, and a webhook reports it, but no endpoint here can move it any further — a stage call against one answers `422 order_closed`.",
      "x-displayName": "Orders"
    },
    {
      "name": "depot-custody",
      "description": "Approve, confirm or decline custody transfers hosted at your depot.",
      "x-displayName": "Custody"
    },
    {
      "name": "orders",
      "description": "Read the orders you are a party to — list, detail, timeline and counts. The same calls for every party; each sees only its own.\n\nThe list and the counts reach back through every order you have raised, so both ask for a `createdFrom` and a `createdTo`, spanning at most 366 days. Reading one order by its number needs no window.",
      "x-displayName": "Orders"
    },
    {
      "name": "custody-transfers",
      "description": "Read the custody transfers you are a party to.",
      "x-displayName": "Custody transfers"
    },
    {
      "name": "inter-depot",
      "description": "Stock moving between two depots on its owner's instruction: the BDC asks, the receiving depot agrees, GRA clears it. The owner does not change — that is a custody transfer, above. A BDC sees its own movements; a depot sees what leaves and what arrives.",
      "x-displayName": "Inter depot transfers"
    },
    {
      "name": "stock",
      "description": "What you hold at a depot, and what a stock take found. A balance belongs to a BDC at a depot, so both parties to it can read it — each sees only its own.",
      "x-displayName": "Stock"
    },
    {
      "name": "reference",
      "description": "The codes every request is expressed in. The same for every party.",
      "x-displayName": "Reference"
    }
  ],
  "x-tagGroups": [
    {
      "name": "PPMC (OMC/LPGMC)",
      "tags": [
        "ppmc-orders"
      ]
    },
    {
      "name": "BDC",
      "tags": [
        "bdc-orders"
      ]
    },
    {
      "name": "DEPOT",
      "tags": [
        "depot-orders",
        "depot-custody"
      ]
    },
    {
      "name": "All parties",
      "tags": [
        "orders",
        "custody-transfers",
        "inter-depot",
        "stock",
        "reference"
      ]
    }
  ]
}