← Platform API v1.32.0

GET /tenants/{tenantId}/purchases/bills

tenantPurchasesGetBills · Procurement

Human Supabase USER only; permissions purchases.read. Commercial documents, not fiscal ones: no tax, fiscal numbering, electronic issuance, rounding or currency conversion. An invoice is DRAFT (editable), ISSUED (frozen) or VOID (only when nothing was applied). Its total is the exact sum of its lines and must fit 6 decimals. Balances are never stored: an invoice balance is its total minus applications; a payment has an unapplied remainder; a credit is REQUESTED until a real document recognises it, and only a RECOGNIZED credit has an available balance, reduced by applications and refunds. Applications are immutable and join documents of the same party, legal entity, currency and side; they never exceed either balance. A payment states its method (cash, transfer, card, cheque, other), for a card whether debit or credit, and may name the money account it lands in or leaves from; a PENDING payment is money announced and not confirmed: it carries no applications and settles nothing until it is confirmed. Card numbers and security codes are never accepted. A sales order collected at the register is settled only by that receipt, recorded once as one payment per payment component, so the collection is never counted twice and linking never brings money in again; the POS records are not changed. Credits and physical returns are independent: neither creates the other, and naming a variant or unit moves no inventory. Saving or issuing an invoice moves none either: the devices typed on a bill and the units chosen on a sales invoice are only what its lines carry, until the invoice is confirmed together with its receipt or its delivery (see those operations). A draft may be incomplete. An invoice is posted (issued, confirmed or recognised) only with every unit of every line of a serialized article identified and linked to it, exactly as many as the line bills, and it is never completed afterwards. How an article is tracked is read from its product, whatever the request says; a line that names a physical unit without its SKU is a line of a serialized article too (409 FULFILMENT_INCOMPLETE). Issuing alone therefore works for a bill whose purchase order already received the units its lines name, and for a sales invoice whose order reserved or delivered them, the sales of the register included: the invoice keeps those units from the instant it is issued, and nothing enters or leaves again. An invoice with no order behind it that bills a serialized article is not issued alone, whatever it carries and with or without a price list (409 FULFILMENT_REQUIRED): it is confirmed together with its receipt or its delivery. A line short of units is refused with 409 UNIT_COUNT_MISMATCH. Each place in `errors` says how many units the line bills (`required`) and how many are identified (`identified`): counts, never an identifier. Recognising revenue or expense by decision is refused the same way for an invoice that bills a serialized article. Quantity articles and services need no units and behave as before. A credit is financial unless a supplier credit states COST_CORRECTION and names the receipt lines it corrects: only then does recognising it change what those goods are worth, where they still are, and never by more than they cost. A stated money account is validated against the active accounts of the entity that fit the method (PAYMENT_ACCOUNT_INVALID). Cash refunded to a customer from the cash account of the tills names the open session it leaves (CASH_SESSION_REQUIRED): the refund lowers the expected cash of that session and posts one entry; cash from anywhere else names another cash account and touches no session. When the legal entity keeps books, issuing, paying, applying, recognising and refunding each post their entry in the same transaction or fail with ACCOUNTING_SETUP_REQUIRED, ACCOUNTING_PERIOD_CLOSED, ACCOUNTING_CURRENCY_UNSUPPORTED or ACCOUNTING_AMOUNT_PRECISION; voiding posts the mirror entry. An invoice never recognises revenue by itself: revenue is earned on delivery of its order, or by an explicit recognition when it has no order. Writes are idempotent and tenant scoped; state changes carry expectedVersion. Human workspace filters are combined with AND, applied before cursor pagination and tenant/warehouse access controls. Text matching is literal case-insensitive containment. productId includes all variants of the product, including archived variants; document filters never duplicate documents. Date and total bounds are inclusive.

Autenticación
SupabaseBearer · http bearer

Ejemplo

Los valores entre <> y {} son marcadores: sustitúyelos por los tuyos antes de ejecutarlo.

curl --request GET \
  --url 'https://api.marky.ec/v1/tenants/{tenantId}/purchases/bills' \
  --header 'Authorization: Bearer <SupabaseBearer>'

Parámetros

Nombre En Tipo Descripción
tenantIdobligatorio path stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
limit query integermín. 1máx. 100por defecto 50
cursor query stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
status query uno de "DRAFT", "ISSUED", "VOID"
partyId query stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
orderId query stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ Sales order (sales) or purchase order (purchases).
open query uno de "true" Issued invoices with a balance.
productId query stringformato uuid
number query stringlongitud máx. 64
dateFrom query stringformato date
dateTo query stringformato date
totalMin query stringpatrón ^[0-9]+(\.[0-9]{1,6})?$
totalMax query stringpatrón ^[0-9]+(\.[0-9]{1,6})?$
warehouseId query stringformato uuid

Respuestas

200 Success
application/json
InvoicePage
objectsin otras propiedades
  • itemsobligatorio
    array
    Cada elemento
    Invoice
    objectsin otras propiedades
    • idobligatorio
      stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • statusobligatorio
      uno de "DRAFT", "ISSUED", "VOID"
    • versionobligatorio
      integermín. 1
    • createdAtobligatorio
      stringformato date-time
    • updatedAtobligatorio
      stringformato date-time
    • numberobligatorio
      string
    • legalEntityIdobligatorio
      stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • customerId
      stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • supplierId
      stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • salesOrderId
      string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • purchaseOrderId
      string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • posReceiptId
      string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$

      Register receipt that collected the invoiced order, when there is one.

    • posReceiptLinked
      boolean
    • warehouseIdobligatorio
      string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • priceListId
      string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
    • currencyCodeobligatorio
      stringpatrón ^[A-Z]{3}$
    • issueDateobligatorio
      stringformato date

      Calendar day.

    • dueDateobligatorio
      string | nullformato date

      Calendar day in UTC, inclusive. Null means no expiry.

    • notesobligatorio
      string | nulllongitud máx. 2000
    • totalobligatorio
      stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

      Exact amount: at most 12 integer digits and 6 decimals. No rounding, tax or FX.

    • appliedobligatorio
      stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

      Exact amount: at most 12 integer digits and 6 decimals. No rounding, tax or FX.

    • balanceobligatorio
      stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

      Total minus applications. Zero when void.

    • settlementobligatorio
      uno de "UNPAID", "PARTIALLY_PAID", "PAID", null

      Derived for issued invoices; null otherwise.

    • fulfilment
      objectsin otras propiedades

      Only in the record of one invoice, not in listings: what became of the goods it bills.

      • kindobligatorio
        uno de "RECEIPT", "DELIVERY"
      • stateobligatorio
        uno de "NONE", "DRAFT", "PENDING", "PARTIAL", "DONE", "CANCELLED"

        NONE: the invoice moves nothing. DRAFT: devices typed or units chosen, nothing moved. PENDING: the goods have not arrived or left yet. PARTIAL: some have. DONE: all of them. CANCELLED: the order behind the invoice was cancelled.

      • orderStatusobligatorio
        string | null
      • unitsRequiredobligatorio
        integer
      • unitCountobligatorio
        integer
      • devicesTypedobligatorio
        integer
    • itemsobligatorio
      array
      Cada elemento
      objectsin otras propiedades
      • idobligatorio
        stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • positionobligatorio
        integermín. 1
      • descriptionobligatorio
        string
      • quantityobligatorio
        stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

        Exact amount: at most 12 integer digits and 6 decimals. No rounding, tax or FX.

      • unitPriceobligatorio
        stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

        Exact amount: at most 12 integer digits and 6 decimals. No rounding, tax or FX.

      • lineTotalobligatorio
        stringpatrón ^[0-9]+\.[0-9]{12}$

        Exact product of quantity and unit price with 12 decimals.

      • variantIdobligatorio
        string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • inventoryUnitIdobligatorio
        string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • listUnitPrice
        string | nullpatrón ^(0|[1-9][0-9]{0,11})\.[0-9]{6}$

        Reference: the list price the line was settled against. For a negotiated line it is a snapshot and does not follow the list. Null on an invoice line that has no list reference.

      • priceNegotiated
        boolean

        True when the agreed unit price is not the list price. Such a line keeps its price through confirmation, delivery, invoicing and collection.

      • discountPercent
        string | nullpatrón ^(100|[0-9]{1,2})\.[0-9]{4}$

        The discount the price was stated as, when it was stated as one.

      • discountAmount
        string | nullpatrón ^(0|[1-9][0-9]{0,11})\.[0-9]{6}$

        What one unit is discounted by: list price minus agreed price. Null when the agreed price is not below the list price.

      • priceReason
        string | nulllongitud máx. 500
      • priceOrigin
        string | nulluno de "QUOTATION", "SALES_ORDER", "SALES_INVOICE", null

        The document the price was negotiated in. A line carried to another document keeps it.

      • trackingMode
        uno de "SERIALIZED", "QUANTITY", "NONE", null

        How the article of the line is tracked; null when the line names none.

      • unitsRequired
        integer | null

        Units a serialized line bills; null for any other line.

      • unitCount
        integer

        Units the line carries: chosen, reserved, delivered or received.

      • devices
        array

        Devices typed on the draft of a direct purchase and not received yet. Not units.

        Cada elemento
        objectsin otras propiedades
        • serialNumber
          string | nullpatrón ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,99}$

          Stored in capitals.

        • imei1
          string | nullpatrón ^[0-9]{15}$

          15 digits with a valid check digit.

        • imei2
          string | nullpatrón ^[0-9]{15}$

          Second IMEI of the same phone: one unit, never two. Different from imei1.

        • condition
          string | nulluno de "NEW", "USED", "REFURBISHED", "OPEN_BOX", "AS_IS", null

          Condition the unit will be received with. Its SKU proposes it: left out, the one the SKU states is saved; where the SKU states none it must be given (409 UNIT_CONDITION_REQUIRED), because nothing is assumed to be new. A value other than the one the SKU states is refused (409 UNIT_CONDITION_MISMATCH). Read back: null only for a device saved before conditions were asked.

        • grade
          string | nulluno de "A", "B", "C", null

          Grade of the unit, optional. The SKU proposes its own; a value other than the one the SKU states is refused (409 UNIT_CONDITION_MISMATCH).

      • units
        array | null

        The units of the line. Null for a reader without inventory.read and inventory.serials.read: the counts are still given, the identifiers are not.

        Cada elemento
        objectsin otras propiedades
        • idobligatorio
          stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
        • serialNumberobligatorio
          string | null
        • imei1obligatorio
          string | null
        • imei2obligatorio
          string | null
        • conditionobligatorio
          uno de "NEW", "USED", "REFURBISHED", "OPEN_BOX", "AS_IS"
        • gradeobligatorio
          string | nulluno de "A", "B", "C", null
        • statusobligatorio
          uno de "AVAILABLE", "RESERVED", "SOLD", "IN_TRANSIT", "DAMAGED", "RETURNED", "RMA", "LOST", "QUARANTINED"
        • stateobligatorio
          uno de "SELECTED", "RESERVED", "DELIVERED", "RECEIVED", "RELEASED"

          SELECTED: chosen on a draft, nothing reserved. RESERVED: held by the order of the invoice, still in the warehouse. DELIVERED: left with the sale. RECEIVED: came in with the purchase. RELEASED: the invoice was issued with the unit and its order let it go afterwards, undelivered; the invoice keeps naming it.

        • eligible
          boolean

          For SELECTED: whether the unit could still leave from the invoice warehouse.

    • applicationsobligatorio
      array
      Cada elemento
      objectsin otras propiedades
      • idobligatorio
        stringformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • amountobligatorio
        stringpatrón ^(0|[1-9][0-9]{0,11})(\.[0-9]{1,6})?$

        Exact amount: at most 12 integer digits and 6 decimals. No rounding, tax or FX.

      • paymentIdobligatorio
        string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • creditIdobligatorio
        string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
      • sourceNumberobligatorio
        string
      • fromPosReceiptobligatorio
        boolean
      • createdAtobligatorio
        stringformato date-time
  • nextCursorobligatorio
    string | nullformato uuidpatrón ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
400 Invalid request/idempotency key
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

401 Missing/invalid Supabase JWT
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

403 Wrong identity family or permissions
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

404 Unknown tenant resource
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

409 Version, state, insufficient balance, mismatched party/entity/currency, duplicate number, register receipt rule, or a specific block: PAYMENT_ACCOUNT_INVALID, CASH_SESSION_REQUIRED, CASH_INSUFFICIENT, COST_SOURCE_NOT_VALUED, COST_ADJUSTMENT_EXCEEDS_COST
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

429 Rate/quota exceeded
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.

503 Runtime/auth/governance unavailable
application/problem+json
ProblemDetails
objectsin otras propiedades
  • typeobligatorio
    valor fijo "about:blank"
  • statusobligatorio
    integer
  • codeobligatorio
    string
  • titleobligatorio
    string
  • detailobligatorio
    string
  • requestIdobligatorio
    stringformato uuid
  • errors
    arrayelementos máx. 200

    Where each problem is, for the codes that can say it: a JSON pointer into the request or the record (`/items/0/devices/1/imei1`) and the reason. A line of a serialized article that is short of units also says how many it bills and how many are identified. Never a value typed by the user, and never an identifier of a unit.

    Cada elemento
    objectsin otras propiedades
    • pointerobligatorio
      string
    • codeobligatorio
      string
    • required
      integermín. 0máx. 1000

      For a line short of units (UNITS_DIFFER_FROM_QUANTITY, RECEIPT_REQUIRED, DELIVERY_REQUIRED): how many units the line bills.

    • identified
      integermín. 0máx. 1000

      For the same line: how many units are identified and linked to it. Given to every reader of the document; no IMEI or serial number is.