API referenceGraphQL · v1

Public GraphQL API · Local schema preview (snapshot 2026-11-02)

Connection details

POST https://beta-erp-api.chameleoon.sk/api/v1/graphql

Authorization: Bearer <API_KEY>

Chameleoon MAX

Orders

salesOrder

Description

One sales order, by our id or by the shop's (source and externalId). Null when there is no such order or the key may not see it.

Arguments
ref SalesOrderRefInput! Required
Input fields 3

Names one order: either id, or source together with externalId -- never both.

id UUID Optional

Our id of the order.

source String Optional

The code of the external source that placed the order.

externalId String Optional

The source's own id of the order.

Returns

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

Fields 2

One item and its cursor.

cursor String! Non-null

Where this item sits; pass as after (with first) or before (with last) to this order's items.

node SalesOrderItem! Non-null

One goods line of an order.

View all fields of SalesOrderItem! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

Fields 24

One goods line of an order.

id UUID! Non-null

Our id.

externalId String Nullable

The source's id of the line.

productVariantId UUID Nullable

Our id of the product variant. Null while the line is not linked to one.

productVariant ProductVariant Nullable

The product variant the line is linked to; null while it is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.

One sellable variant of a product: what a document line moves. Needs item.read.

View all fields of ProductVariant →
product Product Nullable

The variant's parent product; null while the line is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.

A product: the parent of its variants. Needs item.read.

View all fields of Product →
sku String Nullable

The SKU as the shop sent it -- or, for a line whose EAN several products carry and no sku was sent, that EAN.

name String Nullable

The name as the customer saw it.

variantName String Nullable

The variant's name as the customer saw it.

quantity Decimal! Non-null

How many, in unit.

cancelledQuantity Decimal! Non-null

How many were cancelled, in unit. quantity less this is what the order still asks for.

unit String Nullable

The unit code. Null: the product's base unit.

unitFactor Decimal! Non-null

The order line's snapshotted number of base units per unit. Use this, not today's catalogue factor, to compare line quantities with stock cards.

unitPrice Decimal Nullable

The final price of one unit, after the line's discount. Null while unpriced.

originalUnitPrice Decimal Nullable

The price of one unit before the discount. Null when there is none.

vatPercent Decimal Nullable

The VAT rate in percent.

pricesIncludeVat Boolean Nullable

Whether unitPrice includes VAT. A line may differ from the order's pricesIncludeVat. Null while unpriced.

lineTotal Decimal Nullable

The line's total on its live quantity, net or gross as the order's pricesIncludeVat says. Null while unpriced.

attributes ItemAttributeConnection Nullable

What the customer chose about the line, in the order it was sent: a connection, paged with first/after or last/before (at most 250). Empty once the customer is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an item's attributes.

View all fields of ItemAttributeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
reserved Decimal Nullable

How much stock is reserved for it now, in unit. Needs reservation.read: without it null with FORBIDDEN_ROLE.

picked Decimal Nullable

How much has been picked for live consignments but not shipped, in unit. Picking consumes the reservation. Needs reservation.read: without it null with FORBIDDEN_ROLE.

outstanding Decimal! Non-null

How much is still to ship, in unit: ordered less shipped and cancelled.

warehouses SalesOrderItemWarehouseConnection Nullable

The line warehouse by warehouse, by warehouse id: what each warehouse's consignments hold (reserved, picked) and have shipped, in unit. Sums to reserved and picked. Warehouses outside the key's scope are left out. Paged 1..250. Needs reservation.read: without it null with FORBIDDEN_ROLE at its path.

View all fields of SalesOrderItemWarehouseConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
linked Boolean! Non-null

Whether the line names one of our products and can be reserved and shipped.

externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this item's references and are refused anywhere else. externalId above is the oldest of them under the order's source. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

Fields 2

One charge and its cursor.

cursor String! Non-null

Where this charge sits; pass as after (with first) or before (with last) to this order's charges.

node SalesOrderCharge! Non-null

Something on an order that is not goods.

View all fields of SalesOrderCharge! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Fields 7

Something on an order that is not goods.

id UUID! Non-null

Our id.

kind ChargeKind! Non-null

What it is for.

Accepted values 5
DELIVERY

Delivery.

PAYMENT

A payment fee, e.g. for cash on delivery.

DISCOUNT

A discount, sent positive and subtracted. One row per VAT rate.

ROUNDING

The residue between the shop's total and ours, at most 1.00 either way.

OTHER

Any other surcharge: insurance, gift wrap.

code String Nullable

The shop's code of the charge.

name String! Non-null

Its name.

amount Decimal! Non-null

The whole amount, as sent. Positive for every kind but ROUNDING, whose residue may be negative; a DISCOUNT is positive and subtracted.

vatPercent Decimal! Non-null

The VAT rate in percent.

pricesIncludeVat Boolean! Non-null

Whether amount includes VAT. A charge may differ from the order's pricesIncludeVat.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

Fields 2

One exception and its cursor.

cursor String! Non-null

Where this exception sits; pass as after (with first) or before (with last) to this order's exceptions.

node RecordException! Non-null

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of RecordException! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Fields 9

Something a record was created with that needs a person: what it is, where, and how it was settled.

code String! Non-null

A fixed code, e.g. PAYMENT_METHOD_UNKNOWN. Read it as a string: more may be added.

field String Nullable

The input it concerns, e.g. items[2].unit. Null when none.

message String! Non-null

What it is, for a person.

data JSON Nullable

Machine detail as a JSON object, e.g. {"expected": "120.50", "actual": "120.49"}.

lineId UUID Nullable

Our id of the order line it is on. Null when it is on the order itself.

origin String! Non-null

What raised it: API, CSV_IMPORT or SYSTEM.

createdAt Time! Non-null

When it was raised.

resolvedAt Time Nullable

When it was settled. Null while it is open.

resolution String Nullable

How it was settled: RESOLVED_BY_USER, RESOLVED_BY_SYSTEM or UNBLOCKED. Null while it is open.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

Fields 2

One reference and its cursor.

cursor String! Non-null

Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs.

node ExternalRef! Non-null

An id another system knows a record by.

View all fields of ExternalRef! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

Fields 4

An id another system knows a record by.

source String! Non-null

The external source's code, e.g. SHOP -- the same string as SalesOrder.source.

externalId String! Non-null

The record's id in that system.

parentExternalId String Nullable

The parent's id in that system, when the id is unique only under it.

externalNumber String Nullable

The number that system shows for the record, when one was recorded.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

Fields 2

One document and its cursor.

cursor String! Non-null
nodes [Document!]! Non-null

The same documents without cursors.

Fields 12
id UUID! Non-null
kind DocumentKind! Non-null
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
title String Nullable
externalId String Nullable

The issuing system's own id of the document.

externalNumber String Nullable

The document's number in the issuing system.

createdAt Time! Non-null
updatedAt Time! Non-null

When its last version was added.

versionCount Int! Non-null

How many versions it has; the current one is the highest.

file DocumentFile! Non-null

The current version's file.

View all fields of DocumentFile! →
downloadUrl String Nullable

Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.

versions DocumentVersionConnection Nullable

Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.

View all fields of DocumentVersionConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
salesOrder SalesOrder Nullable

The order it is kept with. Null when the order is no longer in the key's sight.

A sales order.

View all fields of SalesOrder →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

edges [InvoiceEdge!]! Non-null
Fields 2
cursor String! Non-null
node Invoice! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of Invoice! →
nodes [Invoice!]! Non-null
Fields 71

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
buyer InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
delivery InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

View all fields of InvoiceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

View all fields of InvoiceVatRowConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
View all fields of InvoiceSettlementConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
View all fields of InvoiceLinkConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

Fields 2

One shipment and its cursor.

cursor String! Non-null

Where this shipment sits; pass as after (with first) or before (with last) to this order's shipments.

node Shipment! Non-null

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of Shipment! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

Fields 11

A carrier shipment of a consignment, as the carrier accepted it.

id UUID! Non-null
number String! Non-null

Its own number, e.g. ZAS-2026-00001.

status ShipmentStatus! Non-null
Accepted values 2
CREATED

The carrier accepted it; its shipping numbers are answered at this moment.

CANCELLED

Cancelled before the carrier took it.

numbers [String!] Nullable

The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased.

trackingStatus String! Non-null

The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added.

carrier CarrierProfile! Non-null

The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names.

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

View all fields of CarrierProfile! →
salesOrderId UUID Nullable

The sales order it ships. A bare id, which may name an order the key cannot open.

fulfilmentId UUID Nullable

The consignment it ships. A bare id.

version Int Nullable

Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none.

createdAt Time! Non-null
changedAt Time Nullable

When its last event was published; null exactly when version is.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Query
query salesOrder($ref: SalesOrderRefInput!) {
  salesOrder(ref: $ref) {
    invoices(first: 10) {
      totalCount
    }
    id
    number
    status
    legalEntityId
    source
    externalId
    externalNumber
    sourceUrl
    orderedAt
    confirmedAt
    fulfilmentStatus
    paymentStatus
    currencyCode
    pricesIncludeVat
    totalNet
    totalVat
    totalGross
    paidAmount
    discountPercent
    invoiceNumber
    invoiceExternalId
    customerId
    customer {
      id
      code
      name
      registrationId
      taxId
      vatId
    }
    billingAddress {
      id
      recipient
      street
      street2
      city
      postalCode
    }
    deliveryAddress {
      id
      recipient
      street
      street2
      city
      postalCode
    }
    pickupPoint {
      code
      name
    }
    sourceDeliveryMethod {
      code
      name
    }
    carrier {
      code
      profile
      name
      service
    }
    paymentMethod
    sourcePaymentMethod {
      code
      name
    }
    contactEmail
    contactPhone
    preferredWarehouseId
    preferredWarehouse {
      id
      code
      name
      archivedAt
    }
    note
    items(first: 10) {
      totalCount
    }
    charges(first: 10) {
      totalCount
    }
    blocked {
      reason
      note
      at
    }
    exceptions(first: 10) {
      totalCount
    }
    externalRefs(first: 10) {
      totalCount
    }
    documents(first: 10) {
      totalCount
    }
    changedAt
    shipments(first: 10) {
      totalCount
    }
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "salesOrder": {
      "invoices": {"totalCount": 1},
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "status": "DRAFT",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "source": "example",
      "externalId": "example",
      "externalNumber": "example",
      "sourceUrl": "example",
      "orderedAt": "2026-01-01T00:00:00Z",
      "confirmedAt": "2026-01-01T00:00:00Z",
      "fulfilmentStatus": "UNFULFILLED",
      "paymentStatus": "UNPAID",
      "currencyCode": "example",
      "pricesIncludeVat": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "paidAmount": "10.00",
      "discountPercent": "10.00",
      "invoiceNumber": "example",
      "invoiceExternalId": "example",
      "customerId": "00000000-0000-4000-8000-000000000001",
      "customer": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "registrationId": "example",
        "taxId": "example",
        "vatId": "example"
      },
      "billingAddress": {
        "id": "00000000-0000-4000-8000-000000000001",
        "recipient": "example",
        "street": "example",
        "street2": "example",
        "city": "example",
        "postalCode": "example"
      },
      "deliveryAddress": {
        "id": "00000000-0000-4000-8000-000000000001",
        "recipient": "example",
        "street": "example",
        "street2": "example",
        "city": "example",
        "postalCode": "example"
      },
      "pickupPoint": {"code": "example", "name": "example"},
      "sourceDeliveryMethod": {"code": "example", "name": "example"},
      "carrier": {
        "code": "example",
        "profile": "example",
        "name": "example",
        "service": "example"
      },
      "paymentMethod": "CARD",
      "sourcePaymentMethod": {"code": "example", "name": "example"},
      "contactEmail": "example",
      "contactPhone": "example",
      "preferredWarehouseId": "00000000-0000-4000-8000-000000000001",
      "preferredWarehouse": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "archivedAt": "2026-01-01T00:00:00Z"
      },
      "note": "example",
      "items": {"totalCount": 1},
      "charges": {"totalCount": 1},
      "blocked": {
        "reason": "example",
        "note": "example",
        "at": "2026-01-01T00:00:00Z"
      },
      "exceptions": {"totalCount": 1},
      "externalRefs": {"totalCount": 1},
      "documents": {"totalCount": 1},
      "changedAt": "2026-01-01T00:00:00Z",
      "shipments": {"totalCount": 1}
    }
  }
}

salesOrders

Description

Orders, filtered, newest first by orderedAt (then number). For browsing and reconciling -- "every order from SHOP since yesterday", "every order waiting for review". There is no total count. Orders outside the key's legal-entity scope are left out, and so are drafts: an order the API creates is never one, and a draft can be discarded without a trace. Needs order.read and integration.read.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one order's selection.

Arguments
filter SalesOrderFilter Optional
Input fields 10

Which orders salesOrders returns. Every field narrows; an omitted one matches all.

source String Optional

Orders placed through this external source, by its code, matched ignoring case and surrounding spaces.

statuses [SalesOrderStatus!] Optional

Orders in any of these states.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

fulfilmentStatuses [SalesOrderFulfilmentStatus!] Optional

Orders with any of these fulfilment states.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatuses [SalesOrderPaymentStatus!] Optional

Orders with any of these payment states.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

blocked Boolean Optional

True: only blocked orders. False: only orders nothing stops.

hasOpenExceptions Boolean Optional

True: orders with an open exception -- the review queue. False: orders without one.

hasUnreservedItems Boolean Optional

True: at least one linked goods line has live quantity not shipped and not held on a live consignment (reserved or picked). False: no such line. Unlinked lines need catalogue repair and are excluded. Needs reservation.read and an unrestricted warehouse scope so hidden warehouses cannot make an order appear short.

unreservedInWarehouseId UUID Optional

Orders short IN THIS WAREHOUSE: a linked goods line whose open quantity is more than what has shipped (from any warehouse) plus what this warehouse's live consignments hold (reserved or picked). Goods held in another warehouse do not count as covered here -- the question a workflow asks before moving goods into the warehouse orders are picked in. Needs reservation.read and the warehouse in the key's scope (FORBIDDEN_SCOPE otherwise). If one of the tenant's warehouses is never picked from, give the orders preferredWarehouseId: allocation then reserves in that warehouse only.

orderedFrom Time Optional

Orders placed at or after this instant.

orderedTo Time Optional

Orders placed at or before this instant.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of salesOrders.

edges [SalesOrderEdge!]! Non-null

The orders with their cursors, newest first by orderedAt.

Fields 2

One order and its cursor.

cursor String! Non-null

Where this order sits; pass as after (with first) or before (with last).

node SalesOrder! Non-null
Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

An address an order was sent to.

View all fields of SalesOrderAddress →
deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

An address an order was sent to.

View all fields of SalesOrderAddress →
pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

A carrier's collection point.

View all fields of PickupPoint →
sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

View all fields of CarrierProfile →
paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's items.

View all fields of SalesOrderItemConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's charges.

View all fields of SalesOrderChargeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

What stops an order.

View all fields of SalesOrderBlock →
exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's exceptions.

View all fields of RecordExceptionConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

View all fields of DocumentConnection →
Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

The invoices linked to one order.

View all fields of SalesOrderInvoiceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

One page of an order's shipments.

View all fields of ShipmentConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [SalesOrder!]! Non-null

The same orders without cursors.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query salesOrders($first: Int) {
  salesOrders(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "salesOrders": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "status": "DRAFT",
          "legalEntityId": "00000000-0000-4000-8000-000000000001",
          "source": "example",
          "externalId": "example"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

cancelSalesOrder

Description

Cancels the order and releases its stock; consignments still being prepared are called off with it. Repeats change nothing (changed: false). Payments are left as they are: a refund is recorded when the money moves.

CONFLICT once the warehouse has dispatched any of it, or when the order was merged into another or is still a draft -- a person handles those in the ERP. NOT_FOUND when there is no such order or the key may not see it.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the order was cancelled, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
ref SalesOrderRefInput! Required
Input fields 3

Names one order: either id, or source together with externalId -- never both.

id UUID Optional

Our id of the order.

source String Optional

The code of the external source that placed the order.

externalId String Optional

The source's own id of the order.

Returns

What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.

salesOrder SalesOrder! Non-null

The order, as it now stands.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the order already was as asked: the call was a repeat and changed nothing.

Example

Mutation
mutation cancelSalesOrder($ref: SalesOrderRefInput!) {
  cancelSalesOrder(ref: $ref) {
    salesOrder {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
    changed
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "cancelSalesOrder": {
      "salesOrder": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "legalEntityId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "externalId": "example"
      },
      "changed": true
    }
  }
}

createSalesOrder

Description

Creates a CONFIRMED order in one transaction: the customer and their addresses are found or added, every item is resolved against the catalogue, the shop's prices are kept as sent, stock is reserved and what was paid is recorded. Either all of it happens or none of it.

Repeating it with the same source and externalId changes nothing and returns the existing order with created: false -- with the warning DUPLICATE_WITH_DIFFERENT_CONTENT when the repeat differs from the first call. Changes to a placed order are their own operations.

orderedAt is the shop's time; the order's number and confirmedAt are this system's clock.

Every input mistake that leaves nothing to store comes back at once, each a VALIDATION error naming its field, and nothing is created.

An order that can be stored but needs a person is created all the same: CONFIRMED, stock reserved, and blocked with the reason NEEDS_REVIEW until someone in the ERP looks at it. What needs the look is listed in the order's exceptions, and the same codes come back as warnings. These five block the order: PAYMENT_METHOD_UNKNOWN (paymentMethod not sent; BANK_TRANSFER is stored in its place), TOTAL_MISMATCH (expectedTotal differs from ours; our sums are kept), LINE_TOTAL_MISMATCH (an item's lineTotal differs from ours), UNIT_UNKNOWN (an item's unit is not one of its product's; the base unit is used) and PREFERRED_WAREHOUSE_IGNORED (preferredWarehouseId cannot be used; the order has no preference). PRODUCT_NOT_FOUND, PRODUCT_ARCHIVED, PRODUCT_AMBIGUOUS (several products carry the EAN; the line is kept unlinked for a person) and UNIT_NOT_VERIFIED are recorded as exceptions too, but do not block: an unlinked line is linked in the ERP. PRODUCT_AMBIGUOUS names the products' SKUs only in this call's warning, and only to a caller allowed to read the catalogue; the stored exception carries the EAN and how many products carry it (data ean, count), and a person finds the products by searching the EAN.

The other warnings are fixed codes as well: DUPLICATE_WITH_DIFFERENT_CONTENT, CUSTOMER_MATCHED_BY_REGISTRATION_ID, CUSTOMER_MATCHED_BY_EMAIL, CUSTOMER_MATCHED_SEVERAL, ITEM_CONVERTED_TO_CHARGE, ZERO_PRICE, ORIGINAL_PRICE_INCONSISTENT, PAYMENT_REFERENCE_TAKEN.

When carrier names a syntactically valid pair which is absent from a fresh authoritative Chameleoon catalogue, the order is still created CONFIRMED, blocked NEEDS_REVIEW, and carries the blocking exception and creation warning CARRIER_PROFILE_UNKNOWN. When the catalogue cannot be verified, CARRIER_PROFILE_UNVERIFIED is used instead. In both cases carrier reads null until a person repairs the order. Warnings describe this creation call only: an idempotent repeat returns created: false and does not replay them; read SalesOrder.exceptions for the durable problem.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the order was placed, and created and warnings are in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
input CreateSalesOrderInput! Required
Input fields 22

A shop order, as the shop knows it.

source String! Required

The code of an external source set up in this organisation. The API never creates one.

externalId String! Required

The shop's id of the order. With source, the key that makes a repeat safe.

externalNumber String Optional

The order number the customer sees.

sourceUrl String Optional

A link to the order in the shop's administration.

legalEntity String Optional

The code of the legal entity that sells. Omitted: the organisation's default.

orderedAt Time! Required

When the customer placed the order, by the shop's clock. Not before 2000, at most a day ahead.

currencyCode String! Required

ISO 4217 code of the order's currency, e.g. "EUR". Never converted.

pricesIncludeVat Boolean! Required

Whether every unitPrice and charge amount includes VAT. ROUNDING always does.

expectedTotal Decimal Optional

The shop's total including VAT. When our total differs by a cent or more, the order is created with our sums and blocked for review, with the exception TOTAL_MISMATCH. Send a residue as a ROUNDING charge.

customer CustomerInput! Required

Who ordered.

Input fields 8

The customer: either id alone, or what the shop knows of them. A customer named by the shop is matched by externalId, then registration id, then e-mail, and created when nothing matches. An existing customer's details are never overwritten.

id UUID Optional

Our id of the customer. Nothing else may be sent with it.

externalId String Optional

The shop's id of the customer.

name String Optional

The person's name.

companyName String Optional

The company's name; when sent, it names a new customer.

registrationId String Optional

The company registration number (IČO).

vatId String Optional

The VAT id (IČ DPH / DIČ).

email String Optional

The e-mail, also kept as the order's contact.

phone String Optional

The phone, also kept as the order's contact.

billingAddress AddressInput! Required

The billing address.

Input fields 9

A postal address.

recipient String Optional

Who receives it, when not the customer.

street String! Required

Street and number.

street2 String Optional

A second address line.

city String! Required

City.

postalCode String! Required

Postal code.

region String Optional

Region or state.

countryCode String! Required

ISO 3166-1 alpha-2 country code.

phone String Optional

The phone the carrier calls. Kept only on an address this order adds.

email String Optional

The e-mail delivery notices go to. Kept only on an address this order adds.

deliveryAddress AddressInput Optional

Where the goods go. Omitted: the billing address, unless a pickupPoint is given.

Input fields 9

A postal address.

recipient String Optional

Who receives it, when not the customer.

street String! Required

Street and number.

street2 String Optional

A second address line.

city String! Required

City.

postalCode String! Required

Postal code.

region String Optional

Region or state.

countryCode String! Required

ISO 3166-1 alpha-2 country code.

phone String Optional

The phone the carrier calls. Kept only on an address this order adds.

email String Optional

The e-mail delivery notices go to. Kept only on an address this order adds.

pickupPoint PickupPointInput Optional

The carrier's collection point the customer chose. Never added to the address book.

Input fields 2

A carrier's collection point.

code String! Required

The carrier's code of the point.

name String! Required

Its name, as the customer saw it.

deliveryMethod MethodInput Optional

The delivery method as the shop names it.

Input fields 2

A delivery or payment method in the shop's own words.

code String Optional

The shop's code of the method.

name String! Required

Its name, as the customer saw it.

carrier CarrierProfileInput Optional

The operational Chameleoon carrier and profile. Both are identifiers; names are derived from the synchronized catalogue. Omitted means no Chameleoon route was selected. Unknown or unverifiable pairs do not become normalized carrier data; see createSalesOrder warnings.

Input fields 2

An atomic operational carrier choice from the synchronized Chameleoon catalogue.

code String! Required

The Chameleoon courier id, e.g. SP.

profile String! Required

The courier's profile id, e.g. na_adresu.

paymentMethod PaymentMethod Optional

How the customer intends to pay. Omitted -- the shop's method is not mapped to one of ours: BANK_TRANSFER is stored as a placeholder and the order is blocked for review, with the exception PAYMENT_METHOD_UNKNOWN. Send paymentMethodName so the person can see what it was.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

paymentMethodName MethodInput Optional

The payment method as the shop names it.

Input fields 2

A delivery or payment method in the shop's own words.

code String Optional

The shop's code of the method.

name String! Required

Its name, as the customer saw it.

preferredWarehouseId UUID Optional

Our id of the warehouse to reserve from. Omitted: any of the legal entity's warehouses. One that is unknown, archived or another company's is ignored and the order is blocked for review, with the exception PREFERRED_WAREHOUSE_IGNORED.

note String Optional

What the customer wrote with the order.

The goods. At least one.

Input fields 15

One goods line of a shop order.

externalId String Optional

The shop's id of the line, unique within the order.

kind SalesOrderItemKind Optional

What the line is. A SET is one priced line; its components are never sent.

Default: PRODUCT

Accepted values 3
PRODUCT

A product.

SET

A set, as one priced line.

GIFT

A gift, which may be priced 0 without a warning.

product ProductRefInput Optional

The product, by exactly one key. Not found: the line is kept unlinked under its sku, with the warning PRODUCT_NOT_FOUND. Ambiguous (an EAN several products carry): kept unlinked under its sku, or under the EAN when no sku was sent, warning PRODUCT_AMBIGUOUS. A service becomes an OTHER charge.

A product, by exactly one key.

View all fields of ProductRefInput →
sku String Optional

The shop's SKU. Required when the product is not found -- except for an EAN several products carry, where the line is kept under the EAN when no sku was sent.

name String! Required

The product's name as the customer saw it.

variantName String Optional

The variant's name as the customer saw it, e.g. "black, M".

quantity Decimal! Required

How many, in unit. More than zero, at most three decimals.

unit String Optional

A unit code of the product. Omitted: its base unit, or the unit of the EAN sent. One the product does not have: its base unit, and the order is blocked for review with the exception UNIT_UNKNOWN.

unitPrice Decimal! Required

The final price of one unit, after this line's own discount. At most four decimals.

originalUnitPrice Decimal Optional

The price of one unit before the discount; the difference is kept as the discount.

discountPercent Decimal Optional

The discount as the shop showed it. Informative only.

vatPercent Decimal! Required

The VAT rate in percent, e.g. 23. At most two decimals.

lineTotal Decimal Optional

The shop's total of the line, on the order's basis: gross when pricesIncludeVat, net otherwise. A cent or more from ours: the order is created with ours and blocked for review, with the exception LINE_TOTAL_MISMATCH on the line.

attributes [ItemAttributeInput!] Optional

What the customer chose about the line: an engraving, a colour.

One choice the customer made about a line.

View all fields of [ItemAttributeInput!] →
note String Optional

A note on the line.

charges [SalesOrderChargeInput!] Optional

Delivery, payment fees, discounts and rounding -- everything that is not goods.

Input fields 5

Anything on the order that is not goods.

kind ChargeKind! Required

What it is for.

Accepted values 5
DELIVERY

Delivery.

PAYMENT

A payment fee, e.g. for cash on delivery.

DISCOUNT

A discount, sent positive and subtracted. One row per VAT rate.

ROUNDING

The residue between the shop's total and ours, at most 1.00 either way.

OTHER

Any other surcharge: insurance, gift wrap.

code String Optional

The shop's code of the charge.

name String! Required

Its name as the customer saw it.

amount Decimal! Required

The whole amount, net or gross as pricesIncludeVat says (ROUNDING: always gross). Never negative, except ROUNDING, which is at most 1.00 either way. A DISCOUNT is sent positive.

vatPercent Decimal! Required

The VAT rate in percent. ROUNDING: 0.

paid SalesOrderPaidInput Optional

Present: the order is paid in full. Absent: not (yet) paid.

Input fields 2

The order is paid in full.

paidAt Time Optional

When the money arrived. Omitted: now.

reference String Optional

The gateway's or bank's id of the payment. One already used by another order is skipped with a warning by createSalesOrder, and is a CONFLICT for markSalesOrderPaid.

Returns

What createSalesOrder did.

salesOrder SalesOrder! Non-null

The order, as it now stands.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
created Boolean! Non-null

False when the order had already been placed: the call was a repeat and changed nothing.

warnings [ApiWarning!]! Non-null

What happened that did not stop the order.

Fields 3

Something the call did that the caller should know about, though it did not fail.

code String! Non-null

A fixed code, e.g. PRODUCT_NOT_FOUND.

message String! Non-null

What happened, for a person.

field String Nullable

The input it concerns, e.g. items[2].product. Null when none.

Example

Mutation
mutation createSalesOrder($input: CreateSalesOrderInput!) {
  createSalesOrder(input: $input) {
    salesOrder {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
    created
    warnings {
      code
      message
      field
    }
  }
}
Variables
{
  "input": {
    "source": "example",
    "externalId": "example",
    "orderedAt": "2026-01-01T00:00:00Z",
    "currencyCode": "example",
    "pricesIncludeVat": true,
    "customer": {"id": "00000000-0000-4000-8000-000000000001"},
    "billingAddress": {
      "street": "example",
      "city": "example",
      "postalCode": "example",
      "countryCode": "example"
    },
    "items": [
      {
        "name": "example",
        "quantity": "10.00",
        "unitPrice": "10.00",
        "vatPercent": "10.00"
      }
    ]
  }
}
Response
{
  "data": {
    "createSalesOrder": {
      "salesOrder": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "legalEntityId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "externalId": "example"
      },
      "created": true,
      "warnings": [
        {"code": "example", "message": "example", "field": "example"}
      ]
    }
  }
}

markSalesOrderPaid

Description

Marks the order paid in full: one settled payment for what is still owed, in the order's payment method. When the ERP has changed the order since, its total is the truth. Repeats change nothing (changed: false), as does a reference already settled as a payment on this order.

CONFLICT when the order is cancelled, merged or a draft; when a pending or authorized payment is recorded on it; when the reference is on this order under another status (a failed or voided payment, a refund) -- a person resolves those in the ERP; and when the reference belongs to another order, which the shop fixes by sending the right one. NOT_FOUND when there is no such order or the key may not see it.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the payment was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
ref SalesOrderRefInput! Required
Input fields 3

Names one order: either id, or source together with externalId -- never both.

id UUID Optional

Our id of the order.

source String Optional

The code of the external source that placed the order.

externalId String Optional

The source's own id of the order.

paid SalesOrderPaidInput Optional
Input fields 2

The order is paid in full.

paidAt Time Optional

When the money arrived. Omitted: now.

reference String Optional

The gateway's or bank's id of the payment. One already used by another order is skipped with a warning by createSalesOrder, and is a CONFLICT for markSalesOrderPaid.

Returns

What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.

salesOrder SalesOrder! Non-null

The order, as it now stands.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the order already was as asked: the call was a repeat and changed nothing.

Example

Mutation
mutation markSalesOrderPaid($ref: SalesOrderRefInput!) {
  markSalesOrderPaid(ref: $ref) {
    salesOrder {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
    changed
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "markSalesOrderPaid": {
      "salesOrder": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "legalEntityId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "externalId": "example"
      },
      "changed": true
    }
  }
}

setSalesOrderInvoice

Description

Records the invoice issued for this order in another system. Open on a confirmed or completed order. An omitted field is kept; null or blank clears it. Answers changed: false when nothing differs -- checked before expectedExternalId, so a retry after a lost answer is not a conflict.

Needs order.write. The history of the order records every change. A change of invoiceNumber is also a transition of the order's events; invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition. The invoice's file is an INVOICE document attached to the order (attachDocument), read from documents -- its externalNumber is the invoice number, its downloadUrl the PDF.

CONFLICT with extensions.reason ORDER_STATUS when the order is a draft, cancelled or merged (judged first), and INVOICE_CHANGED when the order's invoice is not the expected one -- read the order again; nothing is written. VALIDATION (field invoice.number or invoice.externalId) for a number over 100 or an external id over 200 characters. NOT_FOUND when there is no such order or the key may not see it.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the invoice was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
ref SalesOrderRefInput! Required
Input fields 3

Names one order: either id, or source together with externalId -- never both.

id UUID Optional

Our id of the order.

source String Optional

The code of the external source that placed the order.

externalId String Optional

The source's own id of the order.

invoice SalesOrderInvoiceInput! Required
Input fields 3

The invoice issued for an order in another system. An omitted field is kept; null or blank clears it.

number String Optional

The invoice's number, at most 100 characters.

externalId String Optional

That system's own id of the invoice, at most 200 characters.

expectedExternalId String Optional

Compare-and-set. A value: the write happens only if the order's invoiceExternalId equals it. Null (or blank): only if the order has no invoice at all (number and external id both empty). Otherwise CONFLICT with extensions.reason INVOICE_CHANGED. Omitted: no check.

Returns

What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.

salesOrder SalesOrder! Non-null

The order, as it now stands.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the order already was as asked: the call was a repeat and changed nothing.

Example

Mutation
mutation setSalesOrderInvoice($ref: SalesOrderRefInput!, $invoice: SalesOrderInvoiceInput!) {
  setSalesOrderInvoice(ref: $ref, invoice: $invoice) {
    salesOrder {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
    changed
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "invoice": {}}
Response
{
  "data": {
    "setSalesOrderInvoice": {
      "salesOrder": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "legalEntityId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "externalId": "example"
      },
      "changed": true
    }
  }
}

Receipts

receiptAdvice

Description

One receipt advice, or null if absent or outside this key's scope. Needs integration.read and advice.read.

Arguments
id UUID! Required
Returns
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

Fields 4
nodes [ReceiptAdviceLine!]! Non-null
Fields 20
id UUID! Non-null
lineNo Int! Non-null
variantId UUID Nullable

The product variant; null only on a DRAFT line the ERP has not matched yet.

supplierSku String Nullable

The supplier's own code of the item.

quantity Decimal! Non-null

The quantity as announced, in unit.

unit String! Non-null
unitFactor Decimal! Non-null

How many base units one unit held when the line was written.

baseQuantity Decimal! Non-null
unitPrice Decimal Nullable
vatPercent Decimal Nullable
expectedAt Time Nullable
batchCode String Nullable
expiresAt Time Nullable
serialNumber String Nullable
settlement ReceiptAdviceLineSettlement Nullable

What a person decided about the line's difference; null while nothing is decided.

Accepted values 5
SHORT_ACCEPTED

Less arrived, and it is accepted.

OVER_ACCEPTED

More arrived, and it is kept.

SHORT_CLAIMED

Less arrived, and it is claimed from the supplier.

RETURNED

It arrived and went back.

CANCELLED_REMAINDER

The rest is not coming.

received Decimal! Non-null

What arrived on open and completed receipts, in base units. Read only when selected.

remaining Decimal! Non-null

What is still announced, in base units: baseQuantity less received, never below 0.

inProgress Decimal! Non-null

What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received.

receiptStatus ReceiptAdviceLineReceiptStatus! Non-null
Accepted values 3
AWAITING
PARTIALLY_RECEIVED
RECEIVED
receiptLines AdviceReceiptLineConnection Nullable

The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path.

View all fields of AdviceReceiptLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

Fields 4
edges [ParameterEdge!]! Non-null
Fields 2
cursor String! Non-null
nodes [Parameter!]! Non-null
Fields 2
name String! Non-null
value String! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

Fields 4
edges [ReceiptEdge!]! Non-null
Fields 2

One receipt and its cursor.

cursor String! Non-null

Where this receipt sits; pass as after (with first) or before (with last).

node Receipt! Non-null

Goods that came into one warehouse.

View all fields of Receipt! →
nodes [Receipt!]! Non-null
Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
origin ReceiptOrigin! Non-null

What a receipt was created from.

View all fields of ReceiptOrigin! →
receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

View all fields of ReceiptAdvice →
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a receipt's lines.

View all fields of ReceiptLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Query
query receiptAdvice($id: UUID!) {
  receiptAdvice(id: $id) {
    id
    number
    kind
    status
    state
    supplierId
    supplier {
      id
      code
      name
      registrationId
      taxId
      vatId
    }
    warehouseId
    warehouse {
      id
      code
      name
      archivedAt
    }
    legalEntityId
    supplierReference
    advisedAt
    expectedAt
    currencyCode
    pricesIncludeVat
    note
    openedAt
    closedAt
    cancelledAt
    lines(first: 10) {
      totalCount
    }
    parameters(first: 10) {
      totalCount
    }
    progress {
      linesStarted
      linesDone
      linesInProgress
      linesRemaining
      activeDocuments
      startedAt
    }
    receipts(first: 10) {
      totalCount
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "receiptAdvice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "kind": "DELIVERY_NOTE",
      "status": "DRAFT",
      "state": "DRAFT",
      "supplierId": "00000000-0000-4000-8000-000000000001",
      "supplier": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "registrationId": "example",
        "taxId": "example",
        "vatId": "example"
      },
      "warehouseId": "00000000-0000-4000-8000-000000000001",
      "warehouse": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "archivedAt": "2026-01-01T00:00:00Z"
      },
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "supplierReference": "example",
      "advisedAt": "2026-01-01T00:00:00Z",
      "expectedAt": "2026-01-01T00:00:00Z",
      "currencyCode": "example",
      "pricesIncludeVat": true,
      "note": "example",
      "openedAt": "2026-01-01T00:00:00Z",
      "closedAt": "2026-01-01T00:00:00Z",
      "cancelledAt": "2026-01-01T00:00:00Z",
      "lines": {"totalCount": 1},
      "parameters": {"totalCount": 1},
      "progress": {
        "linesStarted": 1,
        "linesDone": 1,
        "linesInProgress": 1,
        "linesRemaining": 1,
        "activeDocuments": 1,
        "startedAt": "2026-01-01T00:00:00Z"
      },
      "receipts": {"totalCount": 1}
    }
  }
}

receiptAdvices

Description

Receipt advices, newest advised first (advisedAt, then id), keyset paged: exactly one of first or last, 1 to 250. Drafts made in the ERP are listed too (status DRAFT, no number). Advices outside the key's warehouse, company or supplier scope are left out. Needs integration.read and advice.read.

Arguments
filter ReceiptAdviceFilter Optional
Input fields 15

A filter on receipt advice headers. Every supplied field narrows the result; an explicit empty list matches nothing. Each list holds at most 100 values.

statuses [ReceiptAdviceStatus!] Optional
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

states [ReceiptAdviceState!] Optional
Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
warehouseIds [UUID!] Optional
supplierIds [UUID!] Optional
kinds [ReceiptAdviceKind!] Optional
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

advisedFrom Time Optional

advisedAt at or after this instant.

advisedTo Time Optional

advisedAt before this instant.

expectedFrom Time Optional

expectedAt at or after this instant (an advice with none never matches).

expectedTo Time Optional

expectedAt at or before this instant.

code String Optional

The exact number or the supplier's reference.

parameters [ParameterInput!] Optional

Up to 8 exact name/value equalities combined with AND.

Input fields 2

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

name String! Required
value String! Required
hasActiveDocuments Boolean Optional

True: a receipt answering it is not finished (progress.activeDocuments > 0). False: none is.

started Boolean Optional

True: work has started (progress.startedAt set). False: nobody has started.

lastActivityBefore Time Optional

The last activity is before this instant (advices nobody has started never match).

lastActivityAfter Time Optional

The last activity is at or after this instant.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [ReceiptAdviceEdge!]! Non-null
Fields 2
cursor String! Non-null
node ReceiptAdvice! Non-null
Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

View all fields of ReceiptAdviceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

View all fields of ParameterConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

View all fields of InstructionProgress! →
receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

View all fields of AdviceReceiptConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [ReceiptAdvice!]! Non-null
Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

Fields 4
edges [ReceiptEdge!]! Non-null

One receipt and its cursor.

View all fields of [ReceiptEdge!]! →
nodes [Receipt!]! Non-null

Goods that came into one warehouse.

View all fields of [Receipt!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query receiptAdvices($first: Int) {
  receiptAdvices(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      kind
      status
      state
      supplierId
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "receiptAdvices": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "kind": "DELIVERY_NOTE",
          "status": "DRAFT",
          "state": "DRAFT",
          "supplierId": "00000000-0000-4000-8000-000000000001"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

receipts

Description

Receipts, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. Receipts outside the key's warehouse or legal-entity scope are left out. Needs integration.read and receipt.read.

filter.ids names at most 50 receipts; an id that does not exist, is not a receipt, is a draft or is outside the key's scope is simply not returned -- never an error.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one receipt's selection.

Arguments
filter ReceiptFilter Optional
Input fields 7

Which receipts the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

ids [UUID!] Optional

These receipts, at most 50. Ids that are not returnable are simply absent.

statuses [ReceiptStatus!] Optional

Receipts in any of these states; all three when omitted.

Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

warehouseIds [UUID!] Optional

Receipts into any of these warehouses. At most 50.

effectiveFrom Time Optional

Receipts effective at or after this instant.

effectiveTo Time Optional

Receipts effective before this instant (exclusive).

origins [ReceiptOriginKind!] Optional

Receipts with any of these origins.

Accepted values 3
MANUAL

Entered directly, from nothing else.

ADVICE

Received against an advice (a supplier's announced delivery).

STOCKTAKE

A stocktake's surplus.

receiptAdviceIds [UUID!] Optional

Receipts answering any of these receipt advices. At most 50.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of receipts.

edges [ReceiptEdge!]! Non-null

The receipts with their cursors, newest first by effectiveAt.

Fields 2

One receipt and its cursor.

cursor String! Non-null

Where this receipt sits; pass as after (with first) or before (with last).

node Receipt! Non-null
Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
origin ReceiptOrigin! Non-null

What a receipt was created from.

View all fields of ReceiptOrigin! →
receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

View all fields of ReceiptAdvice →
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a receipt's lines.

View all fields of ReceiptLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [Receipt!]! Non-null

The same receipts without cursors.

Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin ReceiptOrigin! Non-null
Fields 2

What a receipt was created from.

kind ReceiptOriginKind! Non-null
Accepted values 3
MANUAL

Entered directly, from nothing else.

ADVICE

Received against an advice (a supplier's announced delivery).

STOCKTAKE

A stocktake's surplus.

id UUID Nullable

The advice or stocktake; null for MANUAL.

receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

View all fields of ReceiptAdviceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

View all fields of ParameterConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

View all fields of InstructionProgress! →
receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

View all fields of AdviceReceiptConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a receipt's lines.

edges [ReceiptLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [ReceiptLineEdge!]! →
nodes [ReceiptLine!]! Non-null

The same lines without cursors.

One product received.

View all fields of [ReceiptLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query receipts($first: Int) {
  receipts(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "receipts": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "status": "OPEN",
          "version": 1,
          "effectiveAt": "2026-01-01T00:00:00Z",
          "completedAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

cancelReceiptAdvice

Description

Cancel an OPEN advice no receipt answers (a draft receipt included); it keeps its number. Same permissions as updateReceiptAdvice. Refused with CONFLICT otherwise: an advice goods arrived against is closed in the ERP once its differences are settled.

Arguments
id UUID! Required
Returns
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a partner's addresses of one kind.

edges [AddressEdge!]! Non-null

The addresses with their cursors, the default first.

One address and its cursor.

View all fields of [AddressEdge!]! →
nodes [Address!]! Non-null

The same addresses without cursors.

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

View all fields of [Address!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

Fields 4
nodes [ReceiptAdviceLine!]! Non-null
Fields 20
id UUID! Non-null
lineNo Int! Non-null
variantId UUID Nullable

The product variant; null only on a DRAFT line the ERP has not matched yet.

supplierSku String Nullable

The supplier's own code of the item.

quantity Decimal! Non-null

The quantity as announced, in unit.

unit String! Non-null
unitFactor Decimal! Non-null

How many base units one unit held when the line was written.

baseQuantity Decimal! Non-null
unitPrice Decimal Nullable
vatPercent Decimal Nullable
expectedAt Time Nullable
batchCode String Nullable
expiresAt Time Nullable
serialNumber String Nullable
settlement ReceiptAdviceLineSettlement Nullable

What a person decided about the line's difference; null while nothing is decided.

Accepted values 5
SHORT_ACCEPTED

Less arrived, and it is accepted.

OVER_ACCEPTED

More arrived, and it is kept.

SHORT_CLAIMED

Less arrived, and it is claimed from the supplier.

RETURNED

It arrived and went back.

CANCELLED_REMAINDER

The rest is not coming.

received Decimal! Non-null

What arrived on open and completed receipts, in base units. Read only when selected.

remaining Decimal! Non-null

What is still announced, in base units: baseQuantity less received, never below 0.

inProgress Decimal! Non-null

What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received.

receiptStatus ReceiptAdviceLineReceiptStatus! Non-null
Accepted values 3
AWAITING
PARTIALLY_RECEIVED
RECEIVED
receiptLines AdviceReceiptLineConnection Nullable

The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path.

View all fields of AdviceReceiptLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

Fields 4
edges [ParameterEdge!]! Non-null
Fields 2
cursor String! Non-null
nodes [Parameter!]! Non-null
Fields 2
name String! Non-null
value String! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

Fields 4
edges [ReceiptEdge!]! Non-null
Fields 2

One receipt and its cursor.

cursor String! Non-null

Where this receipt sits; pass as after (with first) or before (with last).

node Receipt! Non-null

Goods that came into one warehouse.

View all fields of Receipt! →
nodes [Receipt!]! Non-null
Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
origin ReceiptOrigin! Non-null

What a receipt was created from.

View all fields of ReceiptOrigin! →
receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

View all fields of ReceiptAdvice →
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a receipt's lines.

View all fields of ReceiptLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation cancelReceiptAdvice($id: UUID!) {
  cancelReceiptAdvice(id: $id) {
    id
    number
    kind
    status
    state
    supplierId
    supplier {
      id
      code
      name
      registrationId
      taxId
      vatId
    }
    warehouseId
    warehouse {
      id
      code
      name
      archivedAt
    }
    legalEntityId
    supplierReference
    advisedAt
    expectedAt
    currencyCode
    pricesIncludeVat
    note
    openedAt
    closedAt
    cancelledAt
    lines(first: 10) {
      totalCount
    }
    parameters(first: 10) {
      totalCount
    }
    progress {
      linesStarted
      linesDone
      linesInProgress
      linesRemaining
      activeDocuments
      startedAt
    }
    receipts(first: 10) {
      totalCount
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "cancelReceiptAdvice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "kind": "DELIVERY_NOTE",
      "status": "DRAFT",
      "state": "DRAFT",
      "supplierId": "00000000-0000-4000-8000-000000000001",
      "supplier": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "registrationId": "example",
        "taxId": "example",
        "vatId": "example"
      },
      "warehouseId": "00000000-0000-4000-8000-000000000001",
      "warehouse": {
        "id": "00000000-0000-4000-8000-000000000001",
        "code": "example",
        "name": "example",
        "archivedAt": "2026-01-01T00:00:00Z"
      },
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "supplierReference": "example",
      "advisedAt": "2026-01-01T00:00:00Z",
      "expectedAt": "2026-01-01T00:00:00Z",
      "currencyCode": "example",
      "pricesIncludeVat": true,
      "note": "example",
      "openedAt": "2026-01-01T00:00:00Z",
      "closedAt": "2026-01-01T00:00:00Z",
      "cancelledAt": "2026-01-01T00:00:00Z",
      "lines": {"totalCount": 1},
      "parameters": {"totalCount": 1},
      "progress": {
        "linesStarted": 1,
        "linesDone": 1,
        "linesInProgress": 1,
        "linesRemaining": 1,
        "activeDocuments": 1,
        "startedAt": "2026-01-01T00:00:00Z"
      },
      "receipts": {"totalCount": 1}
    }
  }
}

createReceiptAdvice

Description

Create and open one receipt advice atomically: it is numbered (PP-) and expects its goods at once. A failed call creates no draft and takes no number. Every line names its product variant. The requestId makes a retry after a lost response safe: the same input returns created false, while different input returns CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and advice.write, with the warehouse, the company and the supplier in scope. The currency must be the warehouse's valuation currency (VALIDATION with reason CURRENCY_MISMATCH otherwise). A failed line names its index in extensions.addIndex.

Arguments
input CreateReceiptAdviceInput! Required
Input fields 12
requestId String! Required

An opaque, tenant-unique idempotency key, 1 to 128 bytes.

supplierId UUID! Required
warehouseId UUID! Required

The one warehouse the goods are coming into.

kind ReceiptAdviceKind! Required
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

supplierReference String Optional

The supplier's delivery note or invoice number, to quote back.

advisedAt Time Optional

The advice's own date, which its number's year is drawn from. Omitted: now.

expectedAt Time Optional

When the goods are due.

currencyCode String Optional

ISO 4217. Omitted: the warehouse company's currency.

pricesIncludeVat Boolean Optional

Whether the line prices include VAT. Omitted: false.

note String Optional

A note for the receiving desk.

One to 100 lines.

Input fields 11
variantId UUID! Required
quantity Decimal! Required

Positive, in unit.

unit String Optional

A unit the variant defines (a carton). Omitted: the item's base unit.

unitPrice Decimal Optional

Per unit, in the advice's currency; with or without VAT as the advice says.

vatPercent Decimal Optional
expectedAt Time Optional
batchCode String Optional

The batch the supplier's paperwork names; it prefills the receipt.

expiresAt Time Optional

The expiry the paperwork names; its UTC date is kept.

serialNumber String Optional

The serial the paperwork names. A serial names one piece: the line's base quantity must be 1.

supplierSku String Optional

The supplier's own code of the item.

note String Optional
parameters [ParameterInput!] Optional

Up to 32 short text parameters, such as workflow_id and run_id.

Input fields 2

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

name String! Required
value String! Required
Returns
created Boolean! Non-null

False: a replay of an earlier call with the same requestId and input.

advice ReceiptAdvice! Non-null
Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

Fields 4
edges [ReceiptEdge!]! Non-null

One receipt and its cursor.

View all fields of [ReceiptEdge!]! →
nodes [Receipt!]! Non-null

Goods that came into one warehouse.

View all fields of [Receipt!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation createReceiptAdvice($input: CreateReceiptAdviceInput!) {
  createReceiptAdvice(input: $input) {
    created
    advice {
      id
      number
      kind
      status
      state
      supplierId
    }
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "supplierId": "00000000-0000-4000-8000-000000000001",
    "warehouseId": "00000000-0000-4000-8000-000000000001",
    "kind": "DELIVERY_NOTE",
    "lines": [
      {"variantId": "00000000-0000-4000-8000-000000000001", "quantity": "10.00"}
    ]
  }
}
Response
{
  "data": {
    "createReceiptAdvice": {
      "created": true,
      "advice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "kind": "DELIVERY_NOTE",
        "status": "DRAFT",
        "state": "DRAFT",
        "supplierId": "00000000-0000-4000-8000-000000000001"
      }
    }
  }
}

removeReceiptExternalRef

Description

Removes the receipt's reference in a source; changed: false when it had none. An archived source still answers. Permissions, NOT_FOUND and errors below this field as setReceiptExternalRef.

Arguments
id UUID! Required
source String! Required
Returns

What setReceiptExternalRef and removeReceiptExternalRef answer.

receipt Receipt! Non-null

The receipt, as it now stands.

Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin ReceiptOrigin! Non-null
Fields 2

What a receipt was created from.

kind ReceiptOriginKind! Non-null
Accepted values 3
MANUAL

Entered directly, from nothing else.

ADVICE

Received against an advice (a supplier's announced delivery).

STOCKTAKE

A stocktake's surplus.

id UUID Nullable

The advice or stocktake; null for MANUAL.

receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

View all fields of ReceiptAdviceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

View all fields of ParameterConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

View all fields of InstructionProgress! →
receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

View all fields of AdviceReceiptConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a receipt's lines.

edges [ReceiptLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [ReceiptLineEdge!]! →
nodes [ReceiptLine!]! Non-null

The same lines without cursors.

One product received.

View all fields of [ReceiptLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the call changed nothing: a repeat.

Example

Mutation
mutation removeReceiptExternalRef($id: UUID!, $source: String!) {
  removeReceiptExternalRef(id: $id, source: $source) {
    receipt {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    changed
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001", "source": "example"}
Response
{
  "data": {
    "removeReceiptExternalRef": {
      "receipt": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "OPEN",
        "version": 1,
        "effectiveAt": "2026-01-01T00:00:00Z",
        "completedAt": "2026-01-01T00:00:00Z"
      },
      "changed": true
    }
  }
}

setReceiptExternalRef

Description

Records the receipt's one reference in a source: the record another system made of it (an OBERON note -- its GUID as externalId, its number as externalNumber). A different externalId replaces the receipt's earlier reference in that source; the same one with the same number is a repeat and answers changed: false. Writes no event and no revision of the receipt.

Needs integration.read, receipt.read and receipt.write, with the receipt in scope. NOT_FOUND when there is no such receipt, it is a draft or the key may not see it; NOT_FOUND with extensions.reason SOURCE_NOT_FOUND (field input.source) when there is no such source. CONFLICT with extensions.reason SOURCE_ARCHIVED for an archived source, REF_TAKEN when another receipt holds that externalId in the source. VALIDATION (field input.externalId or input.externalNumber) for a blank id or one too long.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the reference was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
id UUID! Required
Input fields 3

The reference a receipt or an issue gets: the record another system made of it.

source String! Required

An external source's code in this ERP.

externalId String! Required

That system's id of its record, at most 200 characters.

externalNumber String Optional

The number that system shows for it, at most 100 characters. Omitted or null: none.

Returns

What setReceiptExternalRef and removeReceiptExternalRef answer.

receipt Receipt! Non-null

The receipt, as it now stands.

Fields 21

Goods that came into one warehouse.

id UUID! Non-null
number String! Non-null

The receipt's number. Every returned receipt has one.

status ReceiptStatus! Non-null
Accepted values 3
OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as received.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed receipt has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the receipt belongs to; null when it belongs to none.

supplierId UUID Nullable
supplier Partner Nullable

The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin ReceiptOrigin! Non-null
Fields 2

What a receipt was created from.

kind ReceiptOriginKind! Non-null
Accepted values 3
MANUAL

Entered directly, from nothing else.

ADVICE

Received against an advice (a supplier's announced delivery).

STOCKTAKE

A stocktake's surplus.

id UUID Nullable

The advice or stocktake; null for MANUAL.

receiptAdvice ReceiptAdvice Nullable

The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.

Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

View all fields of ReceiptAdviceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

View all fields of ParameterConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

View all fields of InstructionProgress! →
receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

View all fields of AdviceReceiptConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalReference String Nullable

The supplier's delivery note or invoice number.

currencyCode String! Non-null
totalValue Decimal Nullable

The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines ReceiptLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a receipt's lines.

edges [ReceiptLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [ReceiptLineEdge!]! →
nodes [ReceiptLine!]! Non-null

The same lines without cursors.

One product received.

View all fields of [ReceiptLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the call changed nothing: a repeat.

Example

Mutation
mutation setReceiptExternalRef($id: UUID!, $input: StockDocumentExternalRefInput!) {
  setReceiptExternalRef(id: $id, input: $input) {
    receipt {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    changed
  }
}
Variables
{
  "id": "00000000-0000-4000-8000-000000000001",
  "input": {"source": "example", "externalId": "example"}
}
Response
{
  "data": {
    "setReceiptExternalRef": {
      "receipt": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "OPEN",
        "version": 1,
        "effectiveAt": "2026-01-01T00:00:00Z",
        "completedAt": "2026-01-01T00:00:00Z"
      },
      "changed": true
    }
  }
}

updateReceiptAdvice

Description

Change an OPEN advice in one transaction, all or nothing: removeLineIds, updateLines and addLines in that order, then header terms, then parameters. A failed item names its list's index in extensions.removeIndex, updateIndex or addIndex. A line goods arrived against keeps its unit and may not drop below what arrived; a line whose difference is settled keeps its quantity; a line a receipt or a handheld scan answers cannot be removed; the advice keeps at least one line (judged after the whole call, CONFLICT with reason ADVICE_LAST_LINE). The supplier, the warehouse and the currency are fixed. A closed or cancelled advice is CONFLICT with reason ADVICE_NOT_OPEN. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the advice as it is now (even if it has closed since), changing nothing; the same requestId with other input, or on another advice, is CONFLICT with reason REQUEST_ID_REUSED. AWAITING does not mean nobody works on it: a warehouse worker may already be scanning it into a draft receipt. Needs integration.read, advice.write and advice.read, with the advice in scope.

Arguments
id UUID! Required
input UpdateReceiptAdviceInput! Required
Input fields 10
requestId String! Required

An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.

kind ReceiptAdviceKind Optional

Omitted: unchanged. Never PURCHASE_ORDER.

Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

supplierReference String Optional

Omitted: unchanged. Null: cleared.

advisedAt Time Optional

Omitted: unchanged. Null is refused.

expectedAt Time Optional

Omitted: unchanged. Null: cleared.

note String Optional

Omitted: unchanged. Null: cleared.

removeLineIds [UUID!] Optional

Up to 100 lines to remove.

updateLines [ReceiptAdviceLineUpdate!] Optional

Up to 100 line changes.

Input fields 11

One line's change: an omitted field is unchanged, a null one cleared.

lineId UUID! Required
quantity Decimal Optional

Positive, in the line's unit (the new one when unit changes it). Omitted: unchanged.

unit String Optional

Omitted: unchanged. Refused once goods arrived against the line in its unit.

unitPrice Decimal Optional
vatPercent Decimal Optional
expectedAt Time Optional
batchCode String Optional
expiresAt Time Optional
serialNumber String Optional
supplierSku String Optional
note String Optional
addLines [ReceiptAdviceLineInput!] Optional

Up to 100 new lines, as on create.

Input fields 11
variantId UUID! Required
quantity Decimal! Required

Positive, in unit.

unit String Optional

A unit the variant defines (a carton). Omitted: the item's base unit.

unitPrice Decimal Optional

Per unit, in the advice's currency; with or without VAT as the advice says.

vatPercent Decimal Optional
expectedAt Time Optional
batchCode String Optional

The batch the supplier's paperwork names; it prefills the receipt.

expiresAt Time Optional

The expiry the paperwork names; its UTC date is kept.

serialNumber String Optional

The serial the paperwork names. A serial names one piece: the line's base quantity must be 1.

supplierSku String Optional

The supplier's own code of the item.

note String Optional
parameters SetParametersInput Optional
Input fields 2

Set and remove parameters by name in one atomic change; a name may occur once across both.

set [ParameterInput!] Optional

Up to 32 values to set; setting a current value changes nothing.

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

View all fields of [ParameterInput!] →
remove [String!] Optional

Up to 32 names to remove; removing a missing name changes nothing.

Returns
applied Boolean! Non-null

True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.

advice ReceiptAdvice! Non-null
Fields 23
id UUID! Non-null
number String Nullable

PP-…, set when it opens; null on a DRAFT.

kind ReceiptAdviceKind! Non-null
Accepted values 4
DELIVERY_NOTE
SUPPLIER_INVOICE
OTHER
PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.

status ReceiptAdviceStatus! Non-null
Accepted values 4
DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.

state ReceiptAdviceState! Non-null

The status and what arrived combined. Read only when selected.

Accepted values 6
DRAFT
AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED
CANCELLED
supplierId UUID! Non-null
supplier Partner Nullable

The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the advice is filed under; null only on an older draft.

supplierReference String Nullable
advisedAt Time! Non-null
expectedAt Time Nullable
currencyCode String! Non-null
pricesIncludeVat Boolean! Non-null
note String Nullable
openedAt Time Nullable
closedAt Time Nullable
cancelledAt Time Nullable

The announced lines, by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

receipts AdviceReceiptConnection Nullable

The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).

Fields 4
edges [ReceiptEdge!]! Non-null

One receipt and its cursor.

View all fields of [ReceiptEdge!]! →
nodes [Receipt!]! Non-null

Goods that came into one warehouse.

View all fields of [Receipt!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation updateReceiptAdvice($id: UUID!, $input: UpdateReceiptAdviceInput!) {
  updateReceiptAdvice(id: $id, input: $input) {
    applied
    advice {
      id
      number
      kind
      status
      state
      supplierId
    }
  }
}
Variables
{
  "id": "00000000-0000-4000-8000-000000000001",
  "input": {"requestId": "example"}
}
Response
{
  "data": {
    "updateReceiptAdvice": {
      "applied": true,
      "advice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "kind": "DELIVERY_NOTE",
        "status": "DRAFT",
        "state": "DRAFT",
        "supplierId": "00000000-0000-4000-8000-000000000001"
      }
    }
  }
}

Transfers

transferAdvice

Description

One transfer advice, or null if absent or outside this key's scope. Needs integration.read and transferAdvice.read.

Arguments
id UUID! Required
Returns
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

Fields 4
nodes [TransferAdviceLine!]! Non-null
Fields 14
id UUID! Non-null
lineNo Int! Non-null
variantId UUID! Non-null
quantity Decimal! Non-null

The quantity as entered on the advice; public creation always uses the base unit.

unit String! Non-null
unitFactor Decimal! Non-null
baseQuantity Decimal! Non-null
sourceLocationId UUID Nullable
targetLocationId UUID Nullable
lotId UUID Nullable
moved Decimal! Non-null

Quantity moved by linked transfers, in base units.

remaining Decimal! Non-null

Quantity still instructed, in base units; advice creation reserves none of it.

inProgress Decimal! Non-null

Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved.

transferLines AdviceTransferLineConnection Nullable

The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

View all fields of AdviceTransferLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

Fields 4
edges [ParameterEdge!]! Non-null
Fields 2
cursor String! Non-null
nodes [Parameter!]! Non-null
Fields 2
name String! Non-null
value String! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

Fields 4
edges [TransferEdge!]! Non-null
Fields 2

One transfer and its cursor.

cursor String! Non-null

Where this transfer sits; pass as after (with first) or before (with last).

node Transfer! Non-null

Goods moved from one warehouse (or bin) to another.

View all fields of Transfer! →
nodes [Transfer!]! Non-null
Fields 20

Goods moved from one warehouse (or bin) to another.

id UUID! Non-null
number String! Non-null

The transfer's number. Every returned transfer has one.

status TransferStatus! Non-null
Accepted values 3
OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as moved.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed transfer has been revised; 0 as completed.

sourceWarehouseId UUID! Non-null
sourceWarehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
targetWarehouseId UUID! Non-null
targetWarehouse Warehouse Nullable

The warehouse the goods went to. Guarded as sourceWarehouse is.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the transfer belongs to; null when it belongs to none.

origin TransferOrigin! Non-null

What a transfer was created from.

View all fields of TransferOrigin! →
externalReference String Nullable

The external reference the transfer was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines TransferLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a transfer's lines.

View all fields of TransferLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
transferAdvices LinkedTransferAdviceConnection Nullable

The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.

View all fields of LinkedTransferAdviceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Query
query transferAdvice($id: UUID!) {
  transferAdvice(id: $id) {
    id
    number
    status
    state
    sourceWarehouseId
    targetWarehouseId
    legalEntityId
    issuedAt
    plannedAt
    reference
    lines(first: 10) {
      totalCount
    }
    parameters(first: 10) {
      totalCount
    }
    progress {
      linesStarted
      linesDone
      linesInProgress
      linesRemaining
      activeDocuments
      startedAt
    }
    transfers(first: 10) {
      totalCount
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "transferAdvice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "status": "DRAFT",
      "state": "DRAFT",
      "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
      "targetWarehouseId": "00000000-0000-4000-8000-000000000001",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "issuedAt": "2026-01-01T00:00:00Z",
      "plannedAt": "2026-01-01T00:00:00Z",
      "reference": "example",
      "lines": {"totalCount": 1},
      "parameters": {"totalCount": 1},
      "progress": {
        "linesStarted": 1,
        "linesDone": 1,
        "linesInProgress": 1,
        "linesRemaining": 1,
        "activeDocuments": 1,
        "startedAt": "2026-01-01T00:00:00Z"
      },
      "transfers": {"totalCount": 1}
    }
  }
}

transferAdvices

Description

Transfer advices, newest issued first, keyset paged. Needs integration.read and transferAdvice.read.

Arguments
filter TransferAdviceFilter Optional
Input fields 9

A filter on transfer advice headers. Every supplied field narrows the result.

statuses [TransferAdviceStatus!] Optional

Lifecycle statuses; an explicit empty list matches nothing.

Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
states [TransferAdviceState!] Optional

Derived work states; an explicit empty list matches nothing.

Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseIds [UUID!] Optional
targetWarehouseIds [UUID!] Optional
parameters [ParameterInput!] Optional

Up to 8 exact name/value equalities combined with AND; an explicit empty list matches nothing.

Input fields 2

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

name String! Required
value String! Required
hasActiveDocuments Boolean Optional

True: an executing document is not finished (progress.activeDocuments > 0). False: none is.

started Boolean Optional

True: work has started (progress.startedAt set). False: nobody has started.

lastActivityBefore Time Optional

The last activity is before this instant (advices nobody has started never match).

lastActivityAfter Time Optional

The last activity is at or after this instant.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [TransferAdviceEdge!]! Non-null
Fields 2
cursor String! Non-null
node TransferAdvice! Non-null
Fields 14
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

View all fields of TransferAdviceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

View all fields of ParameterConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

View all fields of InstructionProgress! →
transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

View all fields of AdviceTransferConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [TransferAdvice!]! Non-null
Fields 14
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

Fields 4
edges [TransferEdge!]! Non-null

One transfer and its cursor.

View all fields of [TransferEdge!]! →
nodes [Transfer!]! Non-null

Goods moved from one warehouse (or bin) to another.

View all fields of [Transfer!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query transferAdvices($first: Int) {
  transferAdvices(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      status
      state
      sourceWarehouseId
      targetWarehouseId
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "transferAdvices": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "status": "DRAFT",
          "state": "DRAFT",
          "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
          "targetWarehouseId": "00000000-0000-4000-8000-000000000001"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

transfers

Description

Transfers, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. A transfer is returned when either of its warehouses is in the key's warehouse scope, and left out when neither is or its company is outside the key's legal-entity scope. Needs integration.read and transfer.read.

filter.ids names at most 50 transfers; an id that does not exist, is not a transfer, is a draft or is outside the key's scope is simply not returned -- never an error.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one transfer's selection.

Arguments
filter TransferFilter Optional
Input fields 9

Which transfers the query returns. Every field narrows and they combine with AND; an omitted (or null) one matches all, and an empty list matches none.

ids [UUID!] Optional

These transfers, at most 50. Ids that are not returnable are simply absent.

statuses [TransferStatus!] Optional

Transfers in any of these states; all three when omitted.

Accepted values 3
OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

warehouseIds [UUID!] Optional

Transfers out of or into any of these warehouses (either end). At most 50.

sourceWarehouseIds [UUID!] Optional

Transfers out of any of these warehouses. At most 50.

targetWarehouseIds [UUID!] Optional

Transfers into any of these warehouses. At most 50.

effectiveFrom Time Optional

Transfers effective at or after this instant.

effectiveTo Time Optional

Transfers effective before this instant (exclusive).

origins [TransferOriginKind!] Optional

Transfers with any of these origins.

Accepted values 2
STOCKTAKE

A stocktake's relocation: goods counted in another bin than the books held them in.

MANUAL

Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId).

transferAdviceIds [UUID!] Optional

Transfers executing any of these transfer advices (linked by header or line). At most 50. Needs transferAdvice.read.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of transfers.

edges [TransferEdge!]! Non-null

The transfers with their cursors, newest first by effectiveAt.

Fields 2

One transfer and its cursor.

cursor String! Non-null

Where this transfer sits; pass as after (with first) or before (with last).

node Transfer! Non-null
Fields 20

Goods moved from one warehouse (or bin) to another.

id UUID! Non-null
number String! Non-null

The transfer's number. Every returned transfer has one.

status TransferStatus! Non-null
Accepted values 3
OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as moved.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed transfer has been revised; 0 as completed.

sourceWarehouseId UUID! Non-null
sourceWarehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
targetWarehouseId UUID! Non-null
targetWarehouse Warehouse Nullable

The warehouse the goods went to. Guarded as sourceWarehouse is.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the transfer belongs to; null when it belongs to none.

origin TransferOrigin! Non-null

What a transfer was created from.

View all fields of TransferOrigin! →
externalReference String Nullable

The external reference the transfer was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines TransferLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a transfer's lines.

View all fields of TransferLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
transferAdvices LinkedTransferAdviceConnection Nullable

The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.

View all fields of LinkedTransferAdviceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [Transfer!]! Non-null

The same transfers without cursors.

Fields 20

Goods moved from one warehouse (or bin) to another.

id UUID! Non-null
number String! Non-null

The transfer's number. Every returned transfer has one.

status TransferStatus! Non-null
Accepted values 3
OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as moved.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed transfer has been revised; 0 as completed.

sourceWarehouseId UUID! Non-null
sourceWarehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

targetWarehouseId UUID! Non-null
targetWarehouse Warehouse Nullable

The warehouse the goods went to. Guarded as sourceWarehouse is.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the transfer belongs to; null when it belongs to none.

origin TransferOrigin! Non-null
Fields 2

What a transfer was created from.

kind TransferOriginKind! Non-null
Accepted values 2
STOCKTAKE

A stocktake's relocation: goods counted in another bin than the books held them in.

MANUAL

Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId).

id UUID Nullable

The stocktake; null for MANUAL.

externalReference String Nullable

The external reference the transfer was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines TransferLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a transfer's lines.

edges [TransferLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [TransferLineEdge!]! →
nodes [TransferLine!]! Non-null

The same lines without cursors.

One product moved.

View all fields of [TransferLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the transfer has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
transferAdvices LinkedTransferAdviceConnection Nullable

The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query transfers($first: Int) {
  transfers(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "transfers": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "status": "OPEN",
          "version": 1,
          "effectiveAt": "2026-01-01T00:00:00Z",
          "completedAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

cancelTransferAdvice

Description

Cancel an OPEN advice nothing has moved against and no draft transfer links. Same permissions as updateTransferAdvice. Refused with CONFLICT and a reason otherwise.

Arguments
id UUID! Required
Returns
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

Fields 4
nodes [TransferAdviceLine!]! Non-null
Fields 14
id UUID! Non-null
lineNo Int! Non-null
variantId UUID! Non-null
quantity Decimal! Non-null

The quantity as entered on the advice; public creation always uses the base unit.

unit String! Non-null
unitFactor Decimal! Non-null
baseQuantity Decimal! Non-null
sourceLocationId UUID Nullable
targetLocationId UUID Nullable
lotId UUID Nullable
moved Decimal! Non-null

Quantity moved by linked transfers, in base units.

remaining Decimal! Non-null

Quantity still instructed, in base units; advice creation reserves none of it.

inProgress Decimal! Non-null

Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved.

transferLines AdviceTransferLineConnection Nullable

The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

View all fields of AdviceTransferLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

Fields 4
edges [ParameterEdge!]! Non-null
Fields 2
cursor String! Non-null
nodes [Parameter!]! Non-null
Fields 2
name String! Non-null
value String! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

Fields 4
edges [TransferEdge!]! Non-null
Fields 2

One transfer and its cursor.

cursor String! Non-null

Where this transfer sits; pass as after (with first) or before (with last).

node Transfer! Non-null

Goods moved from one warehouse (or bin) to another.

View all fields of Transfer! →
nodes [Transfer!]! Non-null
Fields 20

Goods moved from one warehouse (or bin) to another.

id UUID! Non-null
number String! Non-null

The transfer's number. Every returned transfer has one.

status TransferStatus! Non-null
Accepted values 3
OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as moved.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed transfer has been revised; 0 as completed.

sourceWarehouseId UUID! Non-null
sourceWarehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
targetWarehouseId UUID! Non-null
targetWarehouse Warehouse Nullable

The warehouse the goods went to. Guarded as sourceWarehouse is.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the transfer belongs to; null when it belongs to none.

origin TransferOrigin! Non-null

What a transfer was created from.

View all fields of TransferOrigin! →
externalReference String Nullable

The external reference the transfer was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines TransferLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a transfer's lines.

View all fields of TransferLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
transferAdvices LinkedTransferAdviceConnection Nullable

The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.

View all fields of LinkedTransferAdviceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation cancelTransferAdvice($id: UUID!) {
  cancelTransferAdvice(id: $id) {
    id
    number
    status
    state
    sourceWarehouseId
    targetWarehouseId
    legalEntityId
    issuedAt
    plannedAt
    reference
    lines(first: 10) {
      totalCount
    }
    parameters(first: 10) {
      totalCount
    }
    progress {
      linesStarted
      linesDone
      linesInProgress
      linesRemaining
      activeDocuments
      startedAt
    }
    transfers(first: 10) {
      totalCount
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "cancelTransferAdvice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "status": "DRAFT",
      "state": "DRAFT",
      "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
      "targetWarehouseId": "00000000-0000-4000-8000-000000000001",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "issuedAt": "2026-01-01T00:00:00Z",
      "plannedAt": "2026-01-01T00:00:00Z",
      "reference": "example",
      "lines": {"totalCount": 1},
      "parameters": {"totalCount": 1},
      "progress": {
        "linesStarted": 1,
        "linesDone": 1,
        "linesInProgress": 1,
        "linesRemaining": 1,
        "activeDocuments": 1,
        "startedAt": "2026-01-01T00:00:00Z"
      },
      "transfers": {"totalCount": 1}
    }
  }
}

createTransferAdvice

Description

Create and open one transfer advice atomically. A failed call creates no draft or number. The requestId makes a retry after a lost response safe: the same input returns created false, while different input returns CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and transferAdvice.write, with both warehouses and the company in scope. The advice does not reserve or move stock. Equal source and target warehouses make a bin-to-bin advice inside one warehouse: every line then needs a targetLocationId.

Arguments
Input fields 7
requestId String! Required

An opaque, tenant-unique idempotency key, 1 to 128 bytes.

sourceWarehouseId UUID! Required
targetWarehouseId UUID! Required
plannedAt Time Optional
reference String Optional

One to 100 positive-quantity lines. Quantities are in each variant's base unit.

Input fields 6
variantId UUID! Required
quantity Decimal! Required
sourceLocationId UUID Optional
targetLocationId UUID Optional
lotId UUID Optional
note String Optional
parameters [ParameterInput!] Optional

Up to 32 short text parameters, such as workflow_id and run_id.

Input fields 2

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

name String! Required
value String! Required
Returns
created Boolean! Non-null
advice TransferAdvice! Non-null
Fields 14
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

Fields 4
edges [TransferEdge!]! Non-null

One transfer and its cursor.

View all fields of [TransferEdge!]! →
nodes [Transfer!]! Non-null

Goods moved from one warehouse (or bin) to another.

View all fields of [Transfer!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation createTransferAdvice($input: CreatePublicTransferAdviceInput!) {
  createTransferAdvice(input: $input) {
    created
    advice {
      id
      number
      status
      state
      sourceWarehouseId
      targetWarehouseId
    }
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
    "targetWarehouseId": "00000000-0000-4000-8000-000000000001",
    "lines": [
      {"variantId": "00000000-0000-4000-8000-000000000001", "quantity": "10.00"}
    ]
  }
}
Response
{
  "data": {
    "createTransferAdvice": {
      "created": true,
      "advice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "state": "DRAFT",
        "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
        "targetWarehouseId": "00000000-0000-4000-8000-000000000001"
      }
    }
  }
}

updateTransferAdvice

Description

Change an OPEN advice in one transaction, all or nothing: header terms, then removeLineIds, updateLines and addLines in that order, then parameters. A failed item names its list's index in extensions.removeIndex, updateIndex or addIndex. A line that has moved goods keeps its product, bins and lot, and its quantity may not drop below what moved; a line a transfer links cannot be removed; the advice keeps at least one line (judged after the whole call). When every line has moved its quantity the advice closes. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the advice as it is now (even if it has closed since), changing nothing; the same requestId with other input, or on another advice, is CONFLICT with reason REQUEST_ID_REUSED. AWAITING does not mean nobody works on it: a warehouse worker may already be scanning it into a draft transfer. Needs integration.read, transferAdvice.write and transferAdvice.read, with both warehouses and the company in scope.

Arguments
id UUID! Required
Input fields 7
requestId String! Required

An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.

plannedAt Time Optional

Omitted: unchanged. Null: cleared.

reference String Optional

Omitted: unchanged. Null: cleared.

removeLineIds [UUID!] Optional

Up to 100 lines to remove.

updateLines [PublicTransferAdviceLineUpdate!] Optional

Up to 100 line changes.

Input fields 6
lineId UUID! Required
quantity Decimal Optional

In base units. Omitted: unchanged. A line entered in another unit refuses it (reason LINE_NOT_IN_BASE_UNIT).

sourceLocationId UUID Optional

Omitted: unchanged. Null: cleared.

targetLocationId UUID Optional

Omitted: unchanged. Null: cleared (refused inside one warehouse).

lotId UUID Optional

Omitted: unchanged. Null: cleared.

note String Optional

Omitted: unchanged. Null: cleared.

Up to 100 new lines, base-unit quantities, as on create.

Input fields 6
variantId UUID! Required
quantity Decimal! Required
sourceLocationId UUID Optional
targetLocationId UUID Optional
lotId UUID Optional
note String Optional
parameters SetParametersInput Optional
Input fields 2

Set and remove parameters by name in one atomic change; a name may occur once across both.

set [ParameterInput!] Optional

Up to 32 values to set; setting a current value changes nothing.

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

View all fields of [ParameterInput!] →
remove [String!] Optional

Up to 32 names to remove; removing a missing name changes nothing.

Returns
applied Boolean! Non-null

True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.

advice TransferAdvice! Non-null
Fields 14
id UUID! Non-null
number String Nullable
status TransferAdviceStatus! Non-null
Accepted values 4
DRAFT
OPEN
CLOSED
CANCELLED
state TransferAdviceState! Non-null
Accepted values 6
DRAFT
AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS
COMPLETED
CLOSED
CANCELLED
sourceWarehouseId UUID! Non-null
targetWarehouseId UUID! Non-null
legalEntityId UUID! Non-null
issuedAt Time! Non-null
plannedAt Time Nullable
reference String Nullable

The instructed lines, ordered by line number. Page with first/after or last/before (1..250).

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
parameters ParameterConnection Nullable

Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many parameters the record has (at most 32).

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
progress InstructionProgress! Non-null

How far the work on the advice is. Needs transferAdvice.read. Batched per page.

Fields 7

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

linesStarted Int! Non-null

Lines with anything done or in progress.

linesDone Int! Non-null

Lines fully done: nothing remaining.

linesInProgress Int! Non-null

Lines with anything on a draft executing document (scanned or typed, not yet moved).

linesRemaining Int! Non-null

Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.

activeDocuments Int! Non-null

Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.

startedAt Time Nullable

When the first linked executing document was created; null while nobody has started.

lastActivityAt Time Nullable

The latest change on a linked executing document or its scans; null while nobody has started.

transfers AdviceTransferConnection Nullable

The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.

Fields 4
edges [TransferEdge!]! Non-null

One transfer and its cursor.

View all fields of [TransferEdge!]! →
nodes [Transfer!]! Non-null

Goods moved from one warehouse (or bin) to another.

View all fields of [Transfer!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation updateTransferAdvice($id: UUID!, $input: UpdatePublicTransferAdviceInput!) {
  updateTransferAdvice(id: $id, input: $input) {
    applied
    advice {
      id
      number
      status
      state
      sourceWarehouseId
      targetWarehouseId
    }
  }
}
Variables
{
  "id": "00000000-0000-4000-8000-000000000001",
  "input": {"requestId": "example"}
}
Response
{
  "data": {
    "updateTransferAdvice": {
      "applied": true,
      "advice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "state": "DRAFT",
        "sourceWarehouseId": "00000000-0000-4000-8000-000000000001",
        "targetWarehouseId": "00000000-0000-4000-8000-000000000001"
      }
    }
  }
}

Products

product

Description

One product, by our id or by its code (exact) -- exactly one of the two, else VALIDATION. Null when the tenant has none. Archived products are served. Needs integration.read and item.read.

Arguments
id UUID Optional
code String Optional
Returns

A product: the parent of its variants. Needs item.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the product.

name String! Non-null

Its name, as the catalogue keeps it (not translated).

baseUnit String! Non-null

The unit its stock is counted in.

vatRateCode String! Non-null

The code of its VAT rate.

archivedAt Time Nullable

When it was archived; null while it is in use.

updatedAt Time! Non-null

When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.

variants ProductVariantConnection Nullable

Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a product's variants.

edges [ProductVariantEdge!]! Non-null

The variants with their cursors, the default first.

Fields 2

One variant and its cursor.

cursor String! Non-null

Where this variant sits; pass as after (with first) or before (with last) to this product's variants.

node ProductVariant! Non-null

One sellable variant of a product: what a document line moves. Needs item.read.

View all fields of ProductVariant! →
nodes [ProductVariant!]! Non-null

The same variants without cursors.

Fields 12

One sellable variant of a product: what a document line moves. Needs item.read.

id UUID! Non-null

Our id.

sku String! Non-null

Its SKU: unique in the organisation, archived variants included.

selectedOptions [SelectedOption!]! Non-null

The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.

One axis value of a variant: the axis's name and the value's name.

View all fields of [SelectedOption!]! →
isDefault Boolean! Non-null

Whether it is the product's default variant.

archivedAt Time Nullable

When it was archived; null while it is in use.

ean String Nullable

The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.

codes ProductCodeConnection Nullable

Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's codes.

View all fields of ProductCodeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
units ProductUnitConnection Nullable

Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's units.

View all fields of ProductUnitConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
prices ProductPriceConnection Nullable

Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's prices.

View all fields of ProductPriceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
product Product! Non-null

The product it is a variant of.

A product: the parent of its variants. Needs item.read.

View all fields of Product! →
stockCards ProductVariantStockCardConnection Nullable

Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.

Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a product variant's stock cards.

View all fields of ProductVariantStockCardConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

Fields 2

One reference and its cursor.

cursor String! Non-null

Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs.

node ExternalRef! Non-null

An id another system knows a record by.

View all fields of ExternalRef! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

Fields 4

An id another system knows a record by.

source String! Non-null

The external source's code, e.g. SHOP -- the same string as SalesOrder.source.

externalId String! Non-null

The record's id in that system.

parentExternalId String Nullable

The parent's id in that system, when the id is unique only under it.

externalNumber String Nullable

The number that system shows for the record, when one was recorded.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Query
query product($id: UUID) {
  product(id: $id) {
    id
    code
    name
    baseUnit
    vatRateCode
    archivedAt
    updatedAt
    variants(first: 10) {
      totalCount
    }
    externalRefs(first: 10) {
      totalCount
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "product": {
      "id": "00000000-0000-4000-8000-000000000001",
      "code": "example",
      "name": "example",
      "baseUnit": "example",
      "vatRateCode": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "variants": {"totalCount": 1},
      "externalRefs": {"totalCount": 1}
    }
  }
}

products

Description

Products, by sortKey then id. Archived products only with filter.includeArchived. There is no total count. Needs integration.read and item.read.

Each list of the filter names at most 250 values; an empty list matches nothing.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor, which belongs to the sortKey it was read under. A page is priced at the number asked times one product's selection.

Arguments
filter ProductFilter Optional
Input fields 6

Which products products returns. Every field narrows; an omitted one matches all, an empty list none.

ids [UUID!] Optional

These products, at most 250.

codes [String!] Optional

Products with these codes (exact), at most 250.

skus [String!] Optional

Products having a variant (archived included) with one of these SKUs (exact), at most 250.

barcodes [String!] Optional

Products having a variant (archived included) carrying one of these codes -- EAN, GTIN, UPC, manufacturer's, customs or internal -- exact, at most 250.

updatedFrom Time Optional

Products whose updatedAt is at or after this instant -- for an incremental sync, with sortKey UPDATED_AT and includeArchived: true: an archive moves updatedAt, and archivedAt tells the product is gone -- without includeArchived a sync never sees it leave. updatedAt is the start time of the writing transaction, so resume from the last updatedAt seen minus 10 minutes and de-duplicate by id. Prices and a rename of an attribute or of one of its values do not move it.

includeArchived Boolean Optional

True: archived products too. Default false.

Default: false

sortKey ProductSortKey Optional

Default: CODE

Accepted values 2
CODE

By code.

UPDATED_AT

By updatedAt, oldest first: with updatedFrom and includeArchived: true, the incremental sync (an archive moves updatedAt; archivedAt tells the product is gone). updatedAt is the start time of the writing transaction, so a change committed later can sort before one already read: resume from the last updatedAt seen minus 10 minutes and de-duplicate by id.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of products.

edges [ProductEdge!]! Non-null

The products with their cursors, in the order asked.

Fields 2

One product and its cursor.

cursor String! Non-null

Where this product sits; pass as after (with first) or before (with last), under the same sortKey.

node Product! Non-null
Fields 9

A product: the parent of its variants. Needs item.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the product.

name String! Non-null

Its name, as the catalogue keeps it (not translated).

baseUnit String! Non-null

The unit its stock is counted in.

vatRateCode String! Non-null

The code of its VAT rate.

archivedAt Time Nullable

When it was archived; null while it is in use.

updatedAt Time! Non-null

When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.

variants ProductVariantConnection Nullable

Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a product's variants.

View all fields of ProductVariantConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [Product!]! Non-null

The same products without cursors.

Fields 9

A product: the parent of its variants. Needs item.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the product.

name String! Non-null

Its name, as the catalogue keeps it (not translated).

baseUnit String! Non-null

The unit its stock is counted in.

vatRateCode String! Non-null

The code of its VAT rate.

archivedAt Time Nullable

When it was archived; null while it is in use.

updatedAt Time! Non-null

When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.

variants ProductVariantConnection Nullable

Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a product's variants.

edges [ProductVariantEdge!]! Non-null

The variants with their cursors, the default first.

One variant and its cursor.

View all fields of [ProductVariantEdge!]! →
nodes [ProductVariant!]! Non-null

The same variants without cursors.

One sellable variant of a product: what a document line moves. Needs item.read.

View all fields of [ProductVariant!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query products($first: Int) {
  products(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      code
      name
      baseUnit
      vatRateCode
      archivedAt
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "products": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "code": "example",
          "name": "example",
          "baseUnit": "example",
          "vatRateCode": "example",
          "archivedAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

Inventory

locations

Description

Bins of the named warehouses, by warehouse, code, then id. Needs integration.read and position.read. A warehouse outside the key's warehouse, legal-entity or country scope is left out, as stockCards does. There is no total count.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor.

Arguments
filter LocationFilter! Required
Input fields 5

Every supplied field narrows the result; an explicit empty list matches nothing.

warehouseIds [UUID!]! Required

1 to 50 warehouses.

codes [String!] Optional

Exact codes, up to 250. A code is unique per warehouse and zone, so one code may name several bins.

pickable Boolean Optional

True: bins reservations take from. False: bins nobody picks from.

kinds [LocationKind!] Optional
Accepted values 7
STOCK
RECEIVING
SHIPPING
QUARANTINE
TRANSIT
SCRAP
PRODUCTION
includeArchived Boolean Optional

Default false: archived bins are left out.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [LocationEdge!]! Non-null
Fields 2
cursor String! Non-null
node Location! Non-null
Fields 8

A bin (position) of a warehouse.

id UUID! Non-null
warehouseId UUID! Non-null
code String! Non-null
name String Nullable
kind LocationKind! Non-null
Accepted values 7
STOCK
RECEIVING
SHIPPING
QUARANTINE
TRANSIT
SCRAP
PRODUCTION
pickable Boolean! Non-null

Whether reservations, and so picking, take from this bin.

zoneCode String Nullable

The bin's zone code; null without a zone. Tells apart two bins with one code.

archived Boolean! Non-null
nodes [Location!]! Non-null
Fields 8

A bin (position) of a warehouse.

id UUID! Non-null
warehouseId UUID! Non-null
code String! Non-null
name String Nullable
kind LocationKind! Non-null
Accepted values 7
STOCK
RECEIVING
SHIPPING
QUARANTINE
TRANSIT
SCRAP
PRODUCTION
pickable Boolean! Non-null

Whether reservations, and so picking, take from this bin.

zoneCode String Nullable

The bin's zone code; null without a zone. Tells apart two bins with one code.

archived Boolean! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query locations($filter: LocationFilter!, $first: Int) {
  locations(filter: $filter, first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      warehouseId
      code
      name
      kind
      pickable
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{
  "filter": {"warehouseIds": ["00000000-0000-4000-8000-000000000001"]},
  "first": 10
}
Response
{
  "data": {
    "locations": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "warehouseId": "00000000-0000-4000-8000-000000000001",
          "code": "example",
          "name": "example",
          "kind": "STOCK",
          "pickable": true
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

stockCardChanges

Description

Real changes of stock cards, oldest first, forward from a cursor. Without after the answer is an empty page whose endCursor is the head ("now"): take it before a full export. Records of one card come in version order. warehouseIds and changed narrow on the server; the cursor moves past what they leave out. wait (0–25 s): when nothing is waiting, hold the answer until something is or the time is up. A cursor older than 30 days is VALIDATION with extensions.reason CURSOR_EXPIRED: export again and start without a cursor. Readable about 1–3 s after the stock write. Needs integration.read and stockCard.read.

A forward-only feed, as events: first is required, from 1 to 250; pass pageInfo.endCursor as after while pageInfo.hasNextPage is true, then keep polling with it. There is no last, no before and no total count. Its cursors are its own and bound to the key's organisation: an events cursor or another organisation's is VALIDATION at after. Records of warehouses outside the key's warehouse, legal-entity or country scope are left out silently. warehouseIds (at most 50) keeps the records of those warehouses, changed those with at least one of the figures named changed; an omitted (or null) list matches all, an empty one none. A page is priced at first times one record's selection.

wait is seconds, 0 (the default) to 25; outside is VALIDATION at wait. It waits only with after, and only when the page would be empty with hasNextPage false; it then answers as soon as a record it would show arrives, or with an empty page and an advanced endCursor when the time is up or the server is shutting down -- an empty answer is never an error: poll again with its endCursor. A key holds at most 4 waits open on one server (events' included); a further one waits the lesser of wait and 5 s without watching for records, then answers what is there by then.

Arguments
first Int Optional
after String Optional
warehouseIds [UUID!] Optional
changed [StockFigure!] Optional
Accepted values 6
QUANTITY
RESERVED
RESERVED_BY_SOURCE
AVAILABLE
ADVISED
ON_ORDER
wait Int Optional
Returns

One page of stock card changes.

edges [StockCardChangeEdge!]! Non-null

The records with their cursors, oldest first.

Fields 2

One stock card change and its cursor.

cursor String! Non-null

Resume after this record: pass as after.

node StockCardChange! Non-null
Fields 16

One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.

id ID! Non-null

Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id.

warehouseId UUID! Non-null

The warehouse's id.

variantId UUID! Non-null

The product variant's id.

warehouse Warehouse Nullable

The warehouse. Needs warehouse.read.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
productVariant ProductVariant Nullable

The product variant. Needs item.read.

One sellable variant of a product: what a document line moves. Needs item.read.

View all fields of ProductVariant →
version Int! Non-null

1, 2, 3 … per card, without gaps. Compare with StockCard.version.

occurredAt Time! Non-null
origin StockCardChangeOrigin! Non-null
Accepted values 2
LIVE

After a stock write.

SWEEP

Found by the background check.

quantityChanged Boolean! Non-null
reservedChanged Boolean! Non-null
reservedBySourceChanged Boolean! Non-null
availableChanged Boolean! Non-null
advisedChanged Boolean! Non-null
onOrderChanged Boolean! Non-null
current StockFigures! Non-null

The figures after this change.

A stock card's figures, one number each.

View all fields of StockFigures! →
previous StockFigures Nullable

The figures before this change; null when no earlier figures were known.

A stock card's figures, one number each.

View all fields of StockFigures →
nodes [StockCardChange!]! Non-null

The same records without cursors.

Fields 16

One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.

id ID! Non-null

Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id.

warehouseId UUID! Non-null

The warehouse's id.

variantId UUID! Non-null

The product variant's id.

warehouse Warehouse Nullable

The warehouse. Needs warehouse.read.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

productVariant ProductVariant Nullable

The product variant. Needs item.read.

Fields 12

One sellable variant of a product: what a document line moves. Needs item.read.

id UUID! Non-null

Our id.

sku String! Non-null

Its SKU: unique in the organisation, archived variants included.

selectedOptions [SelectedOption!]! Non-null

The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.

One axis value of a variant: the axis's name and the value's name.

View all fields of [SelectedOption!]! →
isDefault Boolean! Non-null

Whether it is the product's default variant.

archivedAt Time Nullable

When it was archived; null while it is in use.

ean String Nullable

The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.

codes ProductCodeConnection Nullable

Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's codes.

View all fields of ProductCodeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
units ProductUnitConnection Nullable

Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's units.

View all fields of ProductUnitConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
prices ProductPriceConnection Nullable

Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's prices.

View all fields of ProductPriceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
product Product! Non-null

The product it is a variant of.

A product: the parent of its variants. Needs item.read.

View all fields of Product! →
stockCards ProductVariantStockCardConnection Nullable

Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.

Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a product variant's stock cards.

View all fields of ProductVariantStockCardConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
version Int! Non-null

1, 2, 3 … per card, without gaps. Compare with StockCard.version.

occurredAt Time! Non-null
origin StockCardChangeOrigin! Non-null
Accepted values 2
LIVE

After a stock write.

SWEEP

Found by the background check.

quantityChanged Boolean! Non-null
reservedChanged Boolean! Non-null
reservedBySourceChanged Boolean! Non-null
availableChanged Boolean! Non-null
advisedChanged Boolean! Non-null
onOrderChanged Boolean! Non-null
current StockFigures! Non-null

The figures after this change.

Fields 6

A stock card's figures, one number each.

quantity Decimal! Non-null

Physically in the warehouse: what its stock movements sum to.

reserved Decimal! Non-null

Promised to orders, every batch.

reservedBySource [StockReservationBySource!]! Non-null

reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.

How much of a card's reserved quantity belongs to orders of one source.

View all fields of [StockReservationBySource!]! →
available Decimal! Non-null

What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.

advised Decimal! Non-null

On an open advice, not yet received.

onOrder Decimal! Non-null

On a sent purchase order no open advice announces yet; never overlaps advised.

previous StockFigures Nullable

The figures before this change; null when no earlier figures were known.

Fields 6

A stock card's figures, one number each.

quantity Decimal! Non-null

Physically in the warehouse: what its stock movements sum to.

reserved Decimal! Non-null

Promised to orders, every batch.

reservedBySource [StockReservationBySource!]! Non-null

reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.

How much of a card's reserved quantity belongs to orders of one source.

View all fields of [StockReservationBySource!]! →
available Decimal! Non-null

What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.

advised Decimal! Non-null

On an open advice, not yet received.

onOrder Decimal! Non-null

On a sent purchase order no open advice announces yet; never overlaps advised.

pageInfo EventPageInfo! Non-null
Fields 2

A forward-only feed's position.

hasNextPage Boolean! Non-null

More events already wait after endCursor.

endCursor String! Non-null

Where the next call starts. Never null; moves even when the page is empty: keep polling with it.

Example

Query
query stockCardChanges {
  stockCardChanges {
    edges {
      cursor
    }
    nodes {
      id
      warehouseId
      variantId
      version
      occurredAt
      origin
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
Response
{
  "data": {
    "stockCardChanges": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "warehouseId": "00000000-0000-4000-8000-000000000001",
          "variantId": "00000000-0000-4000-8000-000000000001",
          "version": 1,
          "occurredAt": "2026-01-01T00:00:00Z",
          "origin": "LIVE"
        }
      ],
      "pageInfo": {"hasNextPage": true, "endCursor": "example"}
    }
  }
}

stockCards

Description

Stock cards — one variant in one warehouse — with their current figures, by variant then warehouse. Full export: page to the end. After a feed page: variantIds (+ warehouseIds) for the other warehouses of a sum. A variant only on order or advised into a warehouse where it never had stock has no card there yet. Needs integration.read and stockCard.read.

Cards of warehouses outside the key's warehouse, legal-entity or country scope are left out; archived warehouses are included, exactly as warehouses lists them. There is no total count.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor. A page is priced at the number asked times one card's selection.

Arguments
filter StockCardFilter Optional
Input fields 4

Which cards the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

warehouseIds [UUID!] Optional

At most 50.

warehouseCodes [String!] Optional

Exact, at most 50. Needs warehouse.read.

variantIds [UUID!] Optional

At most 250.

skus [String!] Optional

Exact, at most 250. Needs item.read.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of stock cards.

edges [StockCardEdge!]! Non-null

The cards with their cursors, by variant then warehouse.

Fields 2

One stock card and its cursor.

cursor String! Non-null

Where this card sits; pass as after (with first) or before (with last).

node StockCard! Non-null
Fields 6

One variant in one warehouse, with its figures. Needs stockCard.read.

warehouseId UUID! Non-null

The warehouse's id.

variantId UUID! Non-null

The product variant's id.

warehouse Warehouse Nullable

The warehouse. Needs warehouse.read.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
productVariant ProductVariant Nullable

The product variant. Needs item.read.

One sellable variant of a product: what a document line moves. Needs item.read.

View all fields of ProductVariant →
figures StockFigures! Non-null

Its figures now.

A stock card's figures, one number each.

View all fields of StockFigures! →
version Int! Non-null

1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions.

nodes [StockCard!]! Non-null

The same cards without cursors.

Fields 6

One variant in one warehouse, with its figures. Needs stockCard.read.

warehouseId UUID! Non-null

The warehouse's id.

variantId UUID! Non-null

The product variant's id.

warehouse Warehouse Nullable

The warehouse. Needs warehouse.read.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

productVariant ProductVariant Nullable

The product variant. Needs item.read.

Fields 12

One sellable variant of a product: what a document line moves. Needs item.read.

id UUID! Non-null

Our id.

sku String! Non-null

Its SKU: unique in the organisation, archived variants included.

selectedOptions [SelectedOption!]! Non-null

The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.

One axis value of a variant: the axis's name and the value's name.

View all fields of [SelectedOption!]! →
isDefault Boolean! Non-null

Whether it is the product's default variant.

archivedAt Time Nullable

When it was archived; null while it is in use.

ean String Nullable

The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.

codes ProductCodeConnection Nullable

Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's codes.

View all fields of ProductCodeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
units ProductUnitConnection Nullable

Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's units.

View all fields of ProductUnitConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
prices ProductPriceConnection Nullable

Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a variant's prices.

View all fields of ProductPriceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
product Product! Non-null

The product it is a variant of.

A product: the parent of its variants. Needs item.read.

View all fields of Product! →
stockCards ProductVariantStockCardConnection Nullable

Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.

Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a product variant's stock cards.

View all fields of ProductVariantStockCardConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
figures StockFigures! Non-null

Its figures now.

Fields 6

A stock card's figures, one number each.

quantity Decimal! Non-null

Physically in the warehouse: what its stock movements sum to.

reserved Decimal! Non-null

Promised to orders, every batch.

reservedBySource [StockReservationBySource!]! Non-null

reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.

How much of a card's reserved quantity belongs to orders of one source.

View all fields of [StockReservationBySource!]! →
available Decimal! Non-null

What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.

advised Decimal! Non-null

On an open advice, not yet received.

onOrder Decimal! Non-null

On a sent purchase order no open advice announces yet; never overlaps advised.

version Int! Non-null

1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query stockCards($first: Int) {
  stockCards(first: $first) {
    edges {
      cursor
    }
    nodes {
      warehouseId
      variantId
      version
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "stockCards": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "warehouseId": "00000000-0000-4000-8000-000000000001",
          "variantId": "00000000-0000-4000-8000-000000000001",
          "version": 1
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

stockQuants

Description

What lies in which bin of the named warehouses: one row per variant, bin and lot with stock, in base units, by bin, variant, then row. Needs integration.read, stockCard.read and position.read; lot and lotStatus also lot.read (without it null with FORBIDDEN_ROLE at their path, the rest served). Lots are returned whatever their status: read lotStatus and lot.expiresAt. Scope as stockCards. There is no total count.

Pass exactly one of first or last, from 1 to 250, as locations.

Arguments
filter StockQuantFilter! Required
Input fields 4

Every supplied field narrows the result; an explicit empty list matches nothing.

warehouseIds [UUID!]! Required

1 to 50 warehouses.

variantIds [UUID!] Optional

Up to 250 variants.

locationIds [UUID!] Optional

Up to 250 bins.

pickable Boolean Optional

Narrows by the bin's pickable flag.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [StockQuantEdge!]! Non-null
Fields 2
cursor String! Non-null
node StockQuant! Non-null
Fields 13

What one bin holds of one variant (and one lot, when the item tracks lots), in base units.

variantId UUID! Non-null
warehouseId UUID! Non-null
locationId UUID! Non-null
locationCode String! Non-null
pickable Boolean! Non-null
lotId UUID Nullable
lot Lot Nullable

The lot; null without one. Needs lot.read.

The batch or serial number of a stock document's line.

View all fields of Lot →
lotStatus LotStatus Nullable

The lot's status; null without a lot. Needs lot.read.

Accepted values 3
RELEASED
QUARANTINE
BLOCKED
quantity Decimal! Non-null
reserved Decimal! Non-null

Reserved for orders on this bin and lot.

free Decimal! Non-null

max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity.

plannedOut Decimal! Non-null

What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing.

unplanned Decimal! Non-null

What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods.

nodes [StockQuant!]! Non-null
Fields 13

What one bin holds of one variant (and one lot, when the item tracks lots), in base units.

variantId UUID! Non-null
warehouseId UUID! Non-null
locationId UUID! Non-null
locationCode String! Non-null
pickable Boolean! Non-null
lotId UUID Nullable
lot Lot Nullable

The lot; null without one. Needs lot.read.

Fields 3

The batch or serial number of a stock document's line.

number String Nullable

The batch number; null for a serial or an expiry-only lot.

serialNumber String Nullable

The serial number; null for a batch.

expiresAt Time Nullable

When the lot expires; null when it does not.

lotStatus LotStatus Nullable

The lot's status; null without a lot. Needs lot.read.

Accepted values 3
RELEASED
QUARANTINE
BLOCKED
quantity Decimal! Non-null
reserved Decimal! Non-null

Reserved for orders on this bin and lot.

free Decimal! Non-null

max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity.

plannedOut Decimal! Non-null

What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing.

unplanned Decimal! Non-null

What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods.

pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query stockQuants($filter: StockQuantFilter!, $first: Int) {
  stockQuants(filter: $filter, first: $first) {
    edges {
      cursor
    }
    nodes {
      variantId
      warehouseId
      locationId
      locationCode
      pickable
      lotId
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{
  "filter": {"warehouseIds": ["00000000-0000-4000-8000-000000000001"]},
  "first": 10
}
Response
{
  "data": {
    "stockQuants": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "variantId": "00000000-0000-4000-8000-000000000001",
          "warehouseId": "00000000-0000-4000-8000-000000000001",
          "locationId": "00000000-0000-4000-8000-000000000001",
          "locationCode": "example",
          "pickable": true,
          "lotId": "00000000-0000-4000-8000-000000000001"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

warehouses

Description

Warehouses the key may read, archived included, by code then id. Needs integration.read and warehouse.read. Warehouses outside the key's warehouse, legal-entity or country scope are left out. There is no total count.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the last page. Every edge carries its own cursor. A page is priced at the number asked times one warehouse's selection.

Arguments
first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of warehouses.

edges [WarehouseEdge!]! Non-null

The warehouses with their cursors, by code.

Fields 2

One warehouse and its cursor.

cursor String! Non-null

Where this warehouse sits; pass as after (with first) or before (with last).

node Warehouse! Non-null
Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

nodes [Warehouse!]! Non-null

The same warehouses without cursors.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query warehouses($first: Int) {
  warehouses(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      code
      name
      archivedAt
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "warehouses": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "code": "example",
          "name": "example",
          "archivedAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

Invoices

invoice

Description

One invoice. Null when there is none or the key may not see it. Needs invoice.read.

Arguments
ref InvoiceRefInput! Required
Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

Returns

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
edges [InvoiceLineEdge!]! Non-null
Fields 2
nodes [InvoiceLine!]! Non-null
Fields 23
id UUID! Non-null
lineNo Int! Non-null
kind InvoiceLineKind! Non-null
Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Non-null
code String Nullable
barcode String Nullable
manufacturerCode String Nullable
quantity Decimal Nullable
unit String Nullable
unitPriceNet Decimal Nullable
unitPriceGross Decimal Nullable
pricesIncludeVat Boolean! Non-null
vatPercent Decimal Nullable
discountPercent Decimal Nullable
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
note String Nullable
externalId String Nullable
variantId UUID Nullable
variantMatch String Nullable

EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).

advanceInvoiceId UUID Nullable
salesOrderLineId UUID Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
edges [InvoiceVatRowEdge!]! Non-null
Fields 2
nodes [InvoiceVatRow!]! Non-null
Fields 7
vatPercent Decimal! Non-null
base Decimal! Non-null
vat Decimal! Non-null
gross Decimal! Non-null
baseHome Decimal Nullable
vatHome Decimal Nullable
grossHome Decimal Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
nodes [InvoiceSettlement!]! Non-null
Fields 6
id UUID! Non-null
kind InvoiceSettlementKind! Non-null
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoiceId UUID Nullable
counterNumber String Nullable
amount Decimal! Non-null
settledOn Time Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
edges [InvoiceLinkEdge!]! Non-null
Fields 2
nodes [InvoiceLink!]! Non-null
Fields 5
id UUID! Non-null
type InvoiceLinkType! Non-null
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Non-null

Our id of the order, purchase order, receipt, issue or consignment.

origin InvoiceLinkOrigin! Non-null
Accepted values 3
SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.

linkedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null

Example

Query
query invoice($ref: InvoiceRefInput!) {
  invoice(ref: $ref) {
    id
    direction
    kind
    status
    failureReason
    source
    sourceDocumentType
    sourceChangedAt
    syncedAt
    cancelled
    number
    variableSymbol
    constantSymbol
    specificSymbol
    supplierNumber
    orderNumber
    issueDate
    taxPointDate
    dueDate
    receivedDate
    vatClaimDate
    legalEntityId
    legalEntityMatch
    partnerId
    partnerMatch
    partnerEditable
    seller {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    buyer {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    delivery {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    paymentMethod
    paymentMethodName
    bankAccountNumber
    bankCode
    bankName
    iban
    swift
    currencyCode
    exchangeRate
    exchangeRateAmount
    homeCurrencyCode
    textBeforeItems
    textAfterItems
    printedNote
    vatNote
    reverseCharge
    oss
    totalNet
    totalVat
    totalGross
    rounding
    advancesDeducted
    amountDue
    totalNetHome
    totalVatHome
    totalGrossHome
    paymentStatus
    paidAmount
    remainingAmount
    paidAt
    correctsInvoiceId
    correctedNumber
    correctedIssueDate
    correctedTaxPointDate
    correctionReason
    internalNote
    lines(first: 10) {
      totalCount
    }
    vatSummary(first: 10) {
      totalCount
    }
    settlements(first: 10) {
      totalCount
    }
    links(first: 10) {
      totalCount
    }
    createdAt
    updatedAt
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "invoice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "direction": "ISSUED",
      "kind": "INVOICE",
      "status": "PENDING",
      "failureReason": "example",
      "source": "example",
      "sourceDocumentType": "example",
      "sourceChangedAt": "2026-01-01T00:00:00Z",
      "syncedAt": "2026-01-01T00:00:00Z",
      "cancelled": true,
      "number": "example",
      "variableSymbol": "example",
      "constantSymbol": "example",
      "specificSymbol": "example",
      "supplierNumber": "example",
      "orderNumber": "example",
      "issueDate": "2026-01-01T00:00:00Z",
      "taxPointDate": "2026-01-01T00:00:00Z",
      "dueDate": "2026-01-01T00:00:00Z",
      "receivedDate": "2026-01-01T00:00:00Z",
      "vatClaimDate": "2026-01-01T00:00:00Z",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "legalEntityMatch": "EXPLICIT",
      "partnerId": "00000000-0000-4000-8000-000000000001",
      "partnerMatch": "EXPLICIT",
      "partnerEditable": true,
      "seller": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "buyer": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "delivery": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "paymentMethod": "BANK_TRANSFER",
      "paymentMethodName": "example",
      "bankAccountNumber": "example",
      "bankCode": "example",
      "bankName": "example",
      "iban": "example",
      "swift": "example",
      "currencyCode": "example",
      "exchangeRate": "10.00",
      "exchangeRateAmount": 1,
      "homeCurrencyCode": "example",
      "textBeforeItems": "example",
      "textAfterItems": "example",
      "printedNote": "example",
      "vatNote": "example",
      "reverseCharge": true,
      "oss": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "rounding": "10.00",
      "advancesDeducted": "10.00",
      "amountDue": "10.00",
      "totalNetHome": "10.00",
      "totalVatHome": "10.00",
      "totalGrossHome": "10.00",
      "paymentStatus": "UNPAID",
      "paidAmount": "10.00",
      "remainingAmount": "10.00",
      "paidAt": "2026-01-01T00:00:00Z",
      "correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
      "correctedNumber": "example",
      "correctedIssueDate": "2026-01-01T00:00:00Z",
      "correctedTaxPointDate": "2026-01-01T00:00:00Z",
      "correctionReason": "example",
      "internalNote": "example",
      "lines": {"totalCount": 1},
      "vatSummary": {"totalCount": 1},
      "settlements": {"totalCount": 1},
      "links": {"totalCount": 1},
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

invoices

Description

The invoices the key may read, newest issued first: a connection, paged with first/after or last/before (at most 250). Needs invoice.read.

Arguments
filter InvoiceFilter Optional
Input fields 13

Which invoices invoices returns. Every field narrows.

direction InvoiceDirection Optional
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kinds [InvoiceKind!] Optional
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

statuses [InvoiceStatus!] Optional
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

paymentStatuses [InvoicePaymentStatus!] Optional
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

overdue Boolean Optional
partnerId UUID Optional
legalEntityId UUID Optional
salesOrderId UUID Optional
issueDateFrom Time Optional
issueDateTo Time Optional
dueDateFrom Time Optional
dueDateTo Time Optional
search String Optional
first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [InvoiceEdge!]! Non-null
Fields 2
cursor String! Non-null
node Invoice! Non-null
Fields 71

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
buyer InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
delivery InvoiceParty! Non-null

One side of the invoice as the accounting system printed it.

View all fields of InvoiceParty! →
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

View all fields of InvoiceLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

View all fields of InvoiceVatRowConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
View all fields of InvoiceSettlementConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
View all fields of InvoiceLinkConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null
nodes [Invoice!]! Non-null
Fields 71

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query invoices($first: Int) {
  invoices(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      direction
      kind
      status
      failureReason
      source
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "invoices": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "direction": "ISSUED",
          "kind": "INVOICE",
          "status": "PENDING",
          "failureReason": "example",
          "source": "example"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

linkInvoice

Description

Links the invoice to a document the key may see. Needs invoice.write.

Arguments
ref InvoiceRefInput! Required
Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

input InvoiceLinkInput! Required
Input fields 2
type InvoiceLinkType! Required
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Required

Our id of the order, purchase order or receipt.

Returns

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
edges [InvoiceLineEdge!]! Non-null
Fields 2
nodes [InvoiceLine!]! Non-null
Fields 23
id UUID! Non-null
lineNo Int! Non-null
kind InvoiceLineKind! Non-null
Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Non-null
code String Nullable
barcode String Nullable
manufacturerCode String Nullable
quantity Decimal Nullable
unit String Nullable
unitPriceNet Decimal Nullable
unitPriceGross Decimal Nullable
pricesIncludeVat Boolean! Non-null
vatPercent Decimal Nullable
discountPercent Decimal Nullable
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
note String Nullable
externalId String Nullable
variantId UUID Nullable
variantMatch String Nullable

EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).

advanceInvoiceId UUID Nullable
salesOrderLineId UUID Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
edges [InvoiceVatRowEdge!]! Non-null
Fields 2
nodes [InvoiceVatRow!]! Non-null
Fields 7
vatPercent Decimal! Non-null
base Decimal! Non-null
vat Decimal! Non-null
gross Decimal! Non-null
baseHome Decimal Nullable
vatHome Decimal Nullable
grossHome Decimal Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
nodes [InvoiceSettlement!]! Non-null
Fields 6
id UUID! Non-null
kind InvoiceSettlementKind! Non-null
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoiceId UUID Nullable
counterNumber String Nullable
amount Decimal! Non-null
settledOn Time Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
edges [InvoiceLinkEdge!]! Non-null
Fields 2
nodes [InvoiceLink!]! Non-null
Fields 5
id UUID! Non-null
type InvoiceLinkType! Non-null
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Non-null

Our id of the order, purchase order, receipt, issue or consignment.

origin InvoiceLinkOrigin! Non-null
Accepted values 3
SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.

linkedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation linkInvoice($ref: InvoiceRefInput!, $input: InvoiceLinkInput!) {
  linkInvoice(ref: $ref, input: $input) {
    id
    direction
    kind
    status
    failureReason
    source
    sourceDocumentType
    sourceChangedAt
    syncedAt
    cancelled
    number
    variableSymbol
    constantSymbol
    specificSymbol
    supplierNumber
    orderNumber
    issueDate
    taxPointDate
    dueDate
    receivedDate
    vatClaimDate
    legalEntityId
    legalEntityMatch
    partnerId
    partnerMatch
    partnerEditable
    seller {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    buyer {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    delivery {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    paymentMethod
    paymentMethodName
    bankAccountNumber
    bankCode
    bankName
    iban
    swift
    currencyCode
    exchangeRate
    exchangeRateAmount
    homeCurrencyCode
    textBeforeItems
    textAfterItems
    printedNote
    vatNote
    reverseCharge
    oss
    totalNet
    totalVat
    totalGross
    rounding
    advancesDeducted
    amountDue
    totalNetHome
    totalVatHome
    totalGrossHome
    paymentStatus
    paidAmount
    remainingAmount
    paidAt
    correctsInvoiceId
    correctedNumber
    correctedIssueDate
    correctedTaxPointDate
    correctionReason
    internalNote
    lines(first: 10) {
      totalCount
    }
    vatSummary(first: 10) {
      totalCount
    }
    settlements(first: 10) {
      totalCount
    }
    links(first: 10) {
      totalCount
    }
    createdAt
    updatedAt
  }
}
Variables
{
  "ref": {"id": "00000000-0000-4000-8000-000000000001"},
  "input": {
    "type": "SALES_ORDER",
    "targetId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "linkInvoice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "direction": "ISSUED",
      "kind": "INVOICE",
      "status": "PENDING",
      "failureReason": "example",
      "source": "example",
      "sourceDocumentType": "example",
      "sourceChangedAt": "2026-01-01T00:00:00Z",
      "syncedAt": "2026-01-01T00:00:00Z",
      "cancelled": true,
      "number": "example",
      "variableSymbol": "example",
      "constantSymbol": "example",
      "specificSymbol": "example",
      "supplierNumber": "example",
      "orderNumber": "example",
      "issueDate": "2026-01-01T00:00:00Z",
      "taxPointDate": "2026-01-01T00:00:00Z",
      "dueDate": "2026-01-01T00:00:00Z",
      "receivedDate": "2026-01-01T00:00:00Z",
      "vatClaimDate": "2026-01-01T00:00:00Z",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "legalEntityMatch": "EXPLICIT",
      "partnerId": "00000000-0000-4000-8000-000000000001",
      "partnerMatch": "EXPLICIT",
      "partnerEditable": true,
      "seller": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "buyer": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "delivery": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "paymentMethod": "BANK_TRANSFER",
      "paymentMethodName": "example",
      "bankAccountNumber": "example",
      "bankCode": "example",
      "bankName": "example",
      "iban": "example",
      "swift": "example",
      "currencyCode": "example",
      "exchangeRate": "10.00",
      "exchangeRateAmount": 1,
      "homeCurrencyCode": "example",
      "textBeforeItems": "example",
      "textAfterItems": "example",
      "printedNote": "example",
      "vatNote": "example",
      "reverseCharge": true,
      "oss": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "rounding": "10.00",
      "advancesDeducted": "10.00",
      "amountDue": "10.00",
      "totalNetHome": "10.00",
      "totalVatHome": "10.00",
      "totalGrossHome": "10.00",
      "paymentStatus": "UNPAID",
      "paidAmount": "10.00",
      "remainingAmount": "10.00",
      "paidAt": "2026-01-01T00:00:00Z",
      "correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
      "correctedNumber": "example",
      "correctedIssueDate": "2026-01-01T00:00:00Z",
      "correctedTaxPointDate": "2026-01-01T00:00:00Z",
      "correctionReason": "example",
      "internalNote": "example",
      "lines": {"totalCount": 1},
      "vatSummary": {"totalCount": 1},
      "settlements": {"totalCount": 1},
      "links": {"totalCount": 1},
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

removeInvoice

Description

The document was deleted in the accounting system: REMOVED, kept as evidence. Needs invoice.sync.

Arguments
input RemoveInvoiceInput! Required
Input fields 3
source String! Required
externalId String! Required
sourceChangedAt Time Optional
Returns

What syncInvoice or removeInvoice did.

invoice Invoice! Non-null
Fields 71

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null
changed Boolean! Non-null

False when nothing was written: the same document again, or a STALE one.

reason InvoiceSyncReason Nullable
Accepted values 1
STALE

Its sourceChangedAt is older than the one the ERP holds.

warnings [ApiWarning!]! Non-null

What the match did that the caller should know: a partner found by IČO, a line no code matched.

Fields 3

Something the call did that the caller should know about, though it did not fail.

code String! Non-null

A fixed code, e.g. PRODUCT_NOT_FOUND.

message String! Non-null

What happened, for a person.

field String Nullable

The input it concerns, e.g. items[2].product. Null when none.

Example

Mutation
mutation removeInvoice($input: RemoveInvoiceInput!) {
  removeInvoice(input: $input) {
    invoice {
      id
      direction
      kind
      status
      failureReason
      source
    }
    changed
    reason
    warnings {
      code
      message
      field
    }
  }
}
Variables
{"input": {"source": "example", "externalId": "example"}}
Response
{
  "data": {
    "removeInvoice": {
      "invoice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "direction": "ISSUED",
        "kind": "INVOICE",
        "status": "PENDING",
        "failureReason": "example",
        "source": "example"
      },
      "changed": true,
      "reason": "STALE",
      "warnings": [
        {"code": "example", "message": "example", "field": "example"}
      ]
    }
  }
}

setInvoicePartner

Description

Sets the invoice's partner by hand -- only while none was found or one was chosen by hand (partnerEditable); otherwise CONFLICT with extensions.reason PARTNER_LOCKED. Needs invoice.write.

Arguments
ref InvoiceRefInput! Required
Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

input SetInvoicePartnerInput! Required
Input fields 1
partnerId UUID Optional

Our id of the partner; null clears it.

Returns

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
edges [InvoiceLineEdge!]! Non-null
Fields 2
nodes [InvoiceLine!]! Non-null
Fields 23
id UUID! Non-null
lineNo Int! Non-null
kind InvoiceLineKind! Non-null
Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Non-null
code String Nullable
barcode String Nullable
manufacturerCode String Nullable
quantity Decimal Nullable
unit String Nullable
unitPriceNet Decimal Nullable
unitPriceGross Decimal Nullable
pricesIncludeVat Boolean! Non-null
vatPercent Decimal Nullable
discountPercent Decimal Nullable
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
note String Nullable
externalId String Nullable
variantId UUID Nullable
variantMatch String Nullable

EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).

advanceInvoiceId UUID Nullable
salesOrderLineId UUID Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
edges [InvoiceVatRowEdge!]! Non-null
Fields 2
nodes [InvoiceVatRow!]! Non-null
Fields 7
vatPercent Decimal! Non-null
base Decimal! Non-null
vat Decimal! Non-null
gross Decimal! Non-null
baseHome Decimal Nullable
vatHome Decimal Nullable
grossHome Decimal Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
nodes [InvoiceSettlement!]! Non-null
Fields 6
id UUID! Non-null
kind InvoiceSettlementKind! Non-null
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoiceId UUID Nullable
counterNumber String Nullable
amount Decimal! Non-null
settledOn Time Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
edges [InvoiceLinkEdge!]! Non-null
Fields 2
nodes [InvoiceLink!]! Non-null
Fields 5
id UUID! Non-null
type InvoiceLinkType! Non-null
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Non-null

Our id of the order, purchase order, receipt, issue or consignment.

origin InvoiceLinkOrigin! Non-null
Accepted values 3
SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.

linkedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation setInvoicePartner($ref: InvoiceRefInput!, $input: SetInvoicePartnerInput!) {
  setInvoicePartner(ref: $ref, input: $input) {
    id
    direction
    kind
    status
    failureReason
    source
    sourceDocumentType
    sourceChangedAt
    syncedAt
    cancelled
    number
    variableSymbol
    constantSymbol
    specificSymbol
    supplierNumber
    orderNumber
    issueDate
    taxPointDate
    dueDate
    receivedDate
    vatClaimDate
    legalEntityId
    legalEntityMatch
    partnerId
    partnerMatch
    partnerEditable
    seller {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    buyer {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    delivery {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    paymentMethod
    paymentMethodName
    bankAccountNumber
    bankCode
    bankName
    iban
    swift
    currencyCode
    exchangeRate
    exchangeRateAmount
    homeCurrencyCode
    textBeforeItems
    textAfterItems
    printedNote
    vatNote
    reverseCharge
    oss
    totalNet
    totalVat
    totalGross
    rounding
    advancesDeducted
    amountDue
    totalNetHome
    totalVatHome
    totalGrossHome
    paymentStatus
    paidAmount
    remainingAmount
    paidAt
    correctsInvoiceId
    correctedNumber
    correctedIssueDate
    correctedTaxPointDate
    correctionReason
    internalNote
    lines(first: 10) {
      totalCount
    }
    vatSummary(first: 10) {
      totalCount
    }
    settlements(first: 10) {
      totalCount
    }
    links(first: 10) {
      totalCount
    }
    createdAt
    updatedAt
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "input": {}}
Response
{
  "data": {
    "setInvoicePartner": {
      "id": "00000000-0000-4000-8000-000000000001",
      "direction": "ISSUED",
      "kind": "INVOICE",
      "status": "PENDING",
      "failureReason": "example",
      "source": "example",
      "sourceDocumentType": "example",
      "sourceChangedAt": "2026-01-01T00:00:00Z",
      "syncedAt": "2026-01-01T00:00:00Z",
      "cancelled": true,
      "number": "example",
      "variableSymbol": "example",
      "constantSymbol": "example",
      "specificSymbol": "example",
      "supplierNumber": "example",
      "orderNumber": "example",
      "issueDate": "2026-01-01T00:00:00Z",
      "taxPointDate": "2026-01-01T00:00:00Z",
      "dueDate": "2026-01-01T00:00:00Z",
      "receivedDate": "2026-01-01T00:00:00Z",
      "vatClaimDate": "2026-01-01T00:00:00Z",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "legalEntityMatch": "EXPLICIT",
      "partnerId": "00000000-0000-4000-8000-000000000001",
      "partnerMatch": "EXPLICIT",
      "partnerEditable": true,
      "seller": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "buyer": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "delivery": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "paymentMethod": "BANK_TRANSFER",
      "paymentMethodName": "example",
      "bankAccountNumber": "example",
      "bankCode": "example",
      "bankName": "example",
      "iban": "example",
      "swift": "example",
      "currencyCode": "example",
      "exchangeRate": "10.00",
      "exchangeRateAmount": 1,
      "homeCurrencyCode": "example",
      "textBeforeItems": "example",
      "textAfterItems": "example",
      "printedNote": "example",
      "vatNote": "example",
      "reverseCharge": true,
      "oss": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "rounding": "10.00",
      "advancesDeducted": "10.00",
      "amountDue": "10.00",
      "totalNetHome": "10.00",
      "totalVatHome": "10.00",
      "totalGrossHome": "10.00",
      "paymentStatus": "UNPAID",
      "paidAmount": "10.00",
      "remainingAmount": "10.00",
      "paidAt": "2026-01-01T00:00:00Z",
      "correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
      "correctedNumber": "example",
      "correctedIssueDate": "2026-01-01T00:00:00Z",
      "correctedTaxPointDate": "2026-01-01T00:00:00Z",
      "correctionReason": "example",
      "internalNote": "example",
      "lines": {"totalCount": 1},
      "vatSummary": {"totalCount": 1},
      "settlements": {"totalCount": 1},
      "links": {"totalCount": 1},
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

syncInvoice

Description

Writes the accounting system's document into the ERP: creates it the first time, replaces every field below, the lines, the VAT summary and the settlements after. Needs invoice.sync. The internal note and the tags are never touched. kind and direction cannot change (CONFLICT KIND_CHANGED).

Arguments
input SyncInvoiceInput! Required
Input fields 62

The whole document, as the accounting system holds it now.

source String! Required

The code of the accounting system's source; it must be of kind ERP.

externalId String! Required

The accounting system's own id of the document.

sourceChangedAt Time Optional

When the document last changed in the accounting system; an older write is STALE.

direction InvoiceDirection! Required
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Required
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

legalEntity String Optional

The company it belongs to, by code. Omitted: the company whose IČO our side of the invoice prints (the seller of an issued invoice, the buyer of a received one), else the default.

partner InvoiceRecordRefInput Optional

The partner, when the integration knows it. Omitted, or an externalId nothing holds yet: found by the party's IČO, then e-mail (the oldest of several, with a warning), else created from the party -- the buyer of an issued invoice, the seller of a received one. A partner already on the invoice stays.

Input fields 3

Names a partner or a sales order: our id, or its id in a source (the sync's own by default).

id UUID Optional
source String Optional
externalId String Optional
sourceDocumentType String Optional
cancelled Boolean Optional

Default: false

number String! Required
variableSymbol String Optional
constantSymbol String Optional
specificSymbol String Optional
supplierNumber String Optional
orderNumber String Optional
issueDate Time Optional
taxPointDate Time Optional
dueDate Time Optional
receivedDate Time Optional
vatClaimDate Time Optional
seller InvoicePartyInput Optional
Input fields 11
name String Optional
street String Optional
city String Optional
postalCode String Optional
countryCode String Optional
registrationId String Optional
taxId String Optional
vatId String Optional
email String Optional
phone String Optional
web String Optional
buyer InvoicePartyInput Optional
Input fields 11
name String Optional
street String Optional
city String Optional
postalCode String Optional
countryCode String Optional
registrationId String Optional
taxId String Optional
vatId String Optional
email String Optional
phone String Optional
web String Optional
delivery InvoicePartyInput Optional
Input fields 11
name String Optional
street String Optional
city String Optional
postalCode String Optional
countryCode String Optional
registrationId String Optional
taxId String Optional
vatId String Optional
email String Optional
phone String Optional
web String Optional
paymentMethod InvoicePaymentMethod Optional
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Optional
bankAccountNumber String Optional
bankCode String Optional
bankName String Optional
iban String Optional
swift String Optional
currencyCode String! Required
exchangeRate Decimal Optional
exchangeRateAmount Int Optional
homeCurrencyCode String Optional

The home currency; the document's currency when omitted.

textBeforeItems String Optional
textAfterItems String Optional
printedNote String Optional
vatNote String Optional

The statutory VAT wording printed on the document ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH"); omitted clears it, like the other header texts.

reverseCharge Boolean Optional

Default: false

oss Boolean Optional

Default: false

totalNet Decimal! Required
totalVat Decimal! Required
totalGross Decimal! Required
rounding Decimal Optional
advancesDeducted Decimal Optional
amountDue Decimal! Required
totalNetHome Decimal Optional
totalVatHome Decimal Optional
totalGrossHome Decimal Optional
paymentStatus InvoicePaymentStatus Optional

Default: UNKNOWN

Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Optional

Null when the accounting system does not say.

remainingAmount Decimal Optional
paidAt Time Optional
correctsInvoice InvoiceRefInput Optional

On a credit note: the invoice it corrects. Unknown stays null; correctedNumber is kept.

Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

correctedNumber String Optional
correctedIssueDate Time Optional
correctedTaxPointDate Time Optional
correctionReason String Optional
lines [InvoiceLineInput!] Optional

Replaces every line.

Input fields 21
lineNo Int Optional

Unique within the invoice; the line's position when omitted.

kind InvoiceLineKind Optional

Default: ITEM

Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Required
code String Optional

The code the line names its goods by: the supplier's (received) or customer's (issued) code, or our SKU.

barcode String Optional

EAN/GTIN.

manufacturerCode String Optional

The maker's part number.

quantity Decimal Optional
unit String Optional
unitPriceNet Decimal Optional
unitPriceGross Decimal Optional
pricesIncludeVat Boolean Optional

Default: false

vatPercent Decimal Optional
discountPercent Decimal Optional
totalNet Decimal! Required
totalVat Decimal! Required
totalGross Decimal! Required
note String Optional
externalId String Optional
variantId UUID Optional

Our id of the product variant. Without it the line is matched by code, barcode and manufacturer code.

advanceInvoice InvoiceRefInput Optional

On ADVANCE_DEDUCTION: the deducted advance. Unknown stays null.

Names one invoice: either id, or source together with externalId -- never both.

View all fields of InvoiceRefInput →
salesOrderLineId UUID Optional
vatSummary [InvoiceVatRowInput!] Optional

Replaces the VAT summary.

Input fields 7
vatPercent Decimal! Required
base Decimal! Required
vat Decimal! Required
gross Decimal! Required
baseHome Decimal Optional
vatHome Decimal Optional
grossHome Decimal Optional
settlements [InvoiceSettlementInput!] Optional

Replaces the settlements.

Input fields 5
kind InvoiceSettlementKind! Required
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoice InvoiceRefInput Optional

The advance or credit note; unknown stays null and counterNumber is kept.

Names one invoice: either id, or source together with externalId -- never both.

View all fields of InvoiceRefInput →
counterNumber String Optional
amount Decimal! Required
settledOn Time Optional
links [InvoiceLinkTargetInput!] Optional

Added, never removed.

Input fields 2
type InvoiceLinkType! Required
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

ref InvoiceRecordRefInput! Required

A sales order by id or by its source id; a purchase order or a receipt by our id.

Names a partner or a sales order: our id, or its id in a source (the sync's own by default).

View all fields of InvoiceRecordRefInput! →
Returns

What syncInvoice or removeInvoice did.

invoice Invoice! Non-null
Fields 71

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null
changed Boolean! Non-null

False when nothing was written: the same document again, or a STALE one.

reason InvoiceSyncReason Nullable
Accepted values 1
STALE

Its sourceChangedAt is older than the one the ERP holds.

warnings [ApiWarning!]! Non-null

What the match did that the caller should know: a partner found by IČO, a line no code matched.

Fields 3

Something the call did that the caller should know about, though it did not fail.

code String! Non-null

A fixed code, e.g. PRODUCT_NOT_FOUND.

message String! Non-null

What happened, for a person.

field String Nullable

The input it concerns, e.g. items[2].product. Null when none.

Example

Mutation
mutation syncInvoice($input: SyncInvoiceInput!) {
  syncInvoice(input: $input) {
    invoice {
      id
      direction
      kind
      status
      failureReason
      source
    }
    changed
    reason
    warnings {
      code
      message
      field
    }
  }
}
Variables
{
  "input": {
    "source": "example",
    "externalId": "example",
    "direction": "ISSUED",
    "kind": "INVOICE",
    "number": "example",
    "currencyCode": "example",
    "totalNet": "10.00",
    "totalVat": "10.00",
    "totalGross": "10.00",
    "amountDue": "10.00"
  }
}
Response
{
  "data": {
    "syncInvoice": {
      "invoice": {
        "id": "00000000-0000-4000-8000-000000000001",
        "direction": "ISSUED",
        "kind": "INVOICE",
        "status": "PENDING",
        "failureReason": "example",
        "source": "example"
      },
      "changed": true,
      "reason": "STALE",
      "warnings": [
        {"code": "example", "message": "example", "field": "example"}
      ]
    }
  }
}

unlinkInvoice

Arguments
ref InvoiceRefInput! Required
Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

input InvoiceLinkInput! Required
Input fields 2
type InvoiceLinkType! Required
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Required

Our id of the order, purchase order or receipt.

Returns

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
edges [InvoiceLineEdge!]! Non-null
Fields 2
nodes [InvoiceLine!]! Non-null
Fields 23
id UUID! Non-null
lineNo Int! Non-null
kind InvoiceLineKind! Non-null
Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Non-null
code String Nullable
barcode String Nullable
manufacturerCode String Nullable
quantity Decimal Nullable
unit String Nullable
unitPriceNet Decimal Nullable
unitPriceGross Decimal Nullable
pricesIncludeVat Boolean! Non-null
vatPercent Decimal Nullable
discountPercent Decimal Nullable
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
note String Nullable
externalId String Nullable
variantId UUID Nullable
variantMatch String Nullable

EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).

advanceInvoiceId UUID Nullable
salesOrderLineId UUID Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
edges [InvoiceVatRowEdge!]! Non-null
Fields 2
nodes [InvoiceVatRow!]! Non-null
Fields 7
vatPercent Decimal! Non-null
base Decimal! Non-null
vat Decimal! Non-null
gross Decimal! Non-null
baseHome Decimal Nullable
vatHome Decimal Nullable
grossHome Decimal Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
nodes [InvoiceSettlement!]! Non-null
Fields 6
id UUID! Non-null
kind InvoiceSettlementKind! Non-null
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoiceId UUID Nullable
counterNumber String Nullable
amount Decimal! Non-null
settledOn Time Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
edges [InvoiceLinkEdge!]! Non-null
Fields 2
nodes [InvoiceLink!]! Non-null
Fields 5
id UUID! Non-null
type InvoiceLinkType! Non-null
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Non-null

Our id of the order, purchase order, receipt, issue or consignment.

origin InvoiceLinkOrigin! Non-null
Accepted values 3
SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.

linkedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation unlinkInvoice($ref: InvoiceRefInput!, $input: InvoiceLinkInput!) {
  unlinkInvoice(ref: $ref, input: $input) {
    id
    direction
    kind
    status
    failureReason
    source
    sourceDocumentType
    sourceChangedAt
    syncedAt
    cancelled
    number
    variableSymbol
    constantSymbol
    specificSymbol
    supplierNumber
    orderNumber
    issueDate
    taxPointDate
    dueDate
    receivedDate
    vatClaimDate
    legalEntityId
    legalEntityMatch
    partnerId
    partnerMatch
    partnerEditable
    seller {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    buyer {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    delivery {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    paymentMethod
    paymentMethodName
    bankAccountNumber
    bankCode
    bankName
    iban
    swift
    currencyCode
    exchangeRate
    exchangeRateAmount
    homeCurrencyCode
    textBeforeItems
    textAfterItems
    printedNote
    vatNote
    reverseCharge
    oss
    totalNet
    totalVat
    totalGross
    rounding
    advancesDeducted
    amountDue
    totalNetHome
    totalVatHome
    totalGrossHome
    paymentStatus
    paidAmount
    remainingAmount
    paidAt
    correctsInvoiceId
    correctedNumber
    correctedIssueDate
    correctedTaxPointDate
    correctionReason
    internalNote
    lines(first: 10) {
      totalCount
    }
    vatSummary(first: 10) {
      totalCount
    }
    settlements(first: 10) {
      totalCount
    }
    links(first: 10) {
      totalCount
    }
    createdAt
    updatedAt
  }
}
Variables
{
  "ref": {"id": "00000000-0000-4000-8000-000000000001"},
  "input": {
    "type": "SALES_ORDER",
    "targetId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "unlinkInvoice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "direction": "ISSUED",
      "kind": "INVOICE",
      "status": "PENDING",
      "failureReason": "example",
      "source": "example",
      "sourceDocumentType": "example",
      "sourceChangedAt": "2026-01-01T00:00:00Z",
      "syncedAt": "2026-01-01T00:00:00Z",
      "cancelled": true,
      "number": "example",
      "variableSymbol": "example",
      "constantSymbol": "example",
      "specificSymbol": "example",
      "supplierNumber": "example",
      "orderNumber": "example",
      "issueDate": "2026-01-01T00:00:00Z",
      "taxPointDate": "2026-01-01T00:00:00Z",
      "dueDate": "2026-01-01T00:00:00Z",
      "receivedDate": "2026-01-01T00:00:00Z",
      "vatClaimDate": "2026-01-01T00:00:00Z",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "legalEntityMatch": "EXPLICIT",
      "partnerId": "00000000-0000-4000-8000-000000000001",
      "partnerMatch": "EXPLICIT",
      "partnerEditable": true,
      "seller": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "buyer": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "delivery": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "paymentMethod": "BANK_TRANSFER",
      "paymentMethodName": "example",
      "bankAccountNumber": "example",
      "bankCode": "example",
      "bankName": "example",
      "iban": "example",
      "swift": "example",
      "currencyCode": "example",
      "exchangeRate": "10.00",
      "exchangeRateAmount": 1,
      "homeCurrencyCode": "example",
      "textBeforeItems": "example",
      "textAfterItems": "example",
      "printedNote": "example",
      "vatNote": "example",
      "reverseCharge": true,
      "oss": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "rounding": "10.00",
      "advancesDeducted": "10.00",
      "amountDue": "10.00",
      "totalNetHome": "10.00",
      "totalVatHome": "10.00",
      "totalGrossHome": "10.00",
      "paymentStatus": "UNPAID",
      "paidAmount": "10.00",
      "remainingAmount": "10.00",
      "paidAt": "2026-01-01T00:00:00Z",
      "correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
      "correctedNumber": "example",
      "correctedIssueDate": "2026-01-01T00:00:00Z",
      "correctedTaxPointDate": "2026-01-01T00:00:00Z",
      "correctionReason": "example",
      "internalNote": "example",
      "lines": {"totalCount": 1},
      "vatSummary": {"totalCount": 1},
      "settlements": {"totalCount": 1},
      "links": {"totalCount": 1},
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

updateInvoice

Description

The internal note. Needs invoice.write.

Arguments
ref InvoiceRefInput! Required
Input fields 3

Names one invoice: either id, or source together with externalId -- never both.

id UUID Optional
source String Optional

The code of the accounting system's source.

externalId String Optional

The accounting system's own id of the document.

input UpdateInvoiceInput! Required
Input fields 1
internalNote String Optional

Omitted keeps, null or blank clears.

Returns

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

id UUID! Non-null

Our id.

direction InvoiceDirection! Non-null
Accepted values 2
ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.

kind InvoiceKind! Non-null
Accepted values 3
INVOICE
ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.

status InvoiceStatus! Non-null
Accepted values 4
PENDING
CREATED
FAILED
REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.

failureReason String Nullable
source String! Non-null

The code of the accounting system's source.

sourceDocumentType String Nullable
sourceChangedAt Time Nullable
syncedAt Time Nullable
cancelled Boolean! Non-null
number String Nullable
variableSymbol String Nullable
constantSymbol String Nullable
specificSymbol String Nullable
supplierNumber String Nullable
orderNumber String Nullable
issueDate Time Nullable
taxPointDate Time Nullable
dueDate Time Nullable
receivedDate Time Nullable
vatClaimDate Time Nullable
legalEntityId UUID! Non-null

Our id of the legal entity it belongs to.

legalEntityMatch InvoiceLegalEntityMatch! Non-null
Accepted values 3
EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.

partnerId UUID Nullable

Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.

partnerMatch InvoicePartnerMatch Nullable
Accepted values 4
EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.

partnerEditable Boolean! Non-null

A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.

seller InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
buyer InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
delivery InvoiceParty! Non-null
Fields 11

One side of the invoice as the accounting system printed it.

name String Nullable
street String Nullable
city String Nullable
postalCode String Nullable
countryCode String Nullable

ISO 3166-1 alpha-2.

registrationId String Nullable
taxId String Nullable
vatId String Nullable
email String Nullable
phone String Nullable
web String Nullable
paymentMethod InvoicePaymentMethod Nullable
Accepted values 6
BANK_TRANSFER
CASH
CARD
CASH_ON_DELIVERY
OFFSET
OTHER
paymentMethodName String Nullable
bankAccountNumber String Nullable
bankCode String Nullable
bankName String Nullable
iban String Nullable
swift String Nullable
currencyCode String! Non-null
exchangeRate Decimal Nullable
exchangeRateAmount Int Nullable
homeCurrencyCode String! Non-null
textBeforeItems String Nullable
textAfterItems String Nullable
printedNote String Nullable
vatNote String Nullable

The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").

reverseCharge Boolean! Non-null
oss Boolean! Non-null
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
rounding Decimal! Non-null
advancesDeducted Decimal! Non-null
amountDue Decimal! Non-null
totalNetHome Decimal Nullable
totalVatHome Decimal Nullable
totalGrossHome Decimal Nullable
paymentStatus InvoicePaymentStatus! Non-null
Accepted values 5
UNPAID
PARTIALLY_PAID
PAID
OVERPAID
UNKNOWN

The accounting system does not say.

paidAmount Decimal Nullable
remainingAmount Decimal Nullable
paidAt Time Nullable
correctsInvoiceId UUID Nullable

Our id of the invoice a credit note corrects, when it is mirrored.

correctedNumber String Nullable
correctedIssueDate Time Nullable
correctedTaxPointDate Time Nullable
correctionReason String Nullable
internalNote String Nullable

A note for colleagues; never printed.

lines InvoiceLineConnection Nullable

The lines, by lineNo. A connection, at most 250 a page.

Fields 4
edges [InvoiceLineEdge!]! Non-null
Fields 2
nodes [InvoiceLine!]! Non-null
Fields 23
id UUID! Non-null
lineNo Int! Non-null
kind InvoiceLineKind! Non-null
Accepted values 5
ITEM
TEXT
ADVANCE_DEDUCTION
ROUNDING
DISCOUNT
name String! Non-null
code String Nullable
barcode String Nullable
manufacturerCode String Nullable
quantity Decimal Nullable
unit String Nullable
unitPriceNet Decimal Nullable
unitPriceGross Decimal Nullable
pricesIncludeVat Boolean! Non-null
vatPercent Decimal Nullable
discountPercent Decimal Nullable
totalNet Decimal! Non-null
totalVat Decimal! Non-null
totalGross Decimal! Non-null
note String Nullable
externalId String Nullable
variantId UUID Nullable
variantMatch String Nullable

EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).

advanceInvoiceId UUID Nullable
salesOrderLineId UUID Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
vatSummary InvoiceVatRowConnection Nullable

The VAT summary, the highest rate first.

Fields 4
edges [InvoiceVatRowEdge!]! Non-null
Fields 2
nodes [InvoiceVatRow!]! Non-null
Fields 7
vatPercent Decimal! Non-null
base Decimal! Non-null
vat Decimal! Non-null
gross Decimal! Non-null
baseHome Decimal Nullable
vatHome Decimal Nullable
grossHome Decimal Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
settlements InvoiceSettlementConnection Nullable
Fields 4
nodes [InvoiceSettlement!]! Non-null
Fields 6
id UUID! Non-null
kind InvoiceSettlementKind! Non-null
Accepted values 2
ADVANCE_DEDUCTION
CREDIT_NOTE_OFFSET
counterInvoiceId UUID Nullable
counterNumber String Nullable
amount Decimal! Non-null
settledOn Time Nullable
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
links InvoiceLinkConnection Nullable
Fields 4
edges [InvoiceLinkEdge!]! Non-null
Fields 2
nodes [InvoiceLink!]! Non-null
Fields 5
id UUID! Non-null
type InvoiceLinkType! Non-null
Accepted values 5
SALES_ORDER
PURCHASE_ORDER
RECEIPT
ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.

targetId UUID! Non-null

Our id of the order, purchase order, receipt, issue or consignment.

origin InvoiceLinkOrigin! Non-null
Accepted values 3
SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.

linkedAt Time! Non-null
pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation updateInvoice($ref: InvoiceRefInput!, $input: UpdateInvoiceInput!) {
  updateInvoice(ref: $ref, input: $input) {
    id
    direction
    kind
    status
    failureReason
    source
    sourceDocumentType
    sourceChangedAt
    syncedAt
    cancelled
    number
    variableSymbol
    constantSymbol
    specificSymbol
    supplierNumber
    orderNumber
    issueDate
    taxPointDate
    dueDate
    receivedDate
    vatClaimDate
    legalEntityId
    legalEntityMatch
    partnerId
    partnerMatch
    partnerEditable
    seller {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    buyer {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    delivery {
      name
      street
      city
      postalCode
      countryCode
      registrationId
    }
    paymentMethod
    paymentMethodName
    bankAccountNumber
    bankCode
    bankName
    iban
    swift
    currencyCode
    exchangeRate
    exchangeRateAmount
    homeCurrencyCode
    textBeforeItems
    textAfterItems
    printedNote
    vatNote
    reverseCharge
    oss
    totalNet
    totalVat
    totalGross
    rounding
    advancesDeducted
    amountDue
    totalNetHome
    totalVatHome
    totalGrossHome
    paymentStatus
    paidAmount
    remainingAmount
    paidAt
    correctsInvoiceId
    correctedNumber
    correctedIssueDate
    correctedTaxPointDate
    correctionReason
    internalNote
    lines(first: 10) {
      totalCount
    }
    vatSummary(first: 10) {
      totalCount
    }
    settlements(first: 10) {
      totalCount
    }
    links(first: 10) {
      totalCount
    }
    createdAt
    updatedAt
  }
}
Variables
{"ref": {"id": "00000000-0000-4000-8000-000000000001"}, "input": {}}
Response
{
  "data": {
    "updateInvoice": {
      "id": "00000000-0000-4000-8000-000000000001",
      "direction": "ISSUED",
      "kind": "INVOICE",
      "status": "PENDING",
      "failureReason": "example",
      "source": "example",
      "sourceDocumentType": "example",
      "sourceChangedAt": "2026-01-01T00:00:00Z",
      "syncedAt": "2026-01-01T00:00:00Z",
      "cancelled": true,
      "number": "example",
      "variableSymbol": "example",
      "constantSymbol": "example",
      "specificSymbol": "example",
      "supplierNumber": "example",
      "orderNumber": "example",
      "issueDate": "2026-01-01T00:00:00Z",
      "taxPointDate": "2026-01-01T00:00:00Z",
      "dueDate": "2026-01-01T00:00:00Z",
      "receivedDate": "2026-01-01T00:00:00Z",
      "vatClaimDate": "2026-01-01T00:00:00Z",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "legalEntityMatch": "EXPLICIT",
      "partnerId": "00000000-0000-4000-8000-000000000001",
      "partnerMatch": "EXPLICIT",
      "partnerEditable": true,
      "seller": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "buyer": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "delivery": {
        "name": "example",
        "street": "example",
        "city": "example",
        "postalCode": "example",
        "countryCode": "example",
        "registrationId": "example"
      },
      "paymentMethod": "BANK_TRANSFER",
      "paymentMethodName": "example",
      "bankAccountNumber": "example",
      "bankCode": "example",
      "bankName": "example",
      "iban": "example",
      "swift": "example",
      "currencyCode": "example",
      "exchangeRate": "10.00",
      "exchangeRateAmount": 1,
      "homeCurrencyCode": "example",
      "textBeforeItems": "example",
      "textAfterItems": "example",
      "printedNote": "example",
      "vatNote": "example",
      "reverseCharge": true,
      "oss": true,
      "totalNet": "10.00",
      "totalVat": "10.00",
      "totalGross": "10.00",
      "rounding": "10.00",
      "advancesDeducted": "10.00",
      "amountDue": "10.00",
      "totalNetHome": "10.00",
      "totalVatHome": "10.00",
      "totalGrossHome": "10.00",
      "paymentStatus": "UNPAID",
      "paidAmount": "10.00",
      "remainingAmount": "10.00",
      "paidAt": "2026-01-01T00:00:00Z",
      "correctsInvoiceId": "00000000-0000-4000-8000-000000000001",
      "correctedNumber": "example",
      "correctedIssueDate": "2026-01-01T00:00:00Z",
      "correctedTaxPointDate": "2026-01-01T00:00:00Z",
      "correctionReason": "example",
      "internalNote": "example",
      "lines": {"totalCount": 1},
      "vatSummary": {"totalCount": 1},
      "settlements": {"totalCount": 1},
      "links": {"totalCount": 1},
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

Shipments

carrierProfiles

Description

Active Chameleoon carrier profiles for selecting an operational route. Ordered by carrier code, profile and a stable opaque tiebreaker. Requires integration.read. totalCount counts every active profile in this organisation, independently of the current cursor window.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the final page. Every edge carries its own cursor.

Arguments
first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One keyset-cursor page of active carrier profiles.

edges [CarrierProfileEdge!]! Non-null

Profiles with their cursors, ordered by code, profile and a stable opaque tiebreaker.

Fields 2

One profile and its cursor.

cursor String! Non-null

Where this profile sits; pass as after (with first) or before (with last).

node CarrierProfile! Non-null
Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

nodes [CarrierProfile!]! Non-null

The same profiles without cursors.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

totalCount Int! Non-null

How many active profiles this organisation has across all pages.

pageInfo PageInfo! Non-null

Where this page sits in the active catalogue.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query carrierProfiles($first: Int) {
  carrierProfiles(first: $first) {
    edges {
      cursor
    }
    nodes {
      code
      profile
      name
      service
    }
    totalCount
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "carrierProfiles": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "code": "example",
          "profile": "example",
          "name": "example",
          "service": "example"
        }
      ],
      "totalCount": 1,
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

shipment

Description

One carrier shipment by id -- the entityId of the shipment.* events. Requires integration.read and shipment.read. Null when it does not exist, is outside the key's legal-entity or warehouse scope, or never reached the carrier.

Arguments
id UUID! Required
Returns

A carrier shipment of a consignment, as the carrier accepted it.

id UUID! Non-null
number String! Non-null

Its own number, e.g. ZAS-2026-00001.

status ShipmentStatus! Non-null
Accepted values 2
CREATED

The carrier accepted it; its shipping numbers are answered at this moment.

CANCELLED

Cancelled before the carrier took it.

numbers [String!] Nullable

The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased.

trackingStatus String! Non-null

The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added.

carrier CarrierProfile! Non-null

The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

salesOrderId UUID Nullable

The sales order it ships. A bare id, which may name an order the key cannot open.

fulfilmentId UUID Nullable

The consignment it ships. A bare id.

version Int Nullable

Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none.

createdAt Time! Non-null
changedAt Time Nullable

When its last event was published; null exactly when version is.

Example

Query
query shipment($id: UUID!) {
  shipment(id: $id) {
    id
    number
    status
    numbers
    trackingStatus
    carrier {
      code
      profile
      name
      service
    }
    salesOrderId
    fulfilmentId
    version
    createdAt
    changedAt
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "shipment": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "example",
      "status": "CREATED",
      "numbers": ["example"],
      "trackingStatus": "example",
      "carrier": {
        "code": "example",
        "profile": "example",
        "name": "example",
        "service": "example"
      },
      "salesOrderId": "00000000-0000-4000-8000-000000000001",
      "fulfilmentId": "00000000-0000-4000-8000-000000000001",
      "version": 1,
      "createdAt": "2026-01-01T00:00:00Z",
      "changedAt": "2026-01-01T00:00:00Z"
    }
  }
}

Issues

issues

Description

Issues, filtered, newest first by effectiveAt (then by when they were created, then id). There is no total count. Drafts are never returned. Issues outside the key's warehouse or legal-entity scope are left out. Needs integration.read and issue.read.

filter.ids names at most 50 issues; an id that does not exist, is not an issue, is a draft or is outside the key's scope is simply not returned -- never an error.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward; last alone is the oldest page. Every edge carries its own cursor. A page is priced at the number asked times one issue's selection.

Arguments
filter IssueFilter Optional
Input fields 6

Which issues the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

ids [UUID!] Optional

These issues, at most 50. Ids that are not returnable are simply absent.

statuses [IssueStatus!] Optional

Issues in any of these states; all three when omitted.

Accepted values 3
OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

warehouseIds [UUID!] Optional

Issues out of any of these warehouses. At most 50.

effectiveFrom Time Optional

Issues effective at or after this instant.

effectiveTo Time Optional

Issues effective before this instant (exclusive).

origins [IssueOriginKind!] Optional

Issues with any of these origins.

Accepted values 3
FULFILMENT

A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.

STOCKTAKE

A stocktake's shortfall.

MANUAL

Entered directly, from nothing else.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns

One page of issues.

edges [IssueEdge!]! Non-null

The issues with their cursors, newest first by effectiveAt.

Fields 2

One issue and its cursor.

cursor String! Non-null

Where this issue sits; pass as after (with first) or before (with last).

node Issue! Non-null
Fields 20

Goods that left one warehouse.

id UUID! Non-null
number String! Non-null

The issue's number. Every returned issue has one.

status IssueStatus! Non-null
Accepted values 3
OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as issued.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed issue has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
legalEntityId UUID Nullable

The company the issue belongs to; null when it belongs to none.

partnerId UUID Nullable

The partner the goods went to; null when the issue names none.

partner Partner Nullable

The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
origin IssueOrigin! Non-null

What an issue was created from.

View all fields of IssueOrigin! →
externalReference String Nullable

The external reference the issue was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines IssueLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an issue's lines.

View all fields of IssueLineConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
nodes [Issue!]! Non-null

The same issues without cursors.

Fields 20

Goods that left one warehouse.

id UUID! Non-null
number String! Non-null

The issue's number. Every returned issue has one.

status IssueStatus! Non-null
Accepted values 3
OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as issued.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed issue has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the issue belongs to; null when it belongs to none.

partnerId UUID Nullable

The partner the goods went to; null when the issue names none.

partner Partner Nullable

The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin IssueOrigin! Non-null
Fields 2

What an issue was created from.

kind IssueOriginKind! Non-null
Accepted values 3
FULFILMENT

A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.

STOCKTAKE

A stocktake's shortfall.

MANUAL

Entered directly, from nothing else.

id UUID Nullable

The consignment or stocktake; null for MANUAL.

externalReference String Nullable

The external reference the issue was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines IssueLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an issue's lines.

edges [IssueLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [IssueLineEdge!]! →
nodes [IssueLine!]! Non-null

The same lines without cursors.

One product issued.

View all fields of [IssueLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the issue has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query issues($first: Int) {
  issues(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "issues": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "number": "example",
          "status": "OPEN",
          "version": 1,
          "effectiveAt": "2026-01-01T00:00:00Z",
          "completedAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

removeIssueExternalRef

Description

Removes the issue's reference in a source; changed: false when it had none. An archived source still answers. Permissions, NOT_FOUND and errors below this field as setIssueExternalRef.

Arguments
id UUID! Required
source String! Required
Returns

What setIssueExternalRef and removeIssueExternalRef answer.

issue Issue! Non-null

The issue, as it now stands.

Fields 20

Goods that left one warehouse.

id UUID! Non-null
number String! Non-null

The issue's number. Every returned issue has one.

status IssueStatus! Non-null
Accepted values 3
OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as issued.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed issue has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the issue belongs to; null when it belongs to none.

partnerId UUID Nullable

The partner the goods went to; null when the issue names none.

partner Partner Nullable

The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin IssueOrigin! Non-null
Fields 2

What an issue was created from.

kind IssueOriginKind! Non-null
Accepted values 3
FULFILMENT

A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.

STOCKTAKE

A stocktake's shortfall.

MANUAL

Entered directly, from nothing else.

id UUID Nullable

The consignment or stocktake; null for MANUAL.

externalReference String Nullable

The external reference the issue was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines IssueLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an issue's lines.

edges [IssueLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [IssueLineEdge!]! →
nodes [IssueLine!]! Non-null

The same lines without cursors.

One product issued.

View all fields of [IssueLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the issue has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the call changed nothing: a repeat.

Example

Mutation
mutation removeIssueExternalRef($id: UUID!, $source: String!) {
  removeIssueExternalRef(id: $id, source: $source) {
    issue {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    changed
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001", "source": "example"}
Response
{
  "data": {
    "removeIssueExternalRef": {
      "issue": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "OPEN",
        "version": 1,
        "effectiveAt": "2026-01-01T00:00:00Z",
        "completedAt": "2026-01-01T00:00:00Z"
      },
      "changed": true
    }
  }
}

setIssueExternalRef

Description

Records the issue's one reference in a source: the record another system made of it (an OBERON note -- its GUID as externalId, its number as externalNumber). A different externalId replaces the issue's earlier reference in that source; the same one with the same number is a repeat and answers changed: false. Writes no event and no revision of the issue.

Needs integration.read, issue.read and issue.write, with the issue in scope. NOT_FOUND when there is no such issue, it is a draft or the key may not see it; NOT_FOUND with extensions.reason SOURCE_NOT_FOUND (field input.source) when there is no such source. CONFLICT with extensions.reason SOURCE_ARCHIVED for an archived source, REF_TAKEN when another issue holds that externalId in the source. VALIDATION (field input.externalId or input.externalNumber) for a blank id or one too long.

An error whose path runs below this field while its result is in data is a field the key may not read, or a nested page that failed -- not a failed call: the reference was recorded, and changed is in data, so do not retry. Retry rules apply only when this field itself is null with an error at its own path.

Arguments
id UUID! Required
Input fields 3

The reference a receipt or an issue gets: the record another system made of it.

source String! Required

An external source's code in this ERP.

externalId String! Required

That system's id of its record, at most 200 characters.

externalNumber String Optional

The number that system shows for it, at most 100 characters. Omitted or null: none.

Returns

What setIssueExternalRef and removeIssueExternalRef answer.

issue Issue! Non-null

The issue, as it now stands.

Fields 20

Goods that left one warehouse.

id UUID! Non-null
number String! Non-null

The issue's number. Every returned issue has one.

status IssueStatus! Non-null
Accepted values 3
OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.

version Int Nullable

The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).

effectiveAt Time! Non-null

When the goods count as issued.

completedAt Time Nullable
cancelledAt Time Nullable
revision Int! Non-null

How many times the completed issue has been revised; 0 as completed.

warehouseId UUID! Non-null
warehouse Warehouse Nullable

The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

legalEntityId UUID Nullable

The company the issue belongs to; null when it belongs to none.

partnerId UUID Nullable

The partner the goods went to; null when the issue names none.

partner Partner Nullable

The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
origin IssueOrigin! Non-null
Fields 2

What an issue was created from.

kind IssueOriginKind! Non-null
Accepted values 3
FULFILMENT

A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.

STOCKTAKE

A stocktake's shortfall.

MANUAL

Entered directly, from nothing else.

id UUID Nullable

The consignment or stocktake; null for MANUAL.

externalReference String Nullable

The external reference the issue was filed with.

currencyCode String! Non-null
totalValue Decimal Nullable

What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

costingPending Boolean! Non-null

True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.

lines IssueLineConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an issue's lines.

edges [IssueLineEdge!]! Non-null

The lines with their cursors, by line number.

One line and its cursor.

View all fields of [IssueLineEdge!]! →
nodes [IssueLine!]! Non-null

The same lines without cursors.

One product issued.

View all fields of [IssueLine!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many lines the issue has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
changed Boolean! Non-null

False when the call changed nothing: a repeat.

Example

Mutation
mutation setIssueExternalRef($id: UUID!, $input: StockDocumentExternalRefInput!) {
  setIssueExternalRef(id: $id, input: $input) {
    issue {
      id
      number
      status
      version
      effectiveAt
      completedAt
    }
    changed
  }
}
Variables
{
  "id": "00000000-0000-4000-8000-000000000001",
  "input": {"source": "example", "externalId": "example"}
}
Response
{
  "data": {
    "setIssueExternalRef": {
      "issue": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "OPEN",
        "version": 1,
        "effectiveAt": "2026-01-01T00:00:00Z",
        "completedAt": "2026-01-01T00:00:00Z"
      },
      "changed": true
    }
  }
}

Documents

document

Description

One document with its current version, or null if absent, removed or on an order outside this key's scope. Needs integration.read and order.read.

Arguments
id UUID! Required
Returns
id UUID! Non-null
kind DocumentKind! Non-null
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
title String Nullable
externalId String Nullable

The issuing system's own id of the document.

externalNumber String Nullable

The document's number in the issuing system.

createdAt Time! Non-null
updatedAt Time! Non-null

When its last version was added.

versionCount Int! Non-null

How many versions it has; the current one is the highest.

file DocumentFile! Non-null

The current version's file.

Fields 5
id UUID! Non-null
filename String! Non-null

The name it was uploaded with.

contentType String! Non-null

The type detected from its content, not the one its name claims.

size Int! Non-null

In bytes.

sha256 String! Non-null

SHA-256 of the bytes, lower-case hex.

downloadUrl String Nullable

Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.

versions DocumentVersionConnection Nullable

Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.

Fields 4
edges [DocumentVersionEdge!]! Non-null

The versions with their cursors.

Fields 2

One version and its cursor.

nodes [DocumentVersion!]! Non-null

The same versions without cursors.

Fields 5
versionNo Int! Non-null

Counts from 1.

note String Nullable
createdAt Time! Non-null
downloadUrl String Nullable

Where to download this version; the API key still needed. Null as Document.downloadUrl.

pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
salesOrder SalesOrder Nullable

The order it is kept with. Null when the order is no longer in the key's sight.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

Fields 13

A business partner: a customer, a supplier or both. Needs partner.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the partner.

name String Nullable

Their name. Null once the partner is erased.

registrationId String Nullable

The company registration number (IČO). Null when unknown, and once the partner is erased.

taxId String Nullable

The tax id (DIČ). Null when unknown, and once the partner is erased.

vatId String Nullable

The VAT id (IČ DPH). Null when unknown, and once the partner is erased.

email String Nullable

The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.

phone String Nullable

The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.

isCustomer Boolean! Non-null

Whether we sell to them.

isSupplier Boolean! Non-null

Whether we buy from them.

billingAddresses AddressConnection Nullable

The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
deliveryAddresses AddressConnection Nullable

The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a partner's addresses of one kind.

View all fields of AddressConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

Fields 10

An address an order was sent to.

id UUID! Non-null

Our id of this address version.

recipient String Nullable

Who receives it.

street String! Non-null

Street and number.

street2 String Nullable

A second address line.

city String! Non-null

City.

postalCode String! Non-null

Postal code.

region String Nullable

Region or state.

countryCode String! Non-null

ISO 3166-1 alpha-2 country code.

phone String Nullable

The phone the carrier calls.

email String Nullable

The e-mail delivery notices go to.

pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

Fields 2

A carrier's collection point.

code String Nullable

The carrier's code of the point.

name String Nullable

Its name.

sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

Fields 4

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

code String! Non-null

The Chameleoon courier id.

profile String! Non-null

The courier's profile id.

name String! Non-null

The courier's synchronized display name.

service String! Non-null

The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.

paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

Fields 2

A method in the shop's own words.

code String Nullable

The shop's code.

name String! Non-null

Its name.

contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

Fields 4

A warehouse. Needs warehouse.read.

id UUID! Non-null

Our id.

code String! Non-null

Our code of the warehouse.

name String! Non-null

Its name.

archivedAt Time Nullable

When it was archived; null while in use.

note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's items.

edges [SalesOrderItemEdge!]! Non-null

The items with their cursors.

One item and its cursor.

View all fields of [SalesOrderItemEdge!]! →
nodes [SalesOrderItem!]! Non-null

The same items without cursors.

One goods line of an order.

View all fields of [SalesOrderItem!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many items the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's charges.

edges [SalesOrderChargeEdge!]! Non-null

The charges with their cursors.

One charge and its cursor.

View all fields of [SalesOrderChargeEdge!]! →
nodes [SalesOrderCharge!]! Non-null

The same charges without cursors.

Something on an order that is not goods.

View all fields of [SalesOrderCharge!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many charges the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

Fields 3

What stops an order.

reason String! Non-null

A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.

note String Nullable

What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.

at Time! Non-null

When the order was stopped.

exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of an order's exceptions.

edges [RecordExceptionEdge!]! Non-null

The exceptions with their cursors.

One exception and its cursor.

View all fields of [RecordExceptionEdge!]! →
nodes [RecordException!]! Non-null

The same exceptions without cursors.

Something a record was created with that needs a person: what it is, where, and how it was settled.

View all fields of [RecordException!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4

One page of a record's external references.

edges [ExternalRefEdge!]! Non-null

The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.

One reference and its cursor.

View all fields of [ExternalRefEdge!]! →
nodes [ExternalRef!]! Non-null

The same references without cursors.

An id another system knows a record by.

View all fields of [ExternalRef!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many references the record has.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Fields 4
edges [DocumentEdge!]! Non-null

The documents with their cursors.

One document and its cursor.

View all fields of [DocumentEdge!]! →
nodes [Document!]! Non-null

The same documents without cursors.

View all fields of [Document!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

Fields 4

The invoices linked to one order.

nodes [Invoice!]! Non-null

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

View all fields of [Invoice!]! →
pageInfo PageInfo! Non-null

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Fields 4

One page of an order's shipments.

edges [ShipmentEdge!]! Non-null

The shipments with their cursors.

One shipment and its cursor.

View all fields of [ShipmentEdge!]! →
nodes [Shipment!]! Non-null

The same shipments without cursors.

A carrier shipment of a consignment, as the carrier accepted it.

View all fields of [Shipment!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many shipments the order has, capped at 10001: 10001 reads "10000 or more".

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Query
query document($id: UUID!) {
  document(id: $id) {
    id
    kind
    title
    externalId
    externalNumber
    createdAt
    updatedAt
    versionCount
    file {
      id
      filename
      contentType
      size
      sha256
    }
    downloadUrl
    versions(first: 10) {
      totalCount
    }
    salesOrder {
      id
      number
      status
      legalEntityId
      source
      externalId
    }
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "document": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "INVOICE",
      "title": "example",
      "externalId": "example",
      "externalNumber": "example",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z",
      "versionCount": 1,
      "file": {
        "id": "00000000-0000-4000-8000-000000000001",
        "filename": "example",
        "contentType": "example",
        "size": 1,
        "sha256": "example"
      },
      "downloadUrl": "example",
      "versions": {"totalCount": 1},
      "salesOrder": {
        "id": "00000000-0000-4000-8000-000000000001",
        "number": "example",
        "status": "DRAFT",
        "legalEntityId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "externalId": "example"
      }
    }
  }
}

addDocumentVersion

Description

Make an uploaded file the document's next, and so current, version. The same bytes as the current version answer applied false and make no version. A removed document is CONFLICT with reason DOCUMENT_REMOVED; otherwise refused as attachDocument (ORDER_STATUS, FILE_ALREADY_ATTACHED, NOT_FOUND with field documentId or fileId, REQUEST_ID_REUSED). Needs integration.read and order.write, with the document's order in scope.

Arguments
input AddDocumentVersionInput! Required
Input fields 4
requestId String! Required

An opaque, tenant-unique idempotency key, 1 to 128 bytes.

documentId UUID! Required
fileId UUID! Required

The upload's fileId (POST /api/v1/files).

note String Optional

About this version, at most 2000 characters.

Returns
applied Boolean! Non-null

True: this call made the version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.

document Document! Non-null
Fields 12
id UUID! Non-null
kind DocumentKind! Non-null
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
title String Nullable
externalId String Nullable

The issuing system's own id of the document.

externalNumber String Nullable

The document's number in the issuing system.

createdAt Time! Non-null
updatedAt Time! Non-null

When its last version was added.

versionCount Int! Non-null

How many versions it has; the current one is the highest.

file DocumentFile! Non-null

The current version's file.

Fields 5
id UUID! Non-null
filename String! Non-null

The name it was uploaded with.

contentType String! Non-null

The type detected from its content, not the one its name claims.

size Int! Non-null

In bytes.

sha256 String! Non-null

SHA-256 of the bytes, lower-case hex.

downloadUrl String Nullable

Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.

versions DocumentVersionConnection Nullable

Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.

Fields 4
edges [DocumentVersionEdge!]! Non-null

The versions with their cursors.

One version and its cursor.

View all fields of [DocumentVersionEdge!]! →
nodes [DocumentVersion!]! Non-null

The same versions without cursors.

View all fields of [DocumentVersion!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
salesOrder SalesOrder Nullable

The order it is kept with. Null when the order is no longer in the key's sight.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

An address an order was sent to.

View all fields of SalesOrderAddress →
deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

An address an order was sent to.

View all fields of SalesOrderAddress →
pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

A carrier's collection point.

View all fields of PickupPoint →
sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

View all fields of CarrierProfile →
paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's items.

View all fields of SalesOrderItemConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's charges.

View all fields of SalesOrderChargeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

What stops an order.

View all fields of SalesOrderBlock →
exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's exceptions.

View all fields of RecordExceptionConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

View all fields of DocumentConnection →
Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

The invoices linked to one order.

View all fields of SalesOrderInvoiceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

One page of an order's shipments.

View all fields of ShipmentConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation addDocumentVersion($input: AddDocumentVersionInput!) {
  addDocumentVersion(input: $input) {
    applied
    document {
      id
      kind
      title
      externalId
      externalNumber
      createdAt
    }
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "documentId": "00000000-0000-4000-8000-000000000001",
    "fileId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "addDocumentVersion": {
      "applied": true,
      "document": {
        "id": "00000000-0000-4000-8000-000000000001",
        "kind": "INVOICE",
        "title": "example",
        "externalId": "example",
        "externalNumber": "example",
        "createdAt": "2026-01-01T00:00:00Z"
      }
    }
  }
}

attachDocument

Description

Attach an uploaded file to a sales order as a document of a kind, version 1 -- or, when an active document of the same kind on the order already has the externalId (else, without one, the externalNumber), as that document's next version. An INVOICE is bound to the order's invoice reference (setSalesOrderInvoice): an externalId or externalNumber left out is taken from it, and one that differs from it is CONFLICT with reason INVOICE_REFERENCE_MISMATCH and that field in extensions.field. The order must be CONFIRMED, COMPLETED or CANCELLED (CONFLICT with reason ORDER_STATUS otherwise). A file a version already took is CONFLICT with reason FILE_ALREADY_ATTACHED; a file that does not exist, or has expired is NOT_FOUND with extensions.field fileId, and an order out of sight NOT_FOUND with field salesOrder. The requestId makes a retry after a lost response safe: the same requestId and input answers applied false with the document as it is now, while other input is CONFLICT with reason REQUEST_ID_REUSED. Needs integration.read and order.write, with the order in scope.

Arguments
input AttachDocumentInput! Required
Input fields 8
requestId String! Required

An opaque, tenant-unique idempotency key, 1 to 128 bytes.

fileId UUID! Required

The upload's fileId (POST /api/v1/files).

salesOrder SalesOrderRefInput! Required

The order the document is kept with.

Input fields 3

Names one order: either id, or source together with externalId -- never both.

id UUID Optional

Our id of the order.

source String Optional

The code of the external source that placed the order.

externalId String Optional

The source's own id of the order.

kind DocumentKind! Required
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
externalId String Optional

The issuing system's own id of the document, at most 200 characters.

externalNumber String Optional

The document's number in the issuing system, at most 100 characters.

title String Optional

At most 255 characters.

note String Optional

About this version, at most 2000 characters.

Returns
applied Boolean! Non-null

True: this call made the document or its new version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.

document Document! Non-null
Fields 12
id UUID! Non-null
kind DocumentKind! Non-null
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
title String Nullable
externalId String Nullable

The issuing system's own id of the document.

externalNumber String Nullable

The document's number in the issuing system.

createdAt Time! Non-null
updatedAt Time! Non-null

When its last version was added.

versionCount Int! Non-null

How many versions it has; the current one is the highest.

file DocumentFile! Non-null

The current version's file.

Fields 5
id UUID! Non-null
filename String! Non-null

The name it was uploaded with.

contentType String! Non-null

The type detected from its content, not the one its name claims.

size Int! Non-null

In bytes.

sha256 String! Non-null

SHA-256 of the bytes, lower-case hex.

downloadUrl String Nullable

Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.

versions DocumentVersionConnection Nullable

Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.

Fields 4
edges [DocumentVersionEdge!]! Non-null

The versions with their cursors.

One version and its cursor.

View all fields of [DocumentVersionEdge!]! →
nodes [DocumentVersion!]! Non-null

The same versions without cursors.

View all fields of [DocumentVersion!]! →
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Where a page sits in its connection.

View all fields of PageInfo! →
totalCount Int! Non-null

How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.

Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
salesOrder SalesOrder Nullable

The order it is kept with. Null when the order is no longer in the key's sight.

Fields 44

A sales order.

id UUID! Non-null

Our id.

number String Nullable

The order's number. Null while a draft.

status SalesOrderStatus! Non-null

Where the order is in its life.

Accepted values 5
DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.

legalEntityId UUID Nullable

Our id of the legal entity (the company) that sells it. Null only for an order without one.

source String Nullable

The code of the source that placed it. Null for an order made here.

externalId String Nullable

The source's id of the order.

externalNumber String Nullable

The order number the customer saw in the shop.

sourceUrl String Nullable

A link to the order in the shop's administration.

orderedAt Time! Non-null

When the customer placed it.

confirmedAt Time Nullable

When it was confirmed, by this system's clock.

fulfilmentStatus SalesOrderFulfilmentStatus! Non-null

How much has left the warehouse.

Accepted values 3
UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.

paymentStatus SalesOrderPaymentStatus! Non-null

Whether it is paid.

Accepted values 7
UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.

currencyCode String! Non-null

ISO 4217 code of its currency.

pricesIncludeVat Boolean Nullable

Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.

totalNet Decimal! Non-null

What is owed without VAT, cancelled quantity excluded.

totalVat Decimal! Non-null

The VAT on it.

totalGross Decimal! Non-null

What is owed including VAT.

paidAmount Decimal! Non-null

What the customer has paid, less refunds.

discountPercent Decimal Nullable

The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.

invoiceNumber String Nullable

The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.

invoiceExternalId String Nullable

That system's own id of the invoice. Null while there is none.

customerId UUID! Non-null

Our id of the customer. Served to every key that reads the order.

customer Partner Nullable

Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.

A business partner: a customer, a supplier or both. Needs partner.read.

View all fields of Partner →
billingAddress SalesOrderAddress Nullable

The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.

An address an order was sent to.

View all fields of SalesOrderAddress →
deliveryAddress SalesOrderAddress Nullable

The delivery address version the order pinned, guarded as billingAddress.

An address an order was sent to.

View all fields of SalesOrderAddress →
pickupPoint PickupPoint Nullable

The carrier's collection point, when delivered to one.

A carrier's collection point.

View all fields of PickupPoint →
sourceDeliveryMethod Method Nullable

The delivery method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
carrier CarrierProfile Nullable

The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

View all fields of CarrierProfile →
paymentMethod PaymentMethod! Non-null

How the customer intends to pay.

Accepted values 4
CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.

sourcePaymentMethod Method Nullable

The payment method in the shop's own words.

A method in the shop's own words.

View all fields of Method →
contactEmail String Nullable

The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.

contactPhone String Nullable

The phone the customer gave for this order, guarded as contactEmail.

preferredWarehouseId UUID Nullable

Our id of the warehouse the order reserves from, when it has one.

preferredWarehouse Warehouse Nullable

That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).

A warehouse. Needs warehouse.read.

View all fields of Warehouse →
note String Nullable

What the customer wrote with the order. Null once the customer is erased.

items SalesOrderItemConnection Nullable

The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's items.

View all fields of SalesOrderItemConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
charges SalesOrderChargeConnection Nullable

Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's charges.

View all fields of SalesOrderChargeConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
blocked SalesOrderBlock Nullable

Why no consignment of the order may proceed. Null when nothing stops it.

What stops an order.

View all fields of SalesOrderBlock →
exceptions RecordExceptionConnection Nullable

What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of an order's exceptions.

View all fields of RecordExceptionConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
externalRefs ExternalRefConnection Nullable

The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

One page of a record's external references.

View all fields of ExternalRefConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
documents DocumentConnection Nullable

The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

View all fields of DocumentConnection →
Field arguments 5
first Int Optional
after String Optional
last Int Optional
before String Optional
kinds [DocumentKind!] Optional
Accepted values 8
INVOICE
CREDIT_NOTE
PROFORMA_INVOICE
DELIVERY_NOTE
PROOF_OF_DELIVERY
ORDER_CONFIRMATION
CONTRACT
OTHER
changedAt Time Nullable

When the order's last event was published (see events). Null only for an order never published.

invoices SalesOrderInvoiceConnection Nullable

The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.

The invoices linked to one order.

View all fields of SalesOrderInvoiceConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional
shipments ShipmentConnection Nullable

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

One page of an order's shipments.

View all fields of ShipmentConnection →
Field arguments 4
first Int Optional
after String Optional
last Int Optional
before String Optional

Example

Mutation
mutation attachDocument($input: AttachDocumentInput!) {
  attachDocument(input: $input) {
    applied
    document {
      id
      kind
      title
      externalId
      externalNumber
      createdAt
    }
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "fileId": "00000000-0000-4000-8000-000000000001",
    "salesOrder": {"id": "00000000-0000-4000-8000-000000000001"},
    "kind": "INVOICE"
  }
}
Response
{
  "data": {
    "attachDocument": {
      "applied": true,
      "document": {
        "id": "00000000-0000-4000-8000-000000000001",
        "kind": "INVOICE",
        "title": "example",
        "externalId": "example",
        "externalNumber": "example",
        "createdAt": "2026-01-01T00:00:00Z"
      }
    }
  }
}

removeDocument

Description

Remove a document: gone from every read and its download, its versions kept in the ERP. A document removed already is CONFLICT with reason DOCUMENT_REMOVED, except as the replay of the call that removed it, which answers applied false with the same documentId. The order must be CONFIRMED, COMPLETED or CANCELLED (ORDER_STATUS). Needs integration.read and order.write, with the document's order in scope.

Arguments
input RemoveDocumentInput! Required
Input fields 2
requestId String! Required

An opaque, tenant-unique idempotency key, 1 to 128 bytes.

documentId UUID! Required
Returns
applied Boolean! Non-null

True: this call removed it. False: a replay of the call that did.

documentId UUID! Non-null

Example

Mutation
mutation removeDocument($input: RemoveDocumentInput!) {
  removeDocument(input: $input) {
    applied
    documentId
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "documentId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "removeDocument": {
      "applied": true,
      "documentId": "00000000-0000-4000-8000-000000000001"
    }
  }
}

Assets

asset

Description

One asset, or NOT_FOUND.

Arguments
id UUID! Required
Returns

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Query
query asset($id: UUID!) {
  asset(id: $id) {
    id
    scope
    legalEntityId
    code
    reference
    name
    kind
    contentType
    width
    height
    sizeBytes
    isPublic
    publicUrl
    createdAt
    updatedAt
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "asset": {
      "id": "00000000-0000-4000-8000-000000000001",
      "scope": "TENANT",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "code": "example",
      "reference": "example",
      "name": "example",
      "kind": "LOGO",
      "contentType": "example",
      "width": 1,
      "height": 1,
      "sizeBytes": 1,
      "isPublic": true,
      "publicUrl": "example",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

assets

Description

The organisation's and the companies' assets, by scope and code.

Arguments
filter AssetFilter Optional
Input fields 3
scope AssetScope Optional
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Optional
kind AssetKind Optional
Accepted values 3
LOGO
STAMP
IMAGE
first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [AssetEdge!]! Non-null

The assets with their cursors, by scope and code.

Fields 2
cursor String! Non-null

Where this asset sits; pass as after (with first) or before (with last).

node Asset! Non-null
Fields 15

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null
nodes [Asset!]! Non-null

The same assets without cursors.

Fields 15

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query assets($first: Int) {
  assets(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      scope
      legalEntityId
      code
      reference
      name
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "assets": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "scope": "TENANT",
          "legalEntityId": "00000000-0000-4000-8000-000000000001",
          "code": "example",
          "reference": "example",
          "name": "example"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

createAsset

Description

Name an uploaded image. A second asset with the same reference is CONFLICT with reason DUPLICATE_CODE; a file already used is CONFLICT with reason FILE_ALREADY_ATTACHED; a file that does not exist or has expired is NOT_FOUND with extensions.field fileId.

Arguments
input CreateAssetInput! Required
Input fields 7
scope AssetScope! Required
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Optional

Required for COMPANY, absent for TENANT.

code String! Required

1-40 lower-case letters, digits and hyphens, starting with a letter.

name String! Required
kind AssetKind! Required
Accepted values 3
LOGO
STAMP
IMAGE
fileId UUID! Required

An upload not yet used (POST /api/v1/assets/files).

isPublic Boolean Optional

Default: false

Returns

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation createAsset($input: CreateAssetInput!) {
  createAsset(input: $input) {
    id
    scope
    legalEntityId
    code
    reference
    name
    kind
    contentType
    width
    height
    sizeBytes
    isPublic
    publicUrl
    createdAt
    updatedAt
  }
}
Variables
{
  "input": {
    "scope": "TENANT",
    "code": "example",
    "name": "example",
    "kind": "LOGO",
    "fileId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "createAsset": {
      "id": "00000000-0000-4000-8000-000000000001",
      "scope": "TENANT",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "code": "example",
      "reference": "example",
      "name": "example",
      "kind": "LOGO",
      "contentType": "example",
      "width": 1,
      "height": 1,
      "sizeBytes": 1,
      "isPublic": true,
      "publicUrl": "example",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

deleteAsset

Description

Delete the asset and its image. Answers the id.

Arguments
input DeleteAssetInput! Required
Input fields 1
id UUID! Required
Returns

A UUID in its canonical text form.

Example

Mutation
mutation deleteAsset($input: DeleteAssetInput!) {
  deleteAsset(input: $input)
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{"data": {"deleteAsset": "00000000-0000-4000-8000-000000000001"}}

replaceAssetFile

Description

Put a new uploaded image under the asset; the old one is deleted.

Arguments
input ReplaceAssetFileInput! Required
Input fields 2
id UUID! Required
fileId UUID! Required
Returns

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation replaceAssetFile($input: ReplaceAssetFileInput!) {
  replaceAssetFile(input: $input) {
    id
    scope
    legalEntityId
    code
    reference
    name
    kind
    contentType
    width
    height
    sizeBytes
    isPublic
    publicUrl
    createdAt
    updatedAt
  }
}
Variables
{
  "input": {
    "id": "00000000-0000-4000-8000-000000000001",
    "fileId": "00000000-0000-4000-8000-000000000001"
  }
}
Response
{
  "data": {
    "replaceAssetFile": {
      "id": "00000000-0000-4000-8000-000000000001",
      "scope": "TENANT",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "code": "example",
      "reference": "example",
      "name": "example",
      "kind": "LOGO",
      "contentType": "example",
      "width": 1,
      "height": 1,
      "sizeBytes": 1,
      "isPublic": true,
      "publicUrl": "example",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

updateAsset

Arguments
input UpdateAssetInput! Required
Input fields 3
id UUID! Required
name String Optional
isPublic Boolean Optional
Returns

A named image.

id UUID! Non-null
scope AssetScope! Non-null
Accepted values 2
TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.

legalEntityId UUID Nullable

The company of a COMPANY asset.

code String! Non-null
reference String! Non-null

What a print template writes: company.logo.

name String! Non-null
kind AssetKind! Non-null
Accepted values 3
LOGO
STAMP
IMAGE
contentType String! Non-null

image/png or image/jpeg.

width Int! Non-null
height Int! Non-null
sizeBytes Int! Non-null
isPublic Boolean! Non-null

Served without authentication at publicUrl. Never a stamp.

publicUrl String Nullable

Where an e-mail links a public asset; it changes when the image does. Null when not public.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation updateAsset($input: UpdateAssetInput!) {
  updateAsset(input: $input) {
    id
    scope
    legalEntityId
    code
    reference
    name
    kind
    contentType
    width
    height
    sizeBytes
    isPublic
    publicUrl
    createdAt
    updatedAt
  }
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "updateAsset": {
      "id": "00000000-0000-4000-8000-000000000001",
      "scope": "TENANT",
      "legalEntityId": "00000000-0000-4000-8000-000000000001",
      "code": "example",
      "reference": "example",
      "name": "example",
      "kind": "LOGO",
      "contentType": "example",
      "width": 1,
      "height": 1,
      "sizeBytes": 1,
      "isPublic": true,
      "publicUrl": "example",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

Print templates

builtInPrintTemplate

Description

Ours, of a kind in a language (Slovak when that has none).

Arguments
kind PrintTemplateKind! Required
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

language String! Required
Returns

One of ours: what prints when the organisation has no template of its own.

kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

The language it is in: the one asked for, Slovak when that has none.

body String! Non-null

Example

Query
query builtInPrintTemplate($kind: PrintTemplateKind!, $language: String!) {
  builtInPrintTemplate(kind: $kind, language: $language) {
    kind
    syntax
    output
    language
    body
  }
}
Variables
{"kind": "SALES_ORDER", "language": "example"}
Response
{
  "data": {
    "builtInPrintTemplate": {
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "body": "example"
    }
  }
}

printTemplate

Description

One template, or NOT_FOUND.

Arguments
id UUID! Required
Returns

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Query
query printTemplate($id: UUID!) {
  printTemplate(id: $id) {
    id
    kind
    syntax
    output
    language
    name
    isDefault
    bodyBytes
    body
    archivedAt
    createdAt
    updatedAt
  }
}
Variables
{"id": "00000000-0000-4000-8000-000000000001"}
Response
{
  "data": {
    "printTemplate": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "name": "example",
      "isDefault": true,
      "bodyBytes": 1,
      "body": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

printTemplates

Description

The organisation's templates, by kind, language and name. body costs 50 per template.

Arguments
filter PrintTemplateFilter Optional
Input fields 4
kind PrintTemplateKind Optional
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

language String Optional
search String Optional

A part of the name, any case and diacritics.

archived Boolean Optional

true lists the archived templates instead of the active ones.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [PrintTemplateEdge!]! Non-null

The templates with their cursors, by kind, language and name.

Fields 2
cursor String! Non-null

Where this template sits; pass as after (with first) or before (with last).

node PrintTemplate! Non-null
Fields 12

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null
nodes [PrintTemplate!]! Non-null

The same templates without cursors.

Fields 12

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null
pageInfo PageInfo! Non-null

Where the page sits, and the cursors to the next and previous pages.

Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query printTemplates($first: Int) {
  printTemplates(first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      kind
      syntax
      output
      language
      name
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{"first": 10}
Response
{
  "data": {
    "printTemplates": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "kind": "SALES_ORDER",
          "syntax": "JSON",
          "output": "PDF",
          "language": "example",
          "name": "example"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

copyPrintTemplate

Description

Copy a template or one of ours under a new name; the copy is never the default.

Arguments
input CopyPrintTemplateInput! Required
Input fields 3

Exactly one of id and builtIn.

id UUID Optional
builtIn BuiltInPrintTemplateRef Optional
Input fields 2

One of ours, by kind and language.

kind PrintTemplateKind! Required
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

language String! Required
name String! Required

The copy's name; when it is taken, " 2" … " 20" is appended.

Returns

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation copyPrintTemplate($input: CopyPrintTemplateInput!) {
  copyPrintTemplate(input: $input) {
    id
    kind
    syntax
    output
    language
    name
    isDefault
    bodyBytes
    body
    archivedAt
    createdAt
    updatedAt
  }
}
Variables
{"input": {"name": "example"}}
Response
{
  "data": {
    "copyPrintTemplate": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "name": "example",
      "isDefault": true,
      "bodyBytes": 1,
      "body": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

createPrintTemplate

Description

Store a template. A second one of the same name, kind and language is CONFLICT with reason DUPLICATE_NAME; another write making a default at the same moment is CONFLICT DEFAULT_TAKEN.

Arguments
input CreatePrintTemplateInput! Required
Input fields 5
kind PrintTemplateKind! Required
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

language String! Required

sk, cs or en.

name String! Required

1-120 characters, unique per kind and language.

body String! Required

At most 512 KiB.

isDefault Boolean Optional

Makes it the one its kind and language print with; the previous default stops being one.

Default: false

Returns

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation createPrintTemplate($input: CreatePrintTemplateInput!) {
  createPrintTemplate(input: $input) {
    id
    kind
    syntax
    output
    language
    name
    isDefault
    bodyBytes
    body
    archivedAt
    createdAt
    updatedAt
  }
}
Variables
{
  "input": {
    "kind": "SALES_ORDER",
    "language": "example",
    "name": "example",
    "body": "example"
  }
}
Response
{
  "data": {
    "createPrintTemplate": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "name": "example",
      "isDefault": true,
      "bodyBytes": 1,
      "body": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

deletePrintTemplate

Description

Delete the template; deleting the default leaves ours to print. Answers the id.

Arguments
input DeletePrintTemplateInput! Required
Input fields 1
id UUID! Required
Returns

A UUID in its canonical text form.

Example

Mutation
mutation deletePrintTemplate($input: DeletePrintTemplateInput!) {
  deletePrintTemplate(input: $input)
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{"data": {"deletePrintTemplate": "00000000-0000-4000-8000-000000000001"}}

setPrintTemplateArchived

Description

Archive or restore a template; archiving the default leaves ours to print. Restoring into a name an active template took is CONFLICT DUPLICATE_NAME.

Arguments
Input fields 2
id UUID! Required
archived Boolean! Required
Returns

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation setPrintTemplateArchived($input: SetPrintTemplateArchivedInput!) {
  setPrintTemplateArchived(input: $input) {
    id
    kind
    syntax
    output
    language
    name
    isDefault
    bodyBytes
    body
    archivedAt
    createdAt
    updatedAt
  }
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001", "archived": true}}
Response
{
  "data": {
    "setPrintTemplateArchived": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "name": "example",
      "isDefault": true,
      "bodyBytes": 1,
      "body": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

updatePrintTemplate

Arguments
input UpdatePrintTemplateInput! Required
Input fields 5
id UUID! Required
name String Optional
language String Optional

Moving a template to another language leaves it no longer the default, unless isDefault says so.

body String Optional
isDefault Boolean Optional
Returns

An organisation's print template.

id UUID! Non-null
kind PrintTemplateKind! Non-null
Accepted values 15
SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.

syntax PrintTemplateSyntax! Non-null
Accepted values 1
JSON

The renderer's layout JSON.

output PrintTemplateOutput! Non-null
Accepted values 1
PDF
language String! Non-null

sk, cs or en: the readers it prints for.

name String! Non-null
isDefault Boolean! Non-null

The one its kind and language print with when a print names no template.

bodyBytes Int! Non-null
body String! Non-null

The template as written, verbatim (at most 512 KiB). Costs 50.

archivedAt Time Nullable

When it was archived; null while it is active.

createdAt Time! Non-null
updatedAt Time! Non-null

Example

Mutation
mutation updatePrintTemplate($input: UpdatePrintTemplateInput!) {
  updatePrintTemplate(input: $input) {
    id
    kind
    syntax
    output
    language
    name
    isDefault
    bodyBytes
    body
    archivedAt
    createdAt
    updatedAt
  }
}
Variables
{"input": {"id": "00000000-0000-4000-8000-000000000001"}}
Response
{
  "data": {
    "updatePrintTemplate": {
      "id": "00000000-0000-4000-8000-000000000001",
      "kind": "SALES_ORDER",
      "syntax": "JSON",
      "output": "PDF",
      "language": "example",
      "name": "example",
      "isDefault": true,
      "bodyBytes": 1,
      "body": "example",
      "archivedAt": "2026-01-01T00:00:00Z",
      "createdAt": "2026-01-01T00:00:00Z",
      "updatedAt": "2026-01-01T00:00:00Z"
    }
  }
}

Integrations

errorReports

Description

Error reports, most recently seen first, paged with first/after or last/before (1..250). Today the filter names one record (subject). lastSeenAt moves when a report recurs, so a report that recurs while you page moves to the first page. Needs integration.read and the record's read permission (FORBIDDEN_ROLE naming it otherwise), with the record in the key's scope (NOT_FOUND with field filter.subject otherwise).

Arguments
filter ErrorReportFilter! Required
Input fields 2
subject ErrorSubjectInput! Required

The record whose reports to read.

Input fields 2
type ErrorSubjectType! Required
Accepted values 1
STOCK_DOCUMENT

A stock document of any kind: a receipt, an issue, a transfer, a return, ...

id UUID! Required
statuses [ErrorReportStatus!] Optional

Keep these statuses, at least one; left out, every status, MUTED included.

Accepted values 3
OPEN
RESOLVED
MUTED

Still counted, not shown as open.

first Int Optional
after String Optional
last Int Optional
before String Optional
Returns
edges [ErrorReportEdge!]! Non-null
Fields 2
cursor String! Non-null
node ErrorReport! Non-null
Fields 13
id UUID! Non-null
lineId UUID Nullable

The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.

source String! Non-null
code String! Non-null
status ErrorReportStatus! Non-null
Accepted values 3
OPEN
RESOLVED
MUTED

Still counted, not shown as open.

mutedUntil Time Nullable

Until when a MUTED report stays muted; null mutes it until a person unmutes it.

regressed Boolean! Non-null

Whether a new occurrence reopened it after it was resolved.

occurrenceCount Int! Non-null
firstSeenAt Time! Non-null
lastSeenAt Time! Non-null
lastStatusCode Int Nullable

The newest occurrence's statusCode.

lastMessage String! Non-null

The newest occurrence's message.

nodes [ErrorReport!]! Non-null
Fields 13
id UUID! Non-null
subject ErrorSubject! Non-null
Fields 2
type ErrorSubjectType! Non-null
Accepted values 1
STOCK_DOCUMENT

A stock document of any kind: a receipt, an issue, a transfer, a return, ...

id UUID! Non-null
lineId UUID Nullable

The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.

source String! Non-null
code String! Non-null
status ErrorReportStatus! Non-null
Accepted values 3
OPEN
RESOLVED
MUTED

Still counted, not shown as open.

mutedUntil Time Nullable

Until when a MUTED report stays muted; null mutes it until a person unmutes it.

regressed Boolean! Non-null

Whether a new occurrence reopened it after it was resolved.

occurrenceCount Int! Non-null
firstSeenAt Time! Non-null
lastSeenAt Time! Non-null
lastStatusCode Int Nullable

The newest occurrence's statusCode.

lastMessage String! Non-null

The newest occurrence's message.

pageInfo PageInfo! Non-null
Fields 4

Where a page sits in its connection.

hasNextPage Boolean! Non-null

More items follow this page.

hasPreviousPage Boolean! Non-null

More items precede this page.

startCursor String Nullable

The first edge's cursor; pass as before (with last) for the previous page. Null when empty.

endCursor String Nullable

The last edge's cursor; pass as after (with first) for the next page. Null when empty.

Example

Query
query errorReports($filter: ErrorReportFilter!, $first: Int) {
  errorReports(filter: $filter, first: $first) {
    edges {
      cursor
    }
    nodes {
      id
      lineId
      source
      code
      status
      mutedUntil
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Variables
{
  "filter": {
    "subject": {
      "type": "STOCK_DOCUMENT",
      "id": "00000000-0000-4000-8000-000000000001"
    }
  },
  "first": 10
}
Response
{
  "data": {
    "errorReports": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "lineId": "00000000-0000-4000-8000-000000000001",
          "source": "example",
          "code": "example",
          "status": "OPEN",
          "mutedUntil": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": true,
        "startCursor": "example",
        "endCursor": "example"
      }
    }
  }
}

events

Description

The event log: what happened to orders, receipts, issues, transfers, consignments, shipments, transfer advices, receipt advices, the documents attached to orders and mirrored invoices, read forward from a cursor. Oldest first; each entity's events come in version order. A forward-only change feed: pass pageInfo.endCursor as after while pageInfo.hasNextPage is true, then keep polling with it. There is no last, no before and no total count.

first is required, from 1 to 250. Every edge carries its own cursor.

Event types: sales_order.confirmed, sales_order.completed, sales_order.reopened, sales_order.cancelled, sales_order.merged, sales_order.changed; receipt.opened, receipt.completed, receipt.cancelled, receipt.revised, receipt.changed, and the same five for issue and transfer; fulfilment.created, fulfilment.shipped, fulfilment.cancelled, fulfilment.changed; shipment.created, shipment.changed, shipment.cancelled; transfer_advice.opened, transfer_advice.changed, transfer_advice.closed, transfer_advice.cancelled; receipt_advice.opened, receipt_advice.changed, receipt_advice.closed, receipt_advice.cancelled; document.attached, document.version_added, document.removed; invoice.created, invoice.changed. New types and enum values are added without notice: ignore what you do not know.

Needs integration.read. Entity types the key may not read are left out silently; naming one in types or entityTypes is FORBIDDEN_ROLE, and so is a key that may read none of them. A key confined to companies or warehouses sees only their events. A cursor older than 30 days is VALIDATION with extensions.reason CURSOR_EXPIRED: re-sync from the lists and start again without a cursor.

wait is seconds, 0 (the default) to 25; outside is VALIDATION at wait. It waits only with after, and only when the page would be empty with hasNextPage false; it then answers as soon as an event it would show arrives, or with an empty page and an advanced endCursor when the time is up or the server is shutting down -- an empty answer is never an error: poll again with its endCursor. A key holds at most 4 waits open on one server (stockCardChanges' included); a further one waits the lesser of wait and 5 s without watching for events, then answers what is there by then.

Arguments
first Int Optional
after String Optional
types [String!] Optional
entityTypes [EventEntityType!] Optional
Accepted values 10
SALES_ORDER

A sales order. Needs order.read.

RECEIPT

A stock receipt: goods into a warehouse. Needs receipt.read.

ISSUE

A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.

TRANSFER

A stock transfer between two warehouses, seen from either end. Needs transfer.read.

FULFILMENT

A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.

SHIPMENT

A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.

TRANSFER_ADVICE

A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.

RECEIPT_ADVICE

A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.

DOCUMENT

A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.

INVOICE

A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.

wait Int Optional
Returns

One page of events.

edges [EventEdge!]! Non-null

The events with their cursors.

Fields 2

One event and its cursor.

cursor String! Non-null

Resume after this event: pass as after.

node Event! Non-null
Fields 9

Something that happened to one entity, in one transaction.

id ID! Non-null

Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id.

type String! Non-null

One of the types listed on events.

entityType EventEntityType! Non-null
Accepted values 10
SALES_ORDER

A sales order. Needs order.read.

RECEIPT

A stock receipt: goods into a warehouse. Needs receipt.read.

ISSUE

A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.

TRANSFER

A stock transfer between two warehouses, seen from either end. Needs transfer.read.

FULFILMENT

A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.

SHIPMENT

A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.

TRANSFER_ADVICE

A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.

RECEIPT_ADVICE

A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.

DOCUMENT

A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.

INVOICE

A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.

entityId UUID! Non-null
version Int! Non-null

1, 2, 3 … per entity, without gaps. Order one entity's events by this.

occurredAt Time! Non-null
origin EventOrigin Nullable

Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open.

View all fields of EventOrigin →
transitions [EventTransition!]! Non-null

The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed.

View all fields of [EventTransition!]! →
actor EventActor! Non-null

Who caused the event.

View all fields of EventActor! →
nodes [Event!]! Non-null

The same events without cursors.

Fields 9

Something that happened to one entity, in one transaction.

id ID! Non-null

Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id.

type String! Non-null

One of the types listed on events.

entityType EventEntityType! Non-null
Accepted values 10
SALES_ORDER

A sales order. Needs order.read.

RECEIPT

A stock receipt: goods into a warehouse. Needs receipt.read.

ISSUE

A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.

TRANSFER

A stock transfer between two warehouses, seen from either end. Needs transfer.read.

FULFILMENT

A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.

SHIPMENT

A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.

TRANSFER_ADVICE

A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.

RECEIPT_ADVICE

A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.

DOCUMENT

A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.

INVOICE

A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.

entityId UUID! Non-null
version Int! Non-null

1, 2, 3 … per entity, without gaps. Order one entity's events by this.

occurredAt Time! Non-null
origin EventOrigin Nullable

Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open.

Fields 3
kind EventOriginKind! Non-null
Accepted values 4
STOCKTAKE
FULFILMENT
ADVICE
MANUAL
id UUID Nullable

The stocktake, consignment (a shipment's too) or advice. Null for MANUAL.

salesOrderId UUID Nullable

The consignment's sales order: set only when kind is FULFILMENT, on an issue or a shipment. Null on events published before this field existed.

transitions [EventTransition!]! Non-null

The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed.

Fields 3
path String! Non-null
old String Nullable
new String Nullable
actor EventActor! Non-null
Fields 2

Who caused the event.

kind EventActorKind! Non-null
Accepted values 5
USER
API_KEY
JOB
IMPORT
SYSTEM
id String Nullable

Only to a key holding audit.read. A membership or key id, or a background job's kind (e.g. "sales.allocate_order").

pageInfo EventPageInfo! Non-null
Fields 2

A forward-only feed's position.

hasNextPage Boolean! Non-null

More events already wait after endCursor.

endCursor String! Non-null

Where the next call starts. Never null; moves even when the page is empty: keep polling with it.

Example

Query
query events {
  events {
    edges {
      cursor
    }
    nodes {
      id
      type
      entityType
      entityId
      version
      occurredAt
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
Response
{
  "data": {
    "events": {
      "edges": [{"cursor": "example"}],
      "nodes": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "type": "example",
          "entityType": "SALES_ORDER",
          "entityId": "00000000-0000-4000-8000-000000000001",
          "version": 1,
          "occurredAt": "2026-01-01T00:00:00Z"
        }
      ],
      "pageInfo": {"hasNextPage": true, "endCursor": "example"}
    }
  }
}

externalSource

Description

The external source with this code (case-insensitive); null when there is none. Needs integration.read.

Arguments
code String! Required
Returns

A system the ERP knows records from or sends them to, by its code.

code String! Non-null

The code an external reference names it by, e.g. OBERON.

name String! Non-null
kind String! Non-null

ESHOP, ERP or OTHER; read it as a string.

archived Boolean! Non-null

An archived source takes no new references; its old ones can still be removed.

Example

Query
query externalSource($code: String!) {
  externalSource(code: $code) {
    code
    name
    kind
    archived
  }
}
Variables
{"code": "example"}
Response
{
  "data": {
    "externalSource": {
      "code": "example",
      "name": "example",
      "kind": "example",
      "archived": true
    }
  }
}

reportError

Description

Report that an outside system failed to do something with a record: one occurrence of the error, grouped with earlier ones of the same subject, lineId, source and code into one report (created OPEN; a RESOLVED one is reopened and marked regressed; a MUTED one stays muted). The ERP builds the link to the Integrations platform from integrationsTarget; send no URL.

Needs integration.read, errorReport.write and the read permission of the document's kind (receipt.read for a receipt; FORBIDDEN_ROLE naming it otherwise), with the document in the key's warehouse and company scope; a document that does not exist or is out of scope is NOT_FOUND with field subject, a lineId not on it NOT_FOUND with field lineId. A malformed field is VALIDATION with that field. The requestId makes a retry after a lost response safe for 7 days: the same requestId and input answers counted false and created false with the report as it is now (NOT_FOUND with field subject when its document has since been discarded), while different input is CONFLICT with reason REQUEST_ID_REUSED. After 7 days a requestId is forgotten and the same call counts as a new occurrence.

Arguments
input ReportErrorInput! Required
Input fields 10
requestId String! Required

1 to 128 bytes; one per occurrence you report.

subject ErrorSubjectInput! Required
Input fields 2
type ErrorSubjectType! Required
Accepted values 1
STOCK_DOCUMENT

A stock document of any kind: a receipt, an issue, a transfer, a return, ...

id UUID! Required
lineId UUID Optional

A line of the subject the error is about; null for the record as a whole.

source String! Required

The outside system, UPPER_SNAKE_CASE of 2 to 32 characters, e.g. OBERON.

code String! Required

Your code for the error, UPPER_SNAKE_CASE of 2 to 64 characters, e.g. EXPORT_REJECTED.

statusCode Int Optional

The outside system's status, e.g. the HTTP status it answered; 0 to 999.

message String! Required

The reason, as the outside system gave it; 1 to 2000 characters.

details JSON Optional

Machine detail as a JSON object, up to 8 KiB.

occurredAt Time Optional

When it happened by your clock; defaults to when the ERP received it.

integrationsTarget IntegrationsTargetInput Optional
Input fields 4

Where in the Integrations platform this occurrence's technical detail is.

workspace String! Required

The workspace slug: lowercase letters, digits and hyphens, up to 63.

kind IntegrationsTargetKind! Required
Accepted values 4
RUN
RUN_ITEM

An item of a run; parentId is the run.

WORKFLOW_RUN
EVENT
id String! Required

The run's, run item's, workflow run's or event's id there, 1 to 128 bytes.

parentId String Optional

The run of a RUN_ITEM; refused for any other kind.

Returns
errorReport ErrorReport! Non-null
Fields 13
id UUID! Non-null
subject ErrorSubject! Non-null
Fields 2
type ErrorSubjectType! Non-null
Accepted values 1
STOCK_DOCUMENT

A stock document of any kind: a receipt, an issue, a transfer, a return, ...

id UUID! Non-null
lineId UUID Nullable

The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.

source String! Non-null
code String! Non-null
status ErrorReportStatus! Non-null
Accepted values 3
OPEN
RESOLVED
MUTED

Still counted, not shown as open.

mutedUntil Time Nullable

Until when a MUTED report stays muted; null mutes it until a person unmutes it.

regressed Boolean! Non-null

Whether a new occurrence reopened it after it was resolved.

occurrenceCount Int! Non-null
firstSeenAt Time! Non-null
lastSeenAt Time! Non-null
lastStatusCode Int Nullable

The newest occurrence's statusCode.

lastMessage String! Non-null

The newest occurrence's message.

created Boolean! Non-null

Whether this occurrence made the report.

counted Boolean! Non-null

False for a replay of a requestId already answered: nothing was counted.

reopened Boolean! Non-null

Whether this occurrence reopened a RESOLVED report.

Example

Mutation
mutation reportError($input: ReportErrorInput!) {
  reportError(input: $input) {
    errorReport {
      id
      lineId
      source
      code
      status
      mutedUntil
    }
    created
    counted
    reopened
  }
}
Variables
{
  "input": {
    "requestId": "example",
    "subject": {
      "type": "STOCK_DOCUMENT",
      "id": "00000000-0000-4000-8000-000000000001"
    },
    "source": "example",
    "code": "example",
    "message": "example"
  }
}
Response
{
  "data": {
    "reportError": {
      "errorReport": {
        "id": "00000000-0000-4000-8000-000000000001",
        "lineId": "00000000-0000-4000-8000-000000000001",
        "source": "example",
        "code": "example",
        "status": "OPEN",
        "mutedUntil": "2026-01-01T00:00:00Z"
      },
      "created": true,
      "counted": true,
      "reopened": true
    }
  }
}

API access

apiKey

Description

The key you are calling with, as it applies right now -- bounded by its owner.

Returns

The calling key.

id UUID! Non-null

The key's id. Stays the same when its secret is rotated.

name String! Non-null

The name its administrators gave it.

environment ApiKeyEnvironment! Non-null

The deployment the key was minted for.

Accepted values 2
LIVE

Production.

TEST

Every other deployment.

permissions [String!]! Non-null

Effective: what the key was granted, bounded by what its owner holds now. Sorted.

scopes [ApiKeyScope!]! Non-null

Effective: the key's scopes intersected with its owner's, sorted by type, then value. Empty means unrestricted along every dimension; a dimension with no entry is unrestricted.

Fields 2

One value the key is limited to along one dimension.

type ScopeType! Non-null

The dimension: a warehouse, a legal entity, a country or a partner.

Accepted values 4
LEGAL_ENTITY

A legal entity of the organisation.

WAREHOUSE

A warehouse.

COUNTRY

A country, by ISO 3166-1 alpha-2 code.

PARTNER

A business partner.

value String! Non-null

A uuid for a warehouse, a legal entity or a partner; a country code for a country.

Example

Query
query apiKey {
  apiKey {
    id
    name
    environment
    permissions
    scopes {
      type
      value
    }
  }
}
Response
{
  "data": {
    "apiKey": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "example",
      "environment": "LIVE",
      "permissions": ["example"],
      "scopes": [{"type": "LEGAL_ENTITY", "value": "example"}]
    }
  }
}

status

Description

Is the API up and does your key work. Costs 1 point.

Returns

The API answering.

ok Boolean! Non-null

Always true: an API that is down does not answer.

version String! Non-null

The public schema version: "v1".

serverTime Time! Non-null

The server's clock, for a client to compare its own against.

Example

Query
query status {
  status {
    ok
    version
    serverTime
  }
}
Response
{
  "data": {
    "status": {
      "ok": true,
      "version": "example",
      "serverTime": "2026-01-01T00:00:00Z"
    }
  }
}

Objects

AddDocumentVersionResult

Fields
Field Name Description
applied - Boolean! True: this call made the version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.
document - Document!
Example
{"applied": false, "document": Document}

Address

Description

A postal address in a partner's address book. id names this VERSION: editing an address that a document pinned makes a new version with a new id, and the document keeps the old one.

Fields
Field Name Description
id - UUID! Our id of this address version (not of the address across its edits).
label - String The partner's own name for it, e.g. Warehouse Nitra.
isDefault - Boolean! Whether it is the partner's default address of its kind.
recipient - String Who receives it.
street - String! Street and number.
street2 - String A second address line.
city - String! City.
postalCode - String! Postal code.
region - String Region or state.
countryCode - String! ISO 3166-1 alpha-2 country code.
phone - String The phone the carrier calls at this address.
email - String The e-mail delivery notices for this address go to.
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this address's references and are refused anywhere else. They name this version: when the address is edited they move to the new one. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "label": "xyz789",
  "isDefault": true,
  "recipient": "abc123",
  "street": "abc123",
  "street2": "xyz789",
  "city": "xyz789",
  "postalCode": "abc123",
  "region": "xyz789",
  "countryCode": "xyz789",
  "phone": "xyz789",
  "email": "xyz789",
  "externalRefs": ExternalRefConnection
}

AddressConnection

Description

One page of a partner's addresses of one kind.

Fields
Field Name Description
edges - [AddressEdge!]! The addresses with their cursors, the default first.
nodes - [Address!]! The same addresses without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many current addresses of this kind the partner has, capped at 10001: 10001 reads "10000 or more". 0 once the partner is erased.
Example
{
  "edges": [AddressEdge],
  "nodes": [Address],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AddressEdge

Description

One address and its cursor.

Fields
Field Name Description
cursor - String! Where this address sits; pass as after (with first) or before (with last) to the same list of the same partner.
node - Address!
Example
{
  "cursor": "abc123",
  "node": Address
}

AdviceReceiptConnection

Fields
Field Name Description
edges - [ReceiptEdge!]!
nodes - [Receipt!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [ReceiptEdge],
  "nodes": [Receipt],
  "pageInfo": PageInfo,
  "totalCount": 123
}

AdviceReceiptLineConnection

Fields
Field Name Description
edges - [AdviceReceiptLineEdge!]!
nodes - [ReceiptLine!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [AdviceReceiptLineEdge],
  "nodes": [ReceiptLine],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AdviceReceiptLineEdge

Fields
Field Name Description
cursor - String!
node - ReceiptLine!
Example
{
  "cursor": "abc123",
  "node": ReceiptLine
}

AdviceTransferConnection

Fields
Field Name Description
edges - [TransferEdge!]!
nodes - [Transfer!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [TransferEdge],
  "nodes": [Transfer],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AdviceTransferLineConnection

Fields
Field Name Description
edges - [AdviceTransferLineEdge!]!
nodes - [TransferLine!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [AdviceTransferLineEdge],
  "nodes": [TransferLine],
  "pageInfo": PageInfo,
  "totalCount": 987
}

AdviceTransferLineEdge

Fields
Field Name Description
cursor - String!
node - TransferLine!
Example
{
  "cursor": "xyz789",
  "node": TransferLine
}

ApiKeyScope

Description

One value the key is limited to along one dimension.

Fields
Field Name Description
type - ScopeType! The dimension: a warehouse, a legal entity, a country or a partner.
value - String! A uuid for a warehouse, a legal entity or a partner; a country code for a country.
Example
{"type": "LEGAL_ENTITY", "value": "xyz789"}

ApiKeySelf

Description

The calling key.

Fields
Field Name Description
id - UUID! The key's id. Stays the same when its secret is rotated.
name - String! The name its administrators gave it.
environment - ApiKeyEnvironment! The deployment the key was minted for.
permissions - [String!]! Effective: what the key was granted, bounded by what its owner holds now. Sorted.
scopes - [ApiKeyScope!]! Effective: the key's scopes intersected with its owner's, sorted by type, then value. Empty means unrestricted along every dimension; a dimension with no entry is unrestricted.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "name": "xyz789",
  "environment": "LIVE",
  "permissions": ["xyz789"],
  "scopes": [ApiKeyScope]
}

ApiStatus

Description

The API answering.

Fields
Field Name Description
ok - Boolean! Always true: an API that is down does not answer.
version - String! The public schema version: "v1".
serverTime - Time! The server's clock, for a client to compare its own against.
Example
{
  "ok": false,
  "version": "abc123",
  "serverTime": "10:15:30Z"
}

ApiWarning

Description

Something the call did that the caller should know about, though it did not fail.

Fields
Field Name Description
code - String! A fixed code, e.g. PRODUCT_NOT_FOUND.
message - String! What happened, for a person.
field - String The input it concerns, e.g. items[2].product. Null when none.
Example
{
  "code": "abc123",
  "message": "xyz789",
  "field": "abc123"
}

Asset

Description

A named image.

Fields
Field Name Description
id - UUID!
scope - AssetScope!
legalEntityId - UUID The company of a COMPANY asset.
code - String!
reference - String! What a print template writes: company.logo.
name - String!
kind - AssetKind!
contentType - String! image/png or image/jpeg.
width - Int!
height - Int!
sizeBytes - Int!
isPublic - Boolean! Served without authentication at publicUrl. Never a stamp.
publicUrl - String Where an e-mail links a public asset; it changes when the image does. Null when not public.
createdAt - Time!
updatedAt - Time!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "scope": "TENANT",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "xyz789",
  "reference": "xyz789",
  "name": "abc123",
  "kind": "LOGO",
  "contentType": "xyz789",
  "width": 123,
  "height": 987,
  "sizeBytes": 123,
  "isPublic": false,
  "publicUrl": "abc123",
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z"
}

AssetConnection

Fields
Field Name Description
edges - [AssetEdge!]! The assets with their cursors, by scope and code.
nodes - [Asset!]! The same assets without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [AssetEdge],
  "nodes": [Asset],
  "pageInfo": PageInfo
}

AssetEdge

Fields
Field Name Description
cursor - String! Where this asset sits; pass as after (with first) or before (with last).
node - Asset!
Example
{
  "cursor": "xyz789",
  "node": Asset
}

AttachDocumentResult

Fields
Field Name Description
applied - Boolean! True: this call made the document or its new version. False: a replay of an earlier call with the same requestId and input, or the same bytes as the current version; nothing changed.
document - Document!
Example
{"applied": true, "document": Document}

BuiltInPrintTemplate

Description

One of ours: what prints when the organisation has no template of its own.

Fields
Field Name Description
kind - PrintTemplateKind!
syntax - PrintTemplateSyntax!
output - PrintTemplateOutput!
language - String! The language it is in: the one asked for, Slovak when that has none.
body - String!
Example
{
  "kind": "SALES_ORDER",
  "syntax": "JSON",
  "output": "PDF",
  "language": "xyz789",
  "body": "xyz789"
}

CarrierProfile

Description

An operational route of the synchronized Chameleoon catalogue. carrierProfiles lists only the active ones; Shipment.carrier is the route a shipment was sent with, which the catalogue may since have deactivated or dropped (then its codes stand in for its names).

Fields
Field Name Description
code - String! The Chameleoon courier id.
profile - String! The courier's profile id.
name - String! The courier's synchronized display name.
service - String! The profile's synchronized display name. When the catalogue gives the profile none, the courier's name (the same value as name) -- never null, so the field stays as it was published.
Example
{
  "code": "abc123",
  "profile": "xyz789",
  "name": "xyz789",
  "service": "xyz789"
}

CarrierProfileConnection

Description

One keyset-cursor page of active carrier profiles.

Fields
Field Name Description
edges - [CarrierProfileEdge!]! Profiles with their cursors, ordered by code, profile and a stable opaque tiebreaker.
nodes - [CarrierProfile!]! The same profiles without cursors.
totalCount - Int! How many active profiles this organisation has across all pages.
pageInfo - PageInfo! Where this page sits in the active catalogue.
Example
{
  "edges": [CarrierProfileEdge],
  "nodes": [CarrierProfile],
  "totalCount": 987,
  "pageInfo": PageInfo
}

CarrierProfileEdge

Description

One profile and its cursor.

Fields
Field Name Description
cursor - String! Where this profile sits; pass as after (with first) or before (with last).
node - CarrierProfile!
Example
{
  "cursor": "xyz789",
  "node": CarrierProfile
}

CreatePublicTransferAdviceResult

Fields
Field Name Description
created - Boolean!
advice - TransferAdvice!
Example
{"created": false, "advice": TransferAdvice}

CreateReceiptAdviceResult

Fields
Field Name Description
created - Boolean! False: a replay of an earlier call with the same requestId and input.
advice - ReceiptAdvice!
Example
{"created": true, "advice": ReceiptAdvice}

CreateSalesOrderResult

Description

What createSalesOrder did.

Fields
Field Name Description
salesOrder - SalesOrder! The order, as it now stands.
created - Boolean! False when the order had already been placed: the call was a repeat and changed nothing.
warnings - [ApiWarning!]! What happened that did not stop the order.
Example
{
  "salesOrder": SalesOrder,
  "created": false,
  "warnings": [ApiWarning]
}

Document

Fields
Field Name Description
id - UUID!
kind - DocumentKind!
title - String
externalId - String The issuing system's own id of the document.
externalNumber - String The document's number in the issuing system.
createdAt - Time!
updatedAt - Time! When its last version was added.
versionCount - Int! How many versions it has; the current one is the highest.
file - DocumentFile! The current version's file.
downloadUrl - String Where to download the current version: stable across versions, and the API key still needed. Null when the ERP has no public address configured.
versions - DocumentVersionConnection Its versions, newest first: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this document's versions and are refused anywhere else. Null, with an error at its path, when its page cannot be read; the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
salesOrder - SalesOrder The order it is kept with. Null when the order is no longer in the key's sight.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "INVOICE",
  "title": "abc123",
  "externalId": "xyz789",
  "externalNumber": "abc123",
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z",
  "versionCount": 987,
  "file": DocumentFile,
  "downloadUrl": "xyz789",
  "versions": DocumentVersionConnection,
  "salesOrder": SalesOrder
}

DocumentConnection

Fields
Field Name Description
edges - [DocumentEdge!]! The documents with their cursors.
nodes - [Document!]! The same documents without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [DocumentEdge],
  "nodes": [Document],
  "pageInfo": PageInfo,
  "totalCount": 987
}

DocumentEdge

Description

One document and its cursor.

Fields
Field Name Description
cursor - String!
node - Document!
Example
{
  "cursor": "xyz789",
  "node": Document
}

DocumentFile

Fields
Field Name Description
id - UUID!
filename - String! The name it was uploaded with.
contentType - String! The type detected from its content, not the one its name claims.
size - Int! In bytes.
sha256 - String! SHA-256 of the bytes, lower-case hex.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "filename": "abc123",
  "contentType": "xyz789",
  "size": 123,
  "sha256": "xyz789"
}

DocumentVersion

Fields
Field Name Description
versionNo - Int! Counts from 1.
note - String
createdAt - Time!
file - DocumentFile!
downloadUrl - String Where to download this version; the API key still needed. Null as Document.downloadUrl.
Example
{
  "versionNo": 123,
  "note": "xyz789",
  "createdAt": "10:15:30Z",
  "file": DocumentFile,
  "downloadUrl": "xyz789"
}

DocumentVersionConnection

Fields
Field Name Description
edges - [DocumentVersionEdge!]! The versions with their cursors.
nodes - [DocumentVersion!]! The same versions without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [DocumentVersionEdge],
  "nodes": [DocumentVersion],
  "pageInfo": PageInfo,
  "totalCount": 123
}

DocumentVersionEdge

Description

One version and its cursor.

Fields
Field Name Description
cursor - String!
node - DocumentVersion!
Example
{
  "cursor": "abc123",
  "node": DocumentVersion
}

ErrorReport

Fields
Field Name Description
id - UUID!
subject - ErrorSubject!
lineId - UUID The line it is about; null for the record as a whole. A line later removed from a posted or open document keeps its reports, so this may name a line the record no longer has.
source - String!
code - String!
status - ErrorReportStatus!
mutedUntil - Time Until when a MUTED report stays muted; null mutes it until a person unmutes it.
regressed - Boolean! Whether a new occurrence reopened it after it was resolved.
occurrenceCount - Int!
firstSeenAt - Time!
lastSeenAt - Time!
lastStatusCode - Int The newest occurrence's statusCode.
lastMessage - String! The newest occurrence's message.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "subject": ErrorSubject,
  "lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "xyz789",
  "code": "xyz789",
  "status": "OPEN",
  "mutedUntil": "10:15:30Z",
  "regressed": false,
  "occurrenceCount": 123,
  "firstSeenAt": "10:15:30Z",
  "lastSeenAt": "10:15:30Z",
  "lastStatusCode": 987,
  "lastMessage": "abc123"
}

ErrorReportConnection

Fields
Field Name Description
edges - [ErrorReportEdge!]!
nodes - [ErrorReport!]!
pageInfo - PageInfo!
Example
{
  "edges": [ErrorReportEdge],
  "nodes": [ErrorReport],
  "pageInfo": PageInfo
}

ErrorReportEdge

Fields
Field Name Description
cursor - String!
node - ErrorReport!
Example
{
  "cursor": "xyz789",
  "node": ErrorReport
}

ErrorSubject

Fields
Field Name Description
type - ErrorSubjectType!
id - UUID!
Example
{
  "type": "STOCK_DOCUMENT",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

Event

Description

Something that happened to one entity, in one transaction.

Fields
Field Name Description
id - ID! Opaque and unique, increasing in the order events were written -- not always the order the feed returns them. Resume with a cursor, never with an id.
type - String! One of the types listed on events.
entityType - EventEntityType!
entityId - UUID!
version - Int! 1, 2, 3 … per entity, without gaps. Order one entity's events by this.
occurredAt - Time!
origin - EventOrigin Where a receipt, issue, transfer or shipment came from. Null for other entities, and for a shipment without a consignment. origin.id and origin.salesOrderId are given whatever else the key may read: bare ids, which may name records the key cannot open.
transitions - [EventTransition!]! The tracked fields that changed, old and new, as strings: enum codes, "true"/"false", decimal integers; null for none. Orders track status, fulfilmentStatus, paymentStatus, blockedReason, isPriority, invoiceNumber, hasOpenExceptions; receipts, issues and transfers status and revision; attached documents status (ACTIVE, REMOVED) and versionNo (the current version's number); consignments status; shipments status and trackingStatus; transfer advices status, plannedAt, lineCount (the number of lines) and linesChangedAt (the latest change of a line still there): a line added or removed moves lineCount, a line changed or added moves linesChangedAt, and removing the most recently changed line moves it back -- compare, do not assume it only grows. Empty when only untracked data changed.
actor - EventActor!
Example
{
  "id": 4,
  "type": "abc123",
  "entityType": "SALES_ORDER",
  "entityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "version": 987,
  "occurredAt": "10:15:30Z",
  "origin": EventOrigin,
  "transitions": [EventTransition],
  "actor": EventActor
}

EventActor

Description

Who caused the event.

Fields
Field Name Description
kind - EventActorKind!
id - String Only to a key holding audit.read. A membership or key id, or a background job's kind (e.g. "sales.allocate_order").
Example
{"kind": "USER", "id": "abc123"}

EventConnection

Description

One page of events.

Fields
Field Name Description
edges - [EventEdge!]! The events with their cursors.
nodes - [Event!]! The same events without cursors.
pageInfo - EventPageInfo!
Example
{
  "edges": [EventEdge],
  "nodes": [Event],
  "pageInfo": EventPageInfo
}

EventEdge

Description

One event and its cursor.

Fields
Field Name Description
cursor - String! Resume after this event: pass as after.
node - Event!
Example
{
  "cursor": "abc123",
  "node": Event
}

EventOrigin

Fields
Field Name Description
kind - EventOriginKind!
id - UUID The stocktake, consignment (a shipment's too) or advice. Null for MANUAL.
salesOrderId - UUID The consignment's sales order: set only when kind is FULFILMENT, on an issue or a shipment. Null on events published before this field existed.
Example
{
  "kind": "STOCKTAKE",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

EventPageInfo

Description

A forward-only feed's position.

Fields
Field Name Description
hasNextPage - Boolean! More events already wait after endCursor.
endCursor - String! Where the next call starts. Never null; moves even when the page is empty: keep polling with it.
Example
{"hasNextPage": true, "endCursor": "abc123"}

EventTransition

Fields
Field Name Description
path - String!
old - String
new - String
Example
{
  "path": "xyz789",
  "old": "abc123",
  "new": "abc123"
}

ExternalRef

Description

An id another system knows a record by.

Fields
Field Name Description
source - String! The external source's code, e.g. SHOP -- the same string as SalesOrder.source.
externalId - String! The record's id in that system.
parentExternalId - String The parent's id in that system, when the id is unique only under it.
externalNumber - String The number that system shows for the record, when one was recorded.
Example
{
  "source": "xyz789",
  "externalId": "abc123",
  "parentExternalId": "xyz789",
  "externalNumber": "abc123"
}

ExternalRefConnection

Description

One page of a record's external references.

Fields
Field Name Description
edges - [ExternalRefEdge!]! The references with their cursors, by source code; within a source the parentless ones first, then by parent id, external id and the reference's own id.
nodes - [ExternalRef!]! The same references without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many references the record has.
Example
{
  "edges": [ExternalRefEdge],
  "nodes": [ExternalRef],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ExternalRefEdge

Description

One reference and its cursor.

Fields
Field Name Description
cursor - String! Where this reference sits; pass as after (with first) or before (with last) to this record's externalRefs.
node - ExternalRef!
Example
{
  "cursor": "abc123",
  "node": ExternalRef
}

ExternalSource

Description

A system the ERP knows records from or sends them to, by its code.

Fields
Field Name Description
code - String! The code an external reference names it by, e.g. OBERON.
name - String!
kind - String! ESHOP, ERP or OTHER; read it as a string.
archived - Boolean! An archived source takes no new references; its old ones can still be removed.
Example
{
  "code": "abc123",
  "name": "abc123",
  "kind": "abc123",
  "archived": true
}

InstructionProgress

Description

How far the work on an instruction is, read off the documents executing it (linked by header or line; a CANCELLED one counts for nothing). Not a status and never a refusal: an instruction somebody is working on may still be changed. Times are the server's.

Fields
Field Name Description
linesStarted - Int! Lines with anything done or in progress.
linesDone - Int! Lines fully done: nothing remaining.
linesInProgress - Int! Lines with anything on a draft executing document (scanned or typed, not yet moved).
linesRemaining - Int! Lines still owed: remaining above zero while the instruction is OPEN; 0 once it is closed or cancelled.
activeDocuments - Int! Executing documents not finished: a draft (handheld or web) or an open continuous one. Above zero: somebody is working on it.
startedAt - Time When the first linked executing document was created; null while nobody has started.
lastActivityAt - Time The latest change on a linked executing document or its scans; null while nobody has started.
Example
{
  "linesStarted": 123,
  "linesDone": 987,
  "linesInProgress": 123,
  "linesRemaining": 123,
  "activeDocuments": 987,
  "startedAt": "10:15:30Z",
  "lastActivityAt": "10:15:30Z"
}

Invoice

Description

A mirrored invoice, advance invoice or credit note. Needs invoice.read.

Fields
Field Name Description
id - UUID! Our id.
direction - InvoiceDirection!
kind - InvoiceKind!
status - InvoiceStatus!
failureReason - String
source - String! The code of the accounting system's source.
sourceDocumentType - String
sourceChangedAt - Time
syncedAt - Time
cancelled - Boolean!
number - String
variableSymbol - String
constantSymbol - String
specificSymbol - String
supplierNumber - String
orderNumber - String
issueDate - Time
taxPointDate - Time
dueDate - Time
receivedDate - Time
vatClaimDate - Time
legalEntityId - UUID! Our id of the legal entity it belongs to.
legalEntityMatch - InvoiceLegalEntityMatch!
partnerId - UUID Our id of the partner: named, found by IČO or e-mail, or created from the invoice's party.
partnerMatch - InvoicePartnerMatch
partnerEditable - Boolean! A person (or setInvoicePartner) may set or change the partner: none was found, or one was chosen by hand.
seller - InvoiceParty!
buyer - InvoiceParty!
delivery - InvoiceParty!
paymentMethod - InvoicePaymentMethod
paymentMethodName - String
bankAccountNumber - String
bankCode - String
bankName - String
iban - String
swift - String
currencyCode - String!
exchangeRate - Decimal
exchangeRateAmount - Int
homeCurrencyCode - String!
textBeforeItems - String
textAfterItems - String
printedNote - String
vatNote - String The statutory VAT wording the accounting system printed ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH").
reverseCharge - Boolean!
oss - Boolean!
totalNet - Decimal!
totalVat - Decimal!
totalGross - Decimal!
rounding - Decimal!
advancesDeducted - Decimal!
amountDue - Decimal!
totalNetHome - Decimal
totalVatHome - Decimal
totalGrossHome - Decimal
paymentStatus - InvoicePaymentStatus!
paidAmount - Decimal
remainingAmount - Decimal
paidAt - Time
correctsInvoiceId - UUID Our id of the invoice a credit note corrects, when it is mirrored.
correctedNumber - String
correctedIssueDate - Time
correctedTaxPointDate - Time
correctionReason - String
internalNote - String A note for colleagues; never printed.
lines - InvoiceLineConnection The lines, by lineNo. A connection, at most 250 a page.
Arguments
first - Int
after - String
last - Int
before - String
vatSummary - InvoiceVatRowConnection The VAT summary, the highest rate first.
Arguments
first - Int
after - String
last - Int
before - String
settlements - InvoiceSettlementConnection
Arguments
first - Int
after - String
last - Int
before - String
links - InvoiceLinkConnection
Arguments
first - Int
after - String
last - Int
before - String
createdAt - Time!
updatedAt - Time!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "direction": "ISSUED",
  "kind": "INVOICE",
  "status": "PENDING",
  "failureReason": "abc123",
  "source": "abc123",
  "sourceDocumentType": "xyz789",
  "sourceChangedAt": "10:15:30Z",
  "syncedAt": "10:15:30Z",
  "cancelled": false,
  "number": "abc123",
  "variableSymbol": "xyz789",
  "constantSymbol": "xyz789",
  "specificSymbol": "abc123",
  "supplierNumber": "xyz789",
  "orderNumber": "xyz789",
  "issueDate": "10:15:30Z",
  "taxPointDate": "10:15:30Z",
  "dueDate": "10:15:30Z",
  "receivedDate": "10:15:30Z",
  "vatClaimDate": "10:15:30Z",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "legalEntityMatch": "EXPLICIT",
  "partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "partnerMatch": "EXPLICIT",
  "partnerEditable": false,
  "seller": InvoiceParty,
  "buyer": InvoiceParty,
  "delivery": InvoiceParty,
  "paymentMethod": "BANK_TRANSFER",
  "paymentMethodName": "abc123",
  "bankAccountNumber": "xyz789",
  "bankCode": "abc123",
  "bankName": "abc123",
  "iban": "abc123",
  "swift": "xyz789",
  "currencyCode": "xyz789",
  "exchangeRate": Decimal,
  "exchangeRateAmount": 123,
  "homeCurrencyCode": "abc123",
  "textBeforeItems": "xyz789",
  "textAfterItems": "xyz789",
  "printedNote": "xyz789",
  "vatNote": "xyz789",
  "reverseCharge": false,
  "oss": true,
  "totalNet": Decimal,
  "totalVat": Decimal,
  "totalGross": Decimal,
  "rounding": Decimal,
  "advancesDeducted": Decimal,
  "amountDue": Decimal,
  "totalNetHome": Decimal,
  "totalVatHome": Decimal,
  "totalGrossHome": Decimal,
  "paymentStatus": "UNPAID",
  "paidAmount": Decimal,
  "remainingAmount": Decimal,
  "paidAt": "10:15:30Z",
  "correctsInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "correctedNumber": "xyz789",
  "correctedIssueDate": "10:15:30Z",
  "correctedTaxPointDate": "10:15:30Z",
  "correctionReason": "abc123",
  "internalNote": "xyz789",
  "lines": InvoiceLineConnection,
  "vatSummary": InvoiceVatRowConnection,
  "settlements": InvoiceSettlementConnection,
  "links": InvoiceLinkConnection,
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z"
}

InvoiceConnection

Fields
Field Name Description
edges - [InvoiceEdge!]!
nodes - [Invoice!]!
pageInfo - PageInfo!
Example
{
  "edges": [InvoiceEdge],
  "nodes": [Invoice],
  "pageInfo": PageInfo
}

InvoiceEdge

Fields
Field Name Description
cursor - String!
node - Invoice!
Example
{
  "cursor": "xyz789",
  "node": Invoice
}

InvoiceLine

Fields
Field Name Description
id - UUID!
lineNo - Int!
kind - InvoiceLineKind!
name - String!
code - String
barcode - String
manufacturerCode - String
quantity - Decimal
unit - String
unitPriceNet - Decimal
unitPriceGross - Decimal
pricesIncludeVat - Boolean!
vatPercent - Decimal
discountPercent - Decimal
totalNet - Decimal!
totalVat - Decimal!
totalGross - Decimal!
note - String
externalId - String
variantId - UUID
variantMatch - String EXPLICIT when the integration named the variant, else the key that matched it (SUPPLIER_CODE, BARCODE, SKU, ...).
advanceInvoiceId - UUID
salesOrderLineId - UUID
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 123,
  "kind": "ITEM",
  "name": "xyz789",
  "code": "xyz789",
  "barcode": "abc123",
  "manufacturerCode": "abc123",
  "quantity": Decimal,
  "unit": "xyz789",
  "unitPriceNet": Decimal,
  "unitPriceGross": Decimal,
  "pricesIncludeVat": true,
  "vatPercent": Decimal,
  "discountPercent": Decimal,
  "totalNet": Decimal,
  "totalVat": Decimal,
  "totalGross": Decimal,
  "note": "xyz789",
  "externalId": "xyz789",
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "variantMatch": "xyz789",
  "advanceInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "salesOrderLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

InvoiceLineConnection

Fields
Field Name Description
edges - [InvoiceLineEdge!]!
nodes - [InvoiceLine!]!
pageInfo - PageInfo!
totalCount - Int! How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
{
  "edges": [InvoiceLineEdge],
  "nodes": [InvoiceLine],
  "pageInfo": PageInfo,
  "totalCount": 123
}

InvoiceLineEdge

Fields
Field Name Description
cursor - String!
node - InvoiceLine!
Example
{
  "cursor": "abc123",
  "node": InvoiceLine
}

InvoiceLinkConnection

Fields
Field Name Description
edges - [InvoiceLinkEdge!]!
nodes - [InvoiceLink!]!
pageInfo - PageInfo!
totalCount - Int! How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
{
  "edges": [InvoiceLinkEdge],
  "nodes": [InvoiceLink],
  "pageInfo": PageInfo,
  "totalCount": 987
}

InvoiceLinkEdge

Fields
Field Name Description
cursor - String!
node - InvoiceLink!
Example
{
  "cursor": "xyz789",
  "node": InvoiceLink
}

InvoiceParty

Description

One side of the invoice as the accounting system printed it.

Fields
Field Name Description
name - String
street - String
city - String
postalCode - String
countryCode - String ISO 3166-1 alpha-2.
registrationId - String
taxId - String
vatId - String
email - String
phone - String
web - String
Example
{
  "name": "xyz789",
  "street": "abc123",
  "city": "xyz789",
  "postalCode": "xyz789",
  "countryCode": "xyz789",
  "registrationId": "abc123",
  "taxId": "xyz789",
  "vatId": "xyz789",
  "email": "abc123",
  "phone": "abc123",
  "web": "abc123"
}

InvoiceSettlement

Fields
Field Name Description
id - UUID!
kind - InvoiceSettlementKind!
counterInvoiceId - UUID
counterNumber - String
amount - Decimal!
settledOn - Time
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "ADVANCE_DEDUCTION",
  "counterInvoiceId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "counterNumber": "abc123",
  "amount": Decimal,
  "settledOn": "10:15:30Z"
}

InvoiceSettlementConnection

Fields
Field Name Description
edges - [InvoiceSettlementEdge!]!
nodes - [InvoiceSettlement!]!
pageInfo - PageInfo!
totalCount - Int! How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
{
  "edges": [InvoiceSettlementEdge],
  "nodes": [InvoiceSettlement],
  "pageInfo": PageInfo,
  "totalCount": 123
}

InvoiceSettlementEdge

Fields
Field Name Description
cursor - String!
node - InvoiceSettlement!
Example
{
  "cursor": "xyz789",
  "node": InvoiceSettlement
}

InvoiceSyncResult

Description

What syncInvoice or removeInvoice did.

Fields
Field Name Description
invoice - Invoice!
changed - Boolean! False when nothing was written: the same document again, or a STALE one.
reason - InvoiceSyncReason
warnings - [ApiWarning!]! What the match did that the caller should know: a partner found by IČO, a line no code matched.
Example
{
  "invoice": Invoice,
  "changed": false,
  "reason": "STALE",
  "warnings": [ApiWarning]
}

InvoiceVatRow

Fields
Field Name Description
vatPercent - Decimal!
base - Decimal!
vat - Decimal!
gross - Decimal!
baseHome - Decimal
vatHome - Decimal
grossHome - Decimal
Example
{
  "vatPercent": Decimal,
  "base": Decimal,
  "vat": Decimal,
  "gross": Decimal,
  "baseHome": Decimal,
  "vatHome": Decimal,
  "grossHome": Decimal
}

InvoiceVatRowConnection

Fields
Field Name Description
edges - [InvoiceVatRowEdge!]!
nodes - [InvoiceVatRow!]!
pageInfo - PageInfo!
totalCount - Int! How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
{
  "edges": [InvoiceVatRowEdge],
  "nodes": [InvoiceVatRow],
  "pageInfo": PageInfo,
  "totalCount": 123
}

InvoiceVatRowEdge

Fields
Field Name Description
cursor - String!
node - InvoiceVatRow!
Example
{
  "cursor": "xyz789",
  "node": InvoiceVatRow
}

Issue

Description

Goods that left one warehouse.

Fields
Field Name Description
id - UUID!
number - String! The issue's number. Every returned issue has one.
status - IssueStatus!
version - Int The issue's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
effectiveAt - Time! When the goods count as issued.
completedAt - Time
cancelledAt - Time
revision - Int! How many times the completed issue has been revised; 0 as completed.
warehouseId - UUID!
warehouse - Warehouse The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
legalEntityId - UUID The company the issue belongs to; null when it belongs to none.
partnerId - UUID The partner the goods went to; null when the issue names none.
partner - Partner The partner. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A partner outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased partner keeps its id and code, with name null.
origin - IssueOrigin!
externalReference - String The external reference the issue was filed with.
currencyCode - String!
totalValue - Decimal What the goods were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. A completed issue can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
costingPending - Boolean! True while any line's costing is pending. A completed issue can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
lines - IssueLineConnection The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The records other systems made of this issue (setIssueExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this issue's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "abc123",
  "status": "OPEN",
  "version": 123,
  "effectiveAt": "10:15:30Z",
  "completedAt": "10:15:30Z",
  "cancelledAt": "10:15:30Z",
  "revision": 987,
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouse": Warehouse,
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "partner": Partner,
  "origin": IssueOrigin,
  "externalReference": "abc123",
  "currencyCode": "abc123",
  "totalValue": Decimal,
  "costingPending": false,
  "lines": IssueLineConnection,
  "externalRefs": ExternalRefConnection
}

IssueConnection

Description

One page of issues.

Fields
Field Name Description
edges - [IssueEdge!]! The issues with their cursors, newest first by effectiveAt.
nodes - [Issue!]! The same issues without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [IssueEdge],
  "nodes": [Issue],
  "pageInfo": PageInfo
}

IssueEdge

Description

One issue and its cursor.

Fields
Field Name Description
cursor - String! Where this issue sits; pass as after (with first) or before (with last).
node - Issue!
Example
{
  "cursor": "xyz789",
  "node": Issue
}

IssueExternalRefResult

Description

What setIssueExternalRef and removeIssueExternalRef answer.

Fields
Field Name Description
issue - Issue! The issue, as it now stands.
changed - Boolean! False when the call changed nothing: a repeat.
Example
{"issue": Issue, "changed": true}

IssueLine

Description

One product issued.

Fields
Field Name Description
id - UUID!
lineNo - Int!
productVariantId - UUID! The product variant.
productVariant - ProductVariant The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
product - Product The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
quantity - Decimal! The quantity in unit, as entered.
unit - String!
baseQuantity - Decimal! The quantity in baseUnit.
baseUnit - String!
unitCost - Decimal The cost the goods left at, per base unit, without VAT, positive: the valuation area's average. Null while costing is pending, on an exploded set line (its value is its components', which have no one price per set), and on a cancelled issue's lines.
value - Decimal What the line's goods were worth, without VAT, positive; null while costing is pending. A line of an OPEN issue not yet applied to stock has value null and costingPending false, and is not counted in totalValue.
costingPending - Boolean! True while any of the line's stock movements waits to be costed. False for a line of an OPEN issue not yet applied to stock.
lot - Lot The batch or serial number issued, when the product tracks one.
locationCode - String The location the goods were taken from, when the warehouse tracks locations.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 123,
  "productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "productVariant": ProductVariant,
  "product": Product,
  "quantity": Decimal,
  "unit": "xyz789",
  "baseQuantity": Decimal,
  "baseUnit": "xyz789",
  "unitCost": Decimal,
  "value": Decimal,
  "costingPending": false,
  "lot": Lot,
  "locationCode": "abc123"
}

IssueLineConnection

Description

One page of an issue's lines.

Fields
Field Name Description
edges - [IssueLineEdge!]! The lines with their cursors, by line number.
nodes - [IssueLine!]! The same lines without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many lines the issue has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [IssueLineEdge],
  "nodes": [IssueLine],
  "pageInfo": PageInfo,
  "totalCount": 123
}

IssueLineEdge

Description

One line and its cursor.

Fields
Field Name Description
cursor - String! Where this line sits; pass as after (with first) or before (with last) to this issue's lines.
node - IssueLine!
Example
{
  "cursor": "xyz789",
  "node": IssueLine
}

IssueOrigin

Description

What an issue was created from.

Fields
Field Name Description
kind - IssueOriginKind!
id - UUID The consignment or stocktake; null for MANUAL.
Example
{
  "kind": "FULFILMENT",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

ItemAttribute

Description

One choice the customer made about a line.

Fields
Field Name Description
name - String! What was chosen.
value - String! The choice.
Example
{
  "name": "abc123",
  "value": "xyz789"
}

ItemAttributeConnection

Description

One page of an item's attributes.

Fields
Field Name Description
edges - [ItemAttributeEdge!]! The attributes with their cursors.
nodes - [ItemAttribute!]! The same attributes without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many attributes the item has.
Example
{
  "edges": [ItemAttributeEdge],
  "nodes": [ItemAttribute],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ItemAttributeEdge

Description

One attribute and its cursor.

Fields
Field Name Description
cursor - String! Where this attribute sits; pass as after (with first) or before (with last) to this item's attributes.
node - ItemAttribute!
Example
{
  "cursor": "xyz789",
  "node": ItemAttribute
}

LinkedTransferAdviceConnection

Fields
Field Name Description
edges - [TransferAdviceEdge!]!
nodes - [TransferAdvice!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [TransferAdviceEdge],
  "nodes": [TransferAdvice],
  "pageInfo": PageInfo,
  "totalCount": 987
}

Location

Description

A bin (position) of a warehouse.

Fields
Field Name Description
id - UUID!
warehouseId - UUID!
code - String!
name - String
kind - LocationKind!
pickable - Boolean! Whether reservations, and so picking, take from this bin.
zoneCode - String The bin's zone code; null without a zone. Tells apart two bins with one code.
archived - Boolean!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "xyz789",
  "name": "xyz789",
  "kind": "STOCK",
  "pickable": false,
  "zoneCode": "abc123",
  "archived": true
}

LocationConnection

Fields
Field Name Description
edges - [LocationEdge!]!
nodes - [Location!]!
pageInfo - PageInfo!
Example
{
  "edges": [LocationEdge],
  "nodes": [Location],
  "pageInfo": PageInfo
}

LocationEdge

Fields
Field Name Description
cursor - String!
node - Location!
Example
{
  "cursor": "xyz789",
  "node": Location
}

Lot

Description

The batch or serial number of a stock document's line.

Fields
Field Name Description
number - String The batch number; null for a serial or an expiry-only lot.
serialNumber - String The serial number; null for a batch.
expiresAt - Time When the lot expires; null when it does not.
Example
{
  "number": "xyz789",
  "serialNumber": "xyz789",
  "expiresAt": "10:15:30Z"
}

Method

Description

A method in the shop's own words.

Fields
Field Name Description
code - String The shop's code.
name - String! Its name.
Example
{
  "code": "xyz789",
  "name": "abc123"
}

PageInfo

Description

Where a page sits in its connection.

Fields
Field Name Description
hasNextPage - Boolean! More items follow this page.
hasPreviousPage - Boolean! More items precede this page.
startCursor - String The first edge's cursor; pass as before (with last) for the previous page. Null when empty.
endCursor - String The last edge's cursor; pass as after (with first) for the next page. Null when empty.
Example
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "startCursor": "xyz789",
  "endCursor": "xyz789"
}

Parameter

Fields
Field Name Description
name - String!
value - String!
Example
{
  "name": "xyz789",
  "value": "xyz789"
}

ParameterConnection

Fields
Field Name Description
edges - [ParameterEdge!]!
nodes - [Parameter!]!
pageInfo - PageInfo!
totalCount - Int! How many parameters the record has (at most 32).
Example
{
  "edges": [ParameterEdge],
  "nodes": [Parameter],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ParameterEdge

Fields
Field Name Description
cursor - String!
node - Parameter!
Example
{
  "cursor": "xyz789",
  "node": Parameter
}

Partner

Description

A business partner: a customer, a supplier or both. Needs partner.read.

Fields
Field Name Description
id - UUID! Our id.
code - String! Our code of the partner.
name - String Their name. Null once the partner is erased.
registrationId - String The company registration number (IČO). Null when unknown, and once the partner is erased.
taxId - String The tax id (DIČ). Null when unknown, and once the partner is erased.
vatId - String The VAT id (IČ DPH). Null when unknown, and once the partner is erased.
email - String The organisation's general e-mail (info@, not a person's). Null when unknown, and once the partner is erased.
phone - String The organisation's general phone (the switchboard). Null when unknown, and once the partner is erased.
isCustomer - Boolean! Whether we sell to them.
isSupplier - Boolean! Whether we buy from them.
billingAddresses - AddressConnection The current billing addresses, archived ones left out: the default first, then by label (by its bytes, the unlabelled last) and id. A connection, paged with first/after or last/before (at most 250); its cursors belong to this partner's billing addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
deliveryAddresses - AddressConnection The current delivery addresses, archived ones left out, ordered and paged as billingAddresses; its cursors belong to this partner's delivery addresses and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this partner's references and are refused anywhere else. Empty, with totalCount 0, once the partner is erased. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "xyz789",
  "name": "xyz789",
  "registrationId": "xyz789",
  "taxId": "abc123",
  "vatId": "xyz789",
  "email": "xyz789",
  "phone": "abc123",
  "isCustomer": true,
  "isSupplier": false,
  "billingAddresses": AddressConnection,
  "deliveryAddresses": AddressConnection,
  "externalRefs": ExternalRefConnection
}

PickupPoint

Description

A carrier's collection point.

Fields
Field Name Description
code - String The carrier's code of the point.
name - String Its name.
Example
{
  "code": "xyz789",
  "name": "abc123"
}

PrintTemplate

Description

An organisation's print template.

Fields
Field Name Description
id - UUID!
kind - PrintTemplateKind!
syntax - PrintTemplateSyntax!
output - PrintTemplateOutput!
language - String! sk, cs or en: the readers it prints for.
name - String!
isDefault - Boolean! The one its kind and language print with when a print names no template.
bodyBytes - Int!
body - String! The template as written, verbatim (at most 512 KiB). Costs 50.
archivedAt - Time When it was archived; null while it is active.
createdAt - Time!
updatedAt - Time!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "SALES_ORDER",
  "syntax": "JSON",
  "output": "PDF",
  "language": "xyz789",
  "name": "xyz789",
  "isDefault": false,
  "bodyBytes": 987,
  "body": "xyz789",
  "archivedAt": "10:15:30Z",
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z"
}

PrintTemplateConnection

Fields
Field Name Description
edges - [PrintTemplateEdge!]! The templates with their cursors, by kind, language and name.
nodes - [PrintTemplate!]! The same templates without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [PrintTemplateEdge],
  "nodes": [PrintTemplate],
  "pageInfo": PageInfo
}

PrintTemplateEdge

Fields
Field Name Description
cursor - String! Where this template sits; pass as after (with first) or before (with last).
node - PrintTemplate!
Example
{
  "cursor": "abc123",
  "node": PrintTemplate
}

Product

Description

A product: the parent of its variants. Needs item.read.

Fields
Field Name Description
id - UUID! Our id.
code - String! Our code of the product.
name - String! Its name, as the catalogue keeps it (not translated).
baseUnit - String! The unit its stock is counted in.
vatRateCode - String! The code of its VAT rate.
archivedAt - Time When it was archived; null while it is in use.
updatedAt - Time! When it last changed: its own fields (an archive too), or one of its variants, their pack units or their codes. A price change (prices live on price lists) or a rename of an attribute or of one of its values does not move it. It is the start time of the transaction that wrote the change, so a change committed later can carry an earlier updatedAt than one already read: resume an incremental sync from the last updatedAt seen minus 10 minutes, and de-duplicate by id. A sync passes includeArchived: true -- archivedAt then tells a product is gone.
variants - ProductVariantConnection Every variant, archived included, the default first, then by SKU (by its bytes) and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's variants and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this product's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "xyz789",
  "name": "abc123",
  "baseUnit": "xyz789",
  "vatRateCode": "xyz789",
  "archivedAt": "10:15:30Z",
  "updatedAt": "10:15:30Z",
  "variants": ProductVariantConnection,
  "externalRefs": ExternalRefConnection
}

ProductCode

Description

One code of a variant: a barcode or another identifier it is known by.

Fields
Field Name Description
kind - String! EAN13, EAN8, EAN14, GTIN, UPC, MANUFACTURER, CUSTOMS or INTERNAL. Read it as a string.
value - String! The code itself, as stored.
unit - String The pack unit this code identifies; null for the base unit.
isPrimary - Boolean! Whether it is the variant's primary code.
Example
{
  "kind": "abc123",
  "value": "xyz789",
  "unit": "xyz789",
  "isPrimary": false
}

ProductCodeConnection

Description

One page of a variant's codes.

Fields
Field Name Description
edges - [ProductCodeEdge!]! The codes with their cursors, the primary first.
nodes - [ProductCode!]! The same codes without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many codes the variant has.
Example
{
  "edges": [ProductCodeEdge],
  "nodes": [ProductCode],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ProductCodeEdge

Description

One code and its cursor.

Fields
Field Name Description
cursor - String! Where this code sits; pass as after (with first) or before (with last) to this variant's codes.
node - ProductCode!
Example
{
  "cursor": "xyz789",
  "node": ProductCode
}

ProductConnection

Description

One page of products.

Fields
Field Name Description
edges - [ProductEdge!]! The products with their cursors, in the order asked.
nodes - [Product!]! The same products without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [ProductEdge],
  "nodes": [Product],
  "pageInfo": PageInfo
}

ProductEdge

Description

One product and its cursor.

Fields
Field Name Description
cursor - String! Where this product sits; pass as after (with first) or before (with last), under the same sortKey.
node - Product!
Example
{
  "cursor": "xyz789",
  "node": Product
}

ProductPrice

Description

The variant's price on one price list, per base unit.

Fields
Field Name Description
priceListId - UUID! The price list's id.
priceListCode - String! The price list's code.
priceListName - String! The price list's name.
isDefault - Boolean! Whether the list is the default of its currency.
isCompanyDefault - Boolean! Whether the list is THE default: the default list in the company's currency.
currencyCode - String! The list's currency (ISO 4217), the currency of net and gross.
net - Decimal! The price per base unit without VAT, in currencyCode.
gross - Decimal! The price per base unit with VAT, in currencyCode.
vatPercent - Decimal! The VAT rate applied: the product's rate in force in the list's country today.
vatRateCode - String! The code of the product's VAT rate.
includesVat - Boolean! Whether the list's prices are stated with VAT.
Example
{
  "priceListId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "priceListCode": "xyz789",
  "priceListName": "xyz789",
  "isDefault": true,
  "isCompanyDefault": true,
  "currencyCode": "xyz789",
  "net": Decimal,
  "gross": Decimal,
  "vatPercent": Decimal,
  "vatRateCode": "xyz789",
  "includesVat": true
}

ProductPriceConnection

Description

One page of a variant's prices.

Fields
Field Name Description
edges - [ProductPriceEdge!]! The prices with their cursors, the company's default list first.
nodes - [ProductPrice!]! The same prices without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many price lists price the variant.
Example
{
  "edges": [ProductPriceEdge],
  "nodes": [ProductPrice],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ProductPriceEdge

Description

One price and its cursor.

Fields
Field Name Description
cursor - String! Where this price sits; pass as after (with first) or before (with last) to this variant's prices.
node - ProductPrice!
Example
{
  "cursor": "abc123",
  "node": ProductPrice
}

ProductUnit

Description

One alternate unit of a variant: a pack of its base unit.

Fields
Field Name Description
code - String! The unit's code, e.g. BOX.
factor - Decimal! How many base units one of it holds.
isSalesDefault - Boolean! Whether a sale of the variant is proposed in this unit.
isPurchaseDefault - Boolean! Whether a purchase of the variant is proposed in this unit.
Example
{
  "code": "xyz789",
  "factor": Decimal,
  "isSalesDefault": true,
  "isPurchaseDefault": true
}

ProductUnitConnection

Description

One page of a variant's units.

Fields
Field Name Description
edges - [ProductUnitEdge!]! The units with their cursors, by code.
nodes - [ProductUnit!]! The same units without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many units the variant has.
Example
{
  "edges": [ProductUnitEdge],
  "nodes": [ProductUnit],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ProductUnitEdge

Description

One unit and its cursor.

Fields
Field Name Description
cursor - String! Where this unit sits; pass as after (with first) or before (with last) to this variant's units.
node - ProductUnit!
Example
{
  "cursor": "abc123",
  "node": ProductUnit
}

ProductVariant

Description

One sellable variant of a product: what a document line moves. Needs item.read.

Fields
Field Name Description
id - UUID! Our id.
sku - String! Its SKU: unique in the organisation, archived variants included.
selectedOptions - [SelectedOption!]! The variant's axis values, e.g. Colour: black, in the product's axis order. Empty for a product without variants.
isDefault - Boolean! Whether it is the product's default variant.
archivedAt - Time When it was archived; null while it is in use.
ean - String The base unit's GTIN-family code, the primary first, else the oldest; null when it has none.
codes - ProductCodeConnection Its codes (EAN, GTIN, manufacturer's, customs, internal), the primary first, then by kind, value and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's codes and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
units - ProductUnitConnection Its alternate units (packs), by code: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's units and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
prices - ProductPriceConnection Its price on every live price list that has one, the company's default list first, then the other defaults, then by list code and id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's prices and are refused anywhere else. Needs price.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
product - Product! The product it is a variant of.
stockCards - ProductVariantStockCardConnection

Its cards in every warehouse the key may read, by warehouse. Needs stockCard.read.

Archived warehouses included, as stockCards. A connection, paged with first/after or last/before (at most 250). Its cursors belong to this variant's cards and are refused anywhere else. Null, with an error at its path, without stockCard.read or when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.

Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "sku": "abc123",
  "selectedOptions": [SelectedOption],
  "isDefault": false,
  "archivedAt": "10:15:30Z",
  "ean": "abc123",
  "codes": ProductCodeConnection,
  "units": ProductUnitConnection,
  "prices": ProductPriceConnection,
  "externalRefs": ExternalRefConnection,
  "product": Product,
  "stockCards": ProductVariantStockCardConnection
}

ProductVariantConnection

Description

One page of a product's variants.

Fields
Field Name Description
edges - [ProductVariantEdge!]! The variants with their cursors, the default first.
nodes - [ProductVariant!]! The same variants without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many variants the product has, archived included, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [ProductVariantEdge],
  "nodes": [ProductVariant],
  "pageInfo": PageInfo,
  "totalCount": 987
}

ProductVariantEdge

Description

One variant and its cursor.

Fields
Field Name Description
cursor - String! Where this variant sits; pass as after (with first) or before (with last) to this product's variants.
node - ProductVariant!
Example
{
  "cursor": "xyz789",
  "node": ProductVariant
}

ProductVariantStockCardConnection

Description

One page of a product variant's stock cards.

Fields
Field Name Description
edges - [StockCardEdge!]! The cards with their cursors, by warehouse.
nodes - [StockCard!]! The same cards without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many cards the variant has in the warehouses the key may read, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [StockCardEdge],
  "nodes": [StockCard],
  "pageInfo": PageInfo,
  "totalCount": 987
}

Receipt

Description

Goods that came into one warehouse.

Fields
Field Name Description
id - UUID!
number - String! The receipt's number. Every returned receipt has one.
status - ReceiptStatus!
version - Int The receipt's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
effectiveAt - Time! When the goods count as received.
completedAt - Time
cancelledAt - Time
revision - Int! How many times the completed receipt has been revised; 0 as completed.
warehouseId - UUID!
warehouse - Warehouse The warehouse the goods came into. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission); outside the key's warehouse scope it is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
legalEntityId - UUID The company the receipt belongs to; null when it belongs to none.
supplierId - UUID
supplier - Partner The supplier. Needs partner.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A supplier outside the key's partner scope is null with a FORBIDDEN_SCOPE error at its path (extensions.scope PARTNER). The rest is served. An erased supplier keeps its id and code, with name null.
origin - ReceiptOrigin!
receiptAdvice - ReceiptAdvice The receipt advice it answers; null for a receipt answering none. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
externalReference - String The supplier's delivery note or invoice number.
currencyCode - String!
totalValue - Decimal The sum of the lines' values, without VAT; null while any line's costing is pending. A completed receipt can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
costingPending - Boolean! True while any line's costing is pending. A completed receipt can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
lines - ReceiptLineConnection The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The records other systems made of this receipt (setReceiptExternalRef), at most one per source: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this receipt's references and are refused anywhere else. Needs integration.read: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "abc123",
  "status": "OPEN",
  "version": 123,
  "effectiveAt": "10:15:30Z",
  "completedAt": "10:15:30Z",
  "cancelledAt": "10:15:30Z",
  "revision": 123,
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouse": Warehouse,
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "supplier": Partner,
  "origin": ReceiptOrigin,
  "receiptAdvice": ReceiptAdvice,
  "externalReference": "xyz789",
  "currencyCode": "xyz789",
  "totalValue": Decimal,
  "costingPending": true,
  "lines": ReceiptLineConnection,
  "externalRefs": ExternalRefConnection
}

ReceiptAdvice

Fields
Field Name Description
id - UUID!
number - String PP-…, set when it opens; null on a DRAFT.
kind - ReceiptAdviceKind!
status - ReceiptAdviceStatus!
state - ReceiptAdviceState! The status and what arrived combined. Read only when selected.
supplierId - UUID!
supplier - Partner The supplier. Needs partner.read: without it null with FORBIDDEN_ROLE at its path; the rest is served.
warehouseId - UUID!
warehouse - Warehouse The warehouse the goods are coming into. Needs warehouse.read, as Receipt.warehouse.
legalEntityId - UUID The company the advice is filed under; null only on an older draft.
supplierReference - String
advisedAt - Time!
expectedAt - Time
currencyCode - String!
pricesIncludeVat - Boolean!
note - String
openedAt - Time
closedAt - Time
cancelledAt - Time
lines - ReceiptAdviceLineConnection The announced lines, by line number. Page with first/after or last/before (1..250).
Arguments
first - Int
after - String
last - Int
before - String
parameters - ParameterConnection Text parameters in name order, paged with first/after or last/before (1..250).
Arguments
first - Int
after - String
last - Int
before - String
progress - InstructionProgress! How far the work on the advice is, read off its receipts. A line is done when it arrived within the tolerance or its difference is settled. Batched per page.
receipts - AdviceReceiptConnection The receipts answering the advice, newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path. Filter them with the root receipts(filter: {receiptAdviceIds}).
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "abc123",
  "kind": "DELIVERY_NOTE",
  "status": "DRAFT",
  "state": "DRAFT",
  "supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "supplier": Partner,
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouse": Warehouse,
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "supplierReference": "xyz789",
  "advisedAt": "10:15:30Z",
  "expectedAt": "10:15:30Z",
  "currencyCode": "abc123",
  "pricesIncludeVat": false,
  "note": "abc123",
  "openedAt": "10:15:30Z",
  "closedAt": "10:15:30Z",
  "cancelledAt": "10:15:30Z",
  "lines": ReceiptAdviceLineConnection,
  "parameters": ParameterConnection,
  "progress": InstructionProgress,
  "receipts": AdviceReceiptConnection
}

ReceiptAdviceConnection

Fields
Field Name Description
edges - [ReceiptAdviceEdge!]!
nodes - [ReceiptAdvice!]!
pageInfo - PageInfo!
Example
{
  "edges": [ReceiptAdviceEdge],
  "nodes": [ReceiptAdvice],
  "pageInfo": PageInfo
}

ReceiptAdviceEdge

Fields
Field Name Description
cursor - String!
node - ReceiptAdvice!
Example
{
  "cursor": "abc123",
  "node": ReceiptAdvice
}

ReceiptAdviceLine

Fields
Field Name Description
id - UUID!
lineNo - Int!
variantId - UUID The product variant; null only on a DRAFT line the ERP has not matched yet.
supplierSku - String The supplier's own code of the item.
quantity - Decimal! The quantity as announced, in unit.
unit - String!
unitFactor - Decimal! How many base units one unit held when the line was written.
baseQuantity - Decimal!
unitPrice - Decimal
vatPercent - Decimal
expectedAt - Time
batchCode - String
expiresAt - Time
serialNumber - String
settlement - ReceiptAdviceLineSettlement What a person decided about the line's difference; null while nothing is decided.
received - Decimal! What arrived on open and completed receipts, in base units. Read only when selected.
remaining - Decimal! What is still announced, in base units: baseQuantity less received, never below 0.
inProgress - Decimal! What is on draft receipts (scanned on a handheld or typed in the web), in base units: on its way in, not yet received.
receiptStatus - ReceiptAdviceLineReceiptStatus!
receiptLines - AdviceReceiptLineConnection The receipt lines that answered this line, on receipts that are not drafts, oldest first, paged 1..250. Needs receipt.read too: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 987,
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "supplierSku": "abc123",
  "quantity": Decimal,
  "unit": "xyz789",
  "unitFactor": Decimal,
  "baseQuantity": Decimal,
  "unitPrice": Decimal,
  "vatPercent": Decimal,
  "expectedAt": "10:15:30Z",
  "batchCode": "xyz789",
  "expiresAt": "10:15:30Z",
  "serialNumber": "abc123",
  "settlement": "SHORT_ACCEPTED",
  "received": Decimal,
  "remaining": Decimal,
  "inProgress": Decimal,
  "receiptStatus": "AWAITING",
  "receiptLines": AdviceReceiptLineConnection
}

ReceiptAdviceLineConnection

Fields
Field Name Description
edges - [ReceiptAdviceLineEdge!]!
nodes - [ReceiptAdviceLine!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [ReceiptAdviceLineEdge],
  "nodes": [ReceiptAdviceLine],
  "pageInfo": PageInfo,
  "totalCount": 987
}

ReceiptAdviceLineEdge

Fields
Field Name Description
cursor - String!
node - ReceiptAdviceLine!
Example
{
  "cursor": "xyz789",
  "node": ReceiptAdviceLine
}

ReceiptConnection

Description

One page of receipts.

Fields
Field Name Description
edges - [ReceiptEdge!]! The receipts with their cursors, newest first by effectiveAt.
nodes - [Receipt!]! The same receipts without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [ReceiptEdge],
  "nodes": [Receipt],
  "pageInfo": PageInfo
}

ReceiptEdge

Description

One receipt and its cursor.

Fields
Field Name Description
cursor - String! Where this receipt sits; pass as after (with first) or before (with last).
node - Receipt!
Example
{
  "cursor": "abc123",
  "node": Receipt
}

ReceiptExternalRefResult

Description

What setReceiptExternalRef and removeReceiptExternalRef answer.

Fields
Field Name Description
receipt - Receipt! The receipt, as it now stands.
changed - Boolean! False when the call changed nothing: a repeat.
Example
{"receipt": Receipt, "changed": false}

ReceiptLine

Description

One product received.

Fields
Field Name Description
id - UUID!
lineNo - Int!
productVariantId - UUID! The product variant.
productVariant - ProductVariant The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
product - Product The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
quantity - Decimal! The quantity in unit, as entered.
unit - String!
baseQuantity - Decimal! The quantity in baseUnit.
baseUnit - String!
unitCost - Decimal The cost the goods entered at, per base unit, without VAT: the line's price, or the area average when it carries none (always the area average for STOCKTAKE; see origin.kind). Null while costing is pending, on an exploded set line (its value is its components', which have no one price per set), and on a cancelled receipt's lines.
value - Decimal The line's value, without VAT; null while costing is pending. A completed receipt can still be pending: read it again later. A line of an OPEN receipt not yet applied to stock has value null and costingPending false, and is not counted in totalValue.
costingPending - Boolean! True while any of the line's stock movements waits to be costed. A completed receipt can still be pending: read it again later. False for a line of an OPEN receipt not yet applied to stock (its value is null and it is not counted in totalValue).
lot - Lot The batch or serial number received, when the product tracks one.
locationCode - String The location the goods were put to, when the warehouse tracks locations.
receiptAdviceLineId - UUID The receipt advice line this line answers. Needs advice.read: without it null with FORBIDDEN_ROLE at its path.
receiptAdviceLine - ReceiptAdviceLine The receipt advice line this line answers. Needs advice.read: without it null with FORBIDDEN_ROLE at its path; outside the key's scope null. The rest is served.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 123,
  "productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "productVariant": ProductVariant,
  "product": Product,
  "quantity": Decimal,
  "unit": "abc123",
  "baseQuantity": Decimal,
  "baseUnit": "xyz789",
  "unitCost": Decimal,
  "value": Decimal,
  "costingPending": false,
  "lot": Lot,
  "locationCode": "abc123",
  "receiptAdviceLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "receiptAdviceLine": ReceiptAdviceLine
}

ReceiptLineConnection

Description

One page of a receipt's lines.

Fields
Field Name Description
edges - [ReceiptLineEdge!]! The lines with their cursors, by line number.
nodes - [ReceiptLine!]! The same lines without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many lines the receipt has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [ReceiptLineEdge],
  "nodes": [ReceiptLine],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ReceiptLineEdge

Description

One line and its cursor.

Fields
Field Name Description
cursor - String! Where this line sits; pass as after (with first) or before (with last) to this receipt's lines.
node - ReceiptLine!
Example
{
  "cursor": "abc123",
  "node": ReceiptLine
}

ReceiptOrigin

Description

What a receipt was created from.

Fields
Field Name Description
kind - ReceiptOriginKind!
id - UUID The advice or stocktake; null for MANUAL.
Example
{
  "kind": "MANUAL",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

RecordException

Description

Something a record was created with that needs a person: what it is, where, and how it was settled.

Fields
Field Name Description
code - String! A fixed code, e.g. PAYMENT_METHOD_UNKNOWN. Read it as a string: more may be added.
field - String The input it concerns, e.g. items[2].unit. Null when none.
message - String! What it is, for a person.
data - JSON Machine detail as a JSON object, e.g. {"expected": "120.50", "actual": "120.49"}.
lineId - UUID Our id of the order line it is on. Null when it is on the order itself.
origin - String! What raised it: API, CSV_IMPORT or SYSTEM.
createdAt - Time! When it was raised.
resolvedAt - Time When it was settled. Null while it is open.
resolution - String How it was settled: RESOLVED_BY_USER, RESOLVED_BY_SYSTEM or UNBLOCKED. Null while it is open.
Example
{
  "code": "abc123",
  "field": "xyz789",
  "message": "abc123",
  "data": {},
  "lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "origin": "abc123",
  "createdAt": "10:15:30Z",
  "resolvedAt": "10:15:30Z",
  "resolution": "abc123"
}

RecordExceptionConnection

Description

One page of an order's exceptions.

Fields
Field Name Description
edges - [RecordExceptionEdge!]! The exceptions with their cursors.
nodes - [RecordException!]! The same exceptions without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many exceptions the order has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [RecordExceptionEdge],
  "nodes": [RecordException],
  "pageInfo": PageInfo,
  "totalCount": 987
}

RecordExceptionEdge

Description

One exception and its cursor.

Fields
Field Name Description
cursor - String! Where this exception sits; pass as after (with first) or before (with last) to this order's exceptions.
node - RecordException!
Example
{
  "cursor": "xyz789",
  "node": RecordException
}

RemoveDocumentResult

Fields
Field Name Description
applied - Boolean! True: this call removed it. False: a replay of the call that did.
documentId - UUID!
Example
{
  "applied": true,
  "documentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

ReportErrorResult

Fields
Field Name Description
errorReport - ErrorReport!
created - Boolean! Whether this occurrence made the report.
counted - Boolean! False for a replay of a requestId already answered: nothing was counted.
reopened - Boolean! Whether this occurrence reopened a RESOLVED report.
Example
{
  "errorReport": ErrorReport,
  "created": true,
  "counted": true,
  "reopened": true
}

SalesOrder

Description

A sales order.

Fields
Field Name Description
invoices - SalesOrderInvoiceConnection The invoices linked to the order, newest issued first (at most 250 a page). Needs invoice.read: without it null with FORBIDDEN_ROLE at its path; the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
id - UUID! Our id.
number - String The order's number. Null while a draft.
status - SalesOrderStatus! Where the order is in its life.
legalEntityId - UUID Our id of the legal entity (the company) that sells it. Null only for an order without one.
source - String The code of the source that placed it. Null for an order made here.
externalId - String The source's id of the order.
externalNumber - String The order number the customer saw in the shop.
sourceUrl - String A link to the order in the shop's administration.
orderedAt - Time! When the customer placed it.
confirmedAt - Time When it was confirmed, by this system's clock.
fulfilmentStatus - SalesOrderFulfilmentStatus! How much has left the warehouse.
paymentStatus - SalesOrderPaymentStatus! Whether it is paid.
currencyCode - String! ISO 4217 code of its currency.
pricesIncludeVat - Boolean Whether its prices include VAT: as its priced items say, or, with none, as its charges other than ROUNDING say. Null when neither has a price.
totalNet - Decimal! What is owed without VAT, cancelled quantity excluded.
totalVat - Decimal! The VAT on it.
totalGross - Decimal! What is owed including VAT.
paidAmount - Decimal! What the customer has paid, less refunds.
discountPercent - Decimal The order-wide discount in percent, taken off every goods line after the line's own discount. lineTotal and the totals already apply it; charges are not discounted. Null when there is none.
invoiceNumber - String The number of the invoice another system issued for this order (setSalesOrderInvoice). Null while there is none. A change of it is a transition of the order's events (see events); invoiceExternalId is not tracked there, so a change of it alone still publishes sales_order.changed, with no transition.
invoiceExternalId - String That system's own id of the invoice. Null while there is none.
customerId - UUID! Our id of the customer. Served to every key that reads the order.
customer - Partner Who ordered. Needs partner.read: without it null with FORBIDDEN_ROLE; outside the key's partner scope null with FORBIDDEN_SCOPE (extensions.scope PARTNER). An erased customer reads with name null.
billingAddress - SalesOrderAddress The billing address version the order pinned, kept as it was. Needs partner.read and the customer in the key's partner scope (FORBIDDEN_ROLE / FORBIDDEN_SCOPE otherwise). Null once the customer is erased.
deliveryAddress - SalesOrderAddress The delivery address version the order pinned, guarded as billingAddress.
pickupPoint - PickupPoint The carrier's collection point, when delivered to one.
sourceDeliveryMethod - Method The delivery method in the shop's own words.
carrier - CarrierProfile The normalized operational carrier. Null when none was selected or when the requested pair was UNKNOWN or UNVERIFIED; those failures are available in exceptions.
paymentMethod - PaymentMethod! How the customer intends to pay.
sourcePaymentMethod - Method The payment method in the shop's own words.
contactEmail - String The e-mail the customer gave for this order. Guarded as billingAddress: needs partner.read and the partner scope; null once the customer is erased.
contactPhone - String The phone the customer gave for this order, guarded as contactEmail.
preferredWarehouseId - UUID Our id of the warehouse the order reserves from, when it has one.
preferredWarehouse - Warehouse That warehouse. Needs warehouse.read: without it null with FORBIDDEN_ROLE; outside the key's warehouse scope null with FORBIDDEN_SCOPE (extensions.scope WAREHOUSE).
note - String What the customer wrote with the order. Null once the customer is erased.
items - SalesOrderItemConnection The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's items and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
charges - SalesOrderChargeConnection Everything that is not goods, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's charges and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
blocked - SalesOrderBlock Why no consignment of the order may proceed. Null when nothing stops it.
exceptions - RecordExceptionConnection What the order was created with that needs a person, open and resolved, oldest first (by createdAt, then id): a connection, paged with first/after or last/before (at most 250). Empty when nothing did. Its cursors belong to this order's exceptions and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this order's references and are refused anywhere else. source and externalId above are one of them: the one the request named, else the oldest. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
documents - DocumentConnection The files attached to the order (attachDocument), oldest first: a connection, paged with first/after or last/before (at most 250); kinds narrows it to those kinds. A removed document is left out. Its cursors belong to this order's documents and are refused anywhere else. Needs integration.read and order.read. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
kinds - [DocumentKind!]
changedAt - Time When the order's last event was published (see events). Null only for an order never published.
shipments - ShipmentConnection

The order's carrier shipments, oldest first: live and cancelled, never one that did not reach the carrier. Requires shipment.read: null with FORBIDDEN_ROLE without it. Shipments outside the key's legal-entity or warehouse scope are left out.

Pass exactly one of first or last, from 1 to 250: first (with after) pages forward, last (with before) backward.

Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "invoices": SalesOrderInvoiceConnection,
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "xyz789",
  "status": "DRAFT",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "abc123",
  "externalId": "xyz789",
  "externalNumber": "xyz789",
  "sourceUrl": "abc123",
  "orderedAt": "10:15:30Z",
  "confirmedAt": "10:15:30Z",
  "fulfilmentStatus": "UNFULFILLED",
  "paymentStatus": "UNPAID",
  "currencyCode": "abc123",
  "pricesIncludeVat": true,
  "totalNet": Decimal,
  "totalVat": Decimal,
  "totalGross": Decimal,
  "paidAmount": Decimal,
  "discountPercent": Decimal,
  "invoiceNumber": "xyz789",
  "invoiceExternalId": "xyz789",
  "customerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "customer": Partner,
  "billingAddress": SalesOrderAddress,
  "deliveryAddress": SalesOrderAddress,
  "pickupPoint": PickupPoint,
  "sourceDeliveryMethod": Method,
  "carrier": CarrierProfile,
  "paymentMethod": "CARD",
  "sourcePaymentMethod": Method,
  "contactEmail": "abc123",
  "contactPhone": "xyz789",
  "preferredWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "preferredWarehouse": Warehouse,
  "note": "abc123",
  "items": SalesOrderItemConnection,
  "charges": SalesOrderChargeConnection,
  "blocked": SalesOrderBlock,
  "exceptions": RecordExceptionConnection,
  "externalRefs": ExternalRefConnection,
  "documents": DocumentConnection,
  "changedAt": "10:15:30Z",
  "shipments": ShipmentConnection
}

SalesOrderAddress

Description

An address an order was sent to.

Fields
Field Name Description
id - UUID! Our id of this address version.
recipient - String Who receives it.
street - String! Street and number.
street2 - String A second address line.
city - String! City.
postalCode - String! Postal code.
region - String Region or state.
countryCode - String! ISO 3166-1 alpha-2 country code.
phone - String The phone the carrier calls.
email - String The e-mail delivery notices go to.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "recipient": "xyz789",
  "street": "xyz789",
  "street2": "xyz789",
  "city": "abc123",
  "postalCode": "abc123",
  "region": "abc123",
  "countryCode": "abc123",
  "phone": "xyz789",
  "email": "abc123"
}

SalesOrderBlock

Description

What stops an order.

Fields
Field Name Description
reason - String! A fixed code: NEEDS_REVIEW (the order has open exceptions), AWAITING_PAYMENT, SUSPECTED_FRAUD, INCORRECT_ADDRESS, CUSTOMER_REQUEST or OTHER. Read it as a string: more may be added.
note - String What the person or the system wrote about it. A person's note reads null unless the key holds order.write; NEEDS_REVIEW's, which the system wrote, reads for every key.
at - Time! When the order was stopped.
Example
{
  "reason": "xyz789",
  "note": "abc123",
  "at": "10:15:30Z"
}

SalesOrderChangeResult

Description

What markSalesOrderPaid, cancelSalesOrder or setSalesOrderInvoice did.

Fields
Field Name Description
salesOrder - SalesOrder! The order, as it now stands.
changed - Boolean! False when the order already was as asked: the call was a repeat and changed nothing.
Example
{"salesOrder": SalesOrder, "changed": true}

SalesOrderCharge

Description

Something on an order that is not goods.

Fields
Field Name Description
id - UUID! Our id.
kind - ChargeKind! What it is for.
code - String The shop's code of the charge.
name - String! Its name.
amount - Decimal! The whole amount, as sent. Positive for every kind but ROUNDING, whose residue may be negative; a DISCOUNT is positive and subtracted.
vatPercent - Decimal! The VAT rate in percent.
pricesIncludeVat - Boolean! Whether amount includes VAT. A charge may differ from the order's pricesIncludeVat.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "DELIVERY",
  "code": "xyz789",
  "name": "xyz789",
  "amount": Decimal,
  "vatPercent": Decimal,
  "pricesIncludeVat": false
}

SalesOrderChargeConnection

Description

One page of an order's charges.

Fields
Field Name Description
edges - [SalesOrderChargeEdge!]! The charges with their cursors.
nodes - [SalesOrderCharge!]! The same charges without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many charges the order has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [SalesOrderChargeEdge],
  "nodes": [SalesOrderCharge],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SalesOrderChargeEdge

Description

One charge and its cursor.

Fields
Field Name Description
cursor - String! Where this charge sits; pass as after (with first) or before (with last) to this order's charges.
node - SalesOrderCharge!
Example
{
  "cursor": "xyz789",
  "node": SalesOrderCharge
}

SalesOrderConnection

Description

One page of salesOrders.

Fields
Field Name Description
edges - [SalesOrderEdge!]! The orders with their cursors, newest first by orderedAt.
nodes - [SalesOrder!]! The same orders without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [SalesOrderEdge],
  "nodes": [SalesOrder],
  "pageInfo": PageInfo
}

SalesOrderEdge

Description

One order and its cursor.

Fields
Field Name Description
cursor - String! Where this order sits; pass as after (with first) or before (with last).
node - SalesOrder!
Example
{
  "cursor": "abc123",
  "node": SalesOrder
}

SalesOrderInvoiceConnection

Description

The invoices linked to one order.

Fields
Field Name Description
edges - [InvoiceEdge!]!
nodes - [Invoice!]!
pageInfo - PageInfo!
totalCount - Int! How many in all, capped at 10001 (that many reads "10000 or more"). Counted only when selected.
Example
{
  "edges": [InvoiceEdge],
  "nodes": [Invoice],
  "pageInfo": PageInfo,
  "totalCount": 987
}

SalesOrderItem

Description

One goods line of an order.

Fields
Field Name Description
id - UUID! Our id.
externalId - String The source's id of the line.
productVariantId - UUID Our id of the product variant. Null while the line is not linked to one.
productVariant - ProductVariant The product variant the line is linked to; null while it is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
product - Product The variant's parent product; null while the line is not linked. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
sku - String The SKU as the shop sent it -- or, for a line whose EAN several products carry and no sku was sent, that EAN.
name - String The name as the customer saw it.
variantName - String The variant's name as the customer saw it.
quantity - Decimal! How many, in unit.
cancelledQuantity - Decimal! How many were cancelled, in unit. quantity less this is what the order still asks for.
unit - String The unit code. Null: the product's base unit.
unitFactor - Decimal! The order line's snapshotted number of base units per unit. Use this, not today's catalogue factor, to compare line quantities with stock cards.
unitPrice - Decimal The final price of one unit, after the line's discount. Null while unpriced.
originalUnitPrice - Decimal The price of one unit before the discount. Null when there is none.
vatPercent - Decimal The VAT rate in percent.
pricesIncludeVat - Boolean Whether unitPrice includes VAT. A line may differ from the order's pricesIncludeVat. Null while unpriced.
lineTotal - Decimal The line's total on its live quantity, net or gross as the order's pricesIncludeVat says. Null while unpriced.
attributes - ItemAttributeConnection What the customer chose about the line, in the order it was sent: a connection, paged with first/after or last/before (at most 250). Empty once the customer is erased. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
reserved - Decimal How much stock is reserved for it now, in unit. Needs reservation.read: without it null with FORBIDDEN_ROLE.
picked - Decimal How much has been picked for live consignments but not shipped, in unit. Picking consumes the reservation. Needs reservation.read: without it null with FORBIDDEN_ROLE.
outstanding - Decimal! How much is still to ship, in unit: ordered less shipped and cancelled.
warehouses - SalesOrderItemWarehouseConnection The line warehouse by warehouse, by warehouse id: what each warehouse's consignments hold (reserved, picked) and have shipped, in unit. Sums to reserved and picked. Warehouses outside the key's scope are left out. Paged 1..250. Needs reservation.read: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
linked - Boolean! Whether the line names one of our products and can be reserved and shipped.
externalRefs - ExternalRefConnection The ids other systems know it by, by source code, then parent id (none first), external id and the reference's own id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this item's references and are refused anywhere else. externalId above is the oldest of them under the order's source. Needs integration.read: without it null with FORBIDDEN_ROLE at its path. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "externalId": "xyz789",
  "productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "productVariant": ProductVariant,
  "product": Product,
  "sku": "xyz789",
  "name": "xyz789",
  "variantName": "abc123",
  "quantity": Decimal,
  "cancelledQuantity": Decimal,
  "unit": "abc123",
  "unitFactor": Decimal,
  "unitPrice": Decimal,
  "originalUnitPrice": Decimal,
  "vatPercent": Decimal,
  "pricesIncludeVat": false,
  "lineTotal": Decimal,
  "attributes": ItemAttributeConnection,
  "reserved": Decimal,
  "picked": Decimal,
  "outstanding": Decimal,
  "warehouses": SalesOrderItemWarehouseConnection,
  "linked": true,
  "externalRefs": ExternalRefConnection
}

SalesOrderItemConnection

Description

One page of an order's items.

Fields
Field Name Description
edges - [SalesOrderItemEdge!]! The items with their cursors.
nodes - [SalesOrderItem!]! The same items without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many items the order has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [SalesOrderItemEdge],
  "nodes": [SalesOrderItem],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SalesOrderItemEdge

Description

One item and its cursor.

Fields
Field Name Description
cursor - String! Where this item sits; pass as after (with first) or before (with last) to this order's items.
node - SalesOrderItem!
Example
{
  "cursor": "xyz789",
  "node": SalesOrderItem
}

SalesOrderItemWarehouse

Description

What one order line has in one warehouse, in the line's unit.

Fields
Field Name Description
warehouseId - UUID!
reserved - Decimal! Reserved for it on this warehouse's live consignments.
picked - Decimal! Picked for it on this warehouse's live consignments, not yet shipped.
held - Decimal! reserved + picked: what this warehouse holds for the line.
shipped - Decimal! Shipped from this warehouse.
Example
{
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "reserved": Decimal,
  "picked": Decimal,
  "held": Decimal,
  "shipped": Decimal
}

SalesOrderItemWarehouseConnection

Fields
Field Name Description
edges - [SalesOrderItemWarehouseEdge!]!
nodes - [SalesOrderItemWarehouse!]!
pageInfo - PageInfo!
totalCount - Int! How many warehouses the line has figures in.
Example
{
  "edges": [SalesOrderItemWarehouseEdge],
  "nodes": [SalesOrderItemWarehouse],
  "pageInfo": PageInfo,
  "totalCount": 123
}

SalesOrderItemWarehouseEdge

Fields
Field Name Description
cursor - String!
node - SalesOrderItemWarehouse!
Example
{
  "cursor": "abc123",
  "node": SalesOrderItemWarehouse
}

SelectedOption

Description

One axis value of a variant: the axis's name and the value's name.

Fields
Field Name Description
name - String! The axis's name, e.g. Colour.
value - String! The value's name on that axis, e.g. black.
Example
{
  "name": "abc123",
  "value": "abc123"
}

Shipment

Description

A carrier shipment of a consignment, as the carrier accepted it.

Fields
Field Name Description
id - UUID!
number - String! Its own number, e.g. ZAS-2026-00001.
status - ShipmentStatus!
numbers - [String!] The carrier's shipping numbers (tracking numbers), in the carrier's order; empty when it answered none usable. They never arrive later: a CREATED shipment has every number it will have. A number finds the recipient's address at the carrier, so it requires partner.read and the shipment's customer in the key's partner scope: null with FORBIDDEN_ROLE or FORBIDDEN_SCOPE at this path without them, the rest of the shipment served. Null, without an error, once the customer is erased.
trackingStatus - String! The carrier's tracking state, as the events feed carries it: PENDING, LABEL_CREATED, IN_TRANSIT, OUT_FOR_DELIVERY, READY_FOR_PICKUP, DELIVERED, RETURNED, FAILED or UNKNOWN. More codes may be added.
carrier - CarrierProfile! The carrier route it was sent with. Its names are the catalogue's; a route the catalogue no longer holds keeps its codes as names.
salesOrderId - UUID The sales order it ships. A bare id, which may name an order the key cannot open.
fulfilmentId - UUID The consignment it ships. A bare id.
version - Int Its last event's version, as in the events feed. Null when this read and the last event disagree (a newer event is being published) or it has published none.
createdAt - Time!
changedAt - Time When its last event was published; null exactly when version is.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "xyz789",
  "status": "CREATED",
  "numbers": ["abc123"],
  "trackingStatus": "abc123",
  "carrier": CarrierProfile,
  "salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "fulfilmentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "version": 123,
  "createdAt": "10:15:30Z",
  "changedAt": "10:15:30Z"
}

ShipmentConnection

Description

One page of an order's shipments.

Fields
Field Name Description
edges - [ShipmentEdge!]! The shipments with their cursors.
nodes - [Shipment!]! The same shipments without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many shipments the order has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [ShipmentEdge],
  "nodes": [Shipment],
  "pageInfo": PageInfo,
  "totalCount": 123
}

ShipmentEdge

Description

One shipment and its cursor.

Fields
Field Name Description
cursor - String! Where this shipment sits; pass as after (with first) or before (with last) to this order's shipments.
node - Shipment!
Example
{
  "cursor": "abc123",
  "node": Shipment
}

StockCard

Description

One variant in one warehouse, with its figures. Needs stockCard.read.

Fields
Field Name Description
warehouseId - UUID! The warehouse's id.
variantId - UUID! The product variant's id.
warehouse - Warehouse The warehouse. Needs warehouse.read.
productVariant - ProductVariant The product variant. Needs item.read.
figures - StockFigures! Its figures now.
version - Int! 1, 2, 3 … per card: the version of its latest change record; 0 before its first. Records of this card at or below it are already in figures: ignore them. For a second or two, the record just above it can carry figures older than the export's; the record after it heals that, so compare the figures, not only the versions.
Example
{
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouse": Warehouse,
  "productVariant": ProductVariant,
  "figures": StockFigures,
  "version": 987
}

StockCardChange

Description

One real change of a stock card's figures. Needs stockCard.read. A change of a figure no record shows (e.g. a reservation moving between orders of one source) is not one.

Fields
Field Name Description
id - ID! Opaque and unique, increasing in the order records were written. Resume with a cursor, never with an id.
warehouseId - UUID! The warehouse's id.
variantId - UUID! The product variant's id.
warehouse - Warehouse The warehouse. Needs warehouse.read.
productVariant - ProductVariant The product variant. Needs item.read.
version - Int! 1, 2, 3 … per card, without gaps. Compare with StockCard.version.
occurredAt - Time!
origin - StockCardChangeOrigin!
quantityChanged - Boolean!
reservedChanged - Boolean!
reservedBySourceChanged - Boolean!
availableChanged - Boolean!
advisedChanged - Boolean!
onOrderChanged - Boolean!
current - StockFigures! The figures after this change.
previous - StockFigures The figures before this change; null when no earlier figures were known.
Example
{
  "id": 4,
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouse": Warehouse,
  "productVariant": ProductVariant,
  "version": 123,
  "occurredAt": "10:15:30Z",
  "origin": "LIVE",
  "quantityChanged": true,
  "reservedChanged": false,
  "reservedBySourceChanged": false,
  "availableChanged": true,
  "advisedChanged": true,
  "onOrderChanged": true,
  "current": StockFigures,
  "previous": StockFigures
}

StockCardChangeConnection

Description

One page of stock card changes.

Fields
Field Name Description
edges - [StockCardChangeEdge!]! The records with their cursors, oldest first.
nodes - [StockCardChange!]! The same records without cursors.
pageInfo - EventPageInfo!
Example
{
  "edges": [StockCardChangeEdge],
  "nodes": [StockCardChange],
  "pageInfo": EventPageInfo
}

StockCardChangeEdge

Description

One stock card change and its cursor.

Fields
Field Name Description
cursor - String! Resume after this record: pass as after.
node - StockCardChange!
Example
{
  "cursor": "abc123",
  "node": StockCardChange
}

StockCardConnection

Description

One page of stock cards.

Fields
Field Name Description
edges - [StockCardEdge!]! The cards with their cursors, by variant then warehouse.
nodes - [StockCard!]! The same cards without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [StockCardEdge],
  "nodes": [StockCard],
  "pageInfo": PageInfo
}

StockCardEdge

Description

One stock card and its cursor.

Fields
Field Name Description
cursor - String! Where this card sits; pass as after (with first) or before (with last).
node - StockCard!
Example
{
  "cursor": "abc123",
  "node": StockCard
}

StockFigures

Description

A stock card's figures, one number each.

Fields
Field Name Description
quantity - Decimal! Physically in the warehouse: what its stock movements sum to.
reserved - Decimal! Promised to orders, every batch.
reservedBySource - [StockReservationBySource!]! reserved by the source of the owning order (null: an order without one); sums to reserved; by source, null first.
available - Decimal! What may still be promised — NOT quantity − reserved: blocked, quarantined and expired-under-policy batches and non-pickable bins are excluded.
advised - Decimal! On an open advice, not yet received.
onOrder - Decimal! On a sent purchase order no open advice announces yet; never overlaps advised.
Example
{
  "quantity": Decimal,
  "reserved": Decimal,
  "reservedBySource": [StockReservationBySource],
  "available": Decimal,
  "advised": Decimal,
  "onOrder": Decimal
}

StockQuant

Description

What one bin holds of one variant (and one lot, when the item tracks lots), in base units.

Fields
Field Name Description
variantId - UUID!
warehouseId - UUID!
locationId - UUID!
locationCode - String!
pickable - Boolean!
lotId - UUID
lot - Lot The lot; null without one. Needs lot.read.
lotStatus - LotStatus The lot's status; null without a lot. Needs lot.read.
quantity - Decimal!
reserved - Decimal! Reserved for orders on this bin and lot.
free - Decimal! max(quantity − reserved, 0): what an issue or a transfer may take from here now. Not the card's available. A bin nobody picks from holds no reservations, so free is its whole quantity.
plannedOut - Decimal! What open outbound instructions still plan to take from this bin and lot, in base units: the remaining of every OPEN transfer advice line naming it as source, whoever wrote the advice (issue advices will add to it when they exist). A line without a source bin, or without the lot of a lot-tracked quant, is not counted here. A plan holds nothing.
unplanned - Decimal! What may still be planned out of this bin and lot: max(free − plannedOut, 0). Plan new transfers from this, not from free, so two advices do not ask for the same goods.
Example
{
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "locationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "locationCode": "xyz789",
  "pickable": true,
  "lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lot": Lot,
  "lotStatus": "RELEASED",
  "quantity": Decimal,
  "reserved": Decimal,
  "free": Decimal,
  "plannedOut": Decimal,
  "unplanned": Decimal
}

StockQuantConnection

Fields
Field Name Description
edges - [StockQuantEdge!]!
nodes - [StockQuant!]!
pageInfo - PageInfo!
Example
{
  "edges": [StockQuantEdge],
  "nodes": [StockQuant],
  "pageInfo": PageInfo
}

StockQuantEdge

Fields
Field Name Description
cursor - String!
node - StockQuant!
Example
{
  "cursor": "abc123",
  "node": StockQuant
}

StockReservationBySource

Description

How much of a card's reserved quantity belongs to orders of one source.

Fields
Field Name Description
source - String The code of the order's oldest external reference's source; null for an order without one.
quantity - Decimal! Reserved for orders of this source.
Example
{
  "source": "abc123",
  "quantity": Decimal
}

Transfer

Description

Goods moved from one warehouse (or bin) to another.

Fields
Field Name Description
id - UUID!
number - String! The transfer's number. Every returned transfer has one.
status - TransferStatus!
version - Int The transfer's last event version, as in the events feed; null before its first event, and null when an event newer than this read was committed while it was being read (read again).
effectiveAt - Time! When the goods count as moved.
completedAt - Time
cancelledAt - Time
revision - Int! How many times the completed transfer has been revised; 0 as completed.
sourceWarehouseId - UUID!
sourceWarehouse - Warehouse The warehouse the goods left. Needs warehouse.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission). A warehouse outside the key's warehouse scope -- the far end of a transfer seen from its other end -- is null with a FORBIDDEN_SCOPE error at its path (extensions.scope WAREHOUSE). The rest is served.
targetWarehouseId - UUID!
targetWarehouse - Warehouse The warehouse the goods went to. Guarded as sourceWarehouse is.
legalEntityId - UUID The company the transfer belongs to; null when it belongs to none.
origin - TransferOrigin!
externalReference - String The external reference the transfer was filed with.
currencyCode - String!
totalValue - Decimal What the goods carried were worth, without VAT, positive: the sum of the lines' values; null while any line's costing is pending. Inside one valuation area a transfer moves no value; between two areas it moves this much out of the source's and into the target's. A completed transfer can still be pending: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
costingPending - Boolean! True while any line's costing is pending. A completed transfer can still be pending, and its settling sends no event: read it again later. Costs 10 points of the query's complexity: it reads every movement of the document.
lines - TransferLineConnection The goods lines, by line number then id: a connection, paged with first/after or last/before (at most 250). Its cursors belong to this transfer's lines and are refused anywhere else. Null, with an error at its path, when its page cannot be read (e.g. a cursor of another parent); the rest of the answer is served.
Arguments
first - Int
after - String
last - Int
before - String
transferAdvices - LinkedTransferAdviceConnection The transfer advices this transfer executes (linked by header or line; always its own two warehouses), newest issued first, paged 1..250. Needs transferAdvice.read: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "abc123",
  "status": "OPEN",
  "version": 987,
  "effectiveAt": "10:15:30Z",
  "completedAt": "10:15:30Z",
  "cancelledAt": "10:15:30Z",
  "revision": 987,
  "sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "sourceWarehouse": Warehouse,
  "targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetWarehouse": Warehouse,
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "origin": TransferOrigin,
  "externalReference": "abc123",
  "currencyCode": "abc123",
  "totalValue": Decimal,
  "costingPending": false,
  "lines": TransferLineConnection,
  "transferAdvices": LinkedTransferAdviceConnection
}

TransferAdvice

Fields
Field Name Description
id - UUID!
number - String
status - TransferAdviceStatus!
state - TransferAdviceState!
sourceWarehouseId - UUID!
targetWarehouseId - UUID!
legalEntityId - UUID!
issuedAt - Time!
plannedAt - Time
reference - String
lines - TransferAdviceLineConnection The instructed lines, ordered by line number. Page with first/after or last/before (1..250).
Arguments
first - Int
after - String
last - Int
before - String
parameters - ParameterConnection Text parameters in name order, paged with first/after or last/before (1..250). Needs transferAdvice.read.
Arguments
first - Int
after - String
last - Int
before - String
progress - InstructionProgress! How far the work on the advice is. Needs transferAdvice.read. Batched per page.
transfers - AdviceTransferConnection The transfers executing the advice (linked by header or line), newest effective first, paged 1..250. Never a draft: drafts are counted in progress. Filter by status with the root transfers(filter: {transferAdviceIds, statuses}). Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "number": "abc123",
  "status": "DRAFT",
  "state": "DRAFT",
  "sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "issuedAt": "10:15:30Z",
  "plannedAt": "10:15:30Z",
  "reference": "xyz789",
  "lines": TransferAdviceLineConnection,
  "parameters": ParameterConnection,
  "progress": InstructionProgress,
  "transfers": AdviceTransferConnection
}

TransferAdviceConnection

Fields
Field Name Description
edges - [TransferAdviceEdge!]!
nodes - [TransferAdvice!]!
pageInfo - PageInfo!
Example
{
  "edges": [TransferAdviceEdge],
  "nodes": [TransferAdvice],
  "pageInfo": PageInfo
}

TransferAdviceEdge

Fields
Field Name Description
cursor - String!
node - TransferAdvice!
Example
{
  "cursor": "xyz789",
  "node": TransferAdvice
}

TransferAdviceLine

Fields
Field Name Description
id - UUID!
lineNo - Int!
variantId - UUID!
quantity - Decimal! The quantity as entered on the advice; public creation always uses the base unit.
unit - String!
unitFactor - Decimal!
baseQuantity - Decimal!
sourceLocationId - UUID
targetLocationId - UUID
lotId - UUID
moved - Decimal! Quantity moved by linked transfers, in base units.
remaining - Decimal! Quantity still instructed, in base units; advice creation reserves none of it.
inProgress - Decimal! Quantity on draft transfers (scanned on a handheld or typed in the web), in base units: in progress, not yet moved.
transferLines - AdviceTransferLineConnection The transfer lines that answered this line, on transfers that are not drafts, oldest first, paged 1..250. Needs transfer.read too: without it null with FORBIDDEN_ROLE at its path.
Arguments
first - Int
after - String
last - Int
before - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 123,
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "quantity": Decimal,
  "unit": "xyz789",
  "unitFactor": Decimal,
  "baseQuantity": Decimal,
  "sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "moved": Decimal,
  "remaining": Decimal,
  "inProgress": Decimal,
  "transferLines": AdviceTransferLineConnection
}

TransferAdviceLineConnection

Fields
Field Name Description
edges - [TransferAdviceLineEdge!]!
nodes - [TransferAdviceLine!]!
pageInfo - PageInfo!
totalCount - Int! How many there are, capped at 10001: 10001 reads "10000 or more". Read only when selected.
Example
{
  "edges": [TransferAdviceLineEdge],
  "nodes": [TransferAdviceLine],
  "pageInfo": PageInfo,
  "totalCount": 987
}

TransferAdviceLineEdge

Fields
Field Name Description
cursor - String!
node - TransferAdviceLine!
Example
{
  "cursor": "xyz789",
  "node": TransferAdviceLine
}

TransferConnection

Description

One page of transfers.

Fields
Field Name Description
edges - [TransferEdge!]! The transfers with their cursors, newest first by effectiveAt.
nodes - [Transfer!]! The same transfers without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [TransferEdge],
  "nodes": [Transfer],
  "pageInfo": PageInfo
}

TransferEdge

Description

One transfer and its cursor.

Fields
Field Name Description
cursor - String! Where this transfer sits; pass as after (with first) or before (with last).
node - Transfer!
Example
{
  "cursor": "abc123",
  "node": Transfer
}

TransferLine

Description

One product moved.

Fields
Field Name Description
id - UUID!
lineNo - Int!
productVariantId - UUID! The product variant.
productVariant - ProductVariant The product variant the line moves. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
product - Product The variant's parent product. Needs item.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission), and the rest is served.
quantity - Decimal! The quantity in unit, as entered.
unit - String!
baseQuantity - Decimal! The quantity in baseUnit.
baseUnit - String!
unitCost - Decimal The cost the goods moved at, per base unit, without VAT, positive. Null while costing is pending, on an exploded set line, and on a cancelled transfer's lines.
value - Decimal What the line's goods were worth, without VAT, positive; null while costing is pending. Inside one valuation area this moves no value; between two it moves this much from the source's to the target's. A line of an OPEN transfer not yet applied has value null and costingPending false, and is not counted in totalValue.
costingPending - Boolean! True while any of the line's stock movements waits to be costed. False for a line of an OPEN transfer not yet applied.
lot - Lot The batch or serial number moved, when the product tracks one.
sourceLocationCode - String The location the goods were taken from; null when the source warehouse tracks no locations or lies outside the key's warehouse scope; with warehouse.read, sourceWarehouse answers FORBIDDEN_SCOPE in the second case.
targetLocationCode - String The location the goods were put to; null when the target warehouse tracks no locations or lies outside the key's warehouse scope; with warehouse.read, targetWarehouse answers FORBIDDEN_SCOPE in the second case.
transferAdviceLineId - UUID The transfer advice line this line answers; null on a direct line. Needs transferAdvice.read: without it the field is null, with a FORBIDDEN_ROLE error at its path (extensions.permission).
transferAdviceLine - TransferAdviceLine The transfer advice line this line answers, whole; null on a direct line. Needs transferAdvice.read, as transferAdviceLineId.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lineNo": 123,
  "productVariantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "productVariant": ProductVariant,
  "product": Product,
  "quantity": Decimal,
  "unit": "xyz789",
  "baseQuantity": Decimal,
  "baseUnit": "xyz789",
  "unitCost": Decimal,
  "value": Decimal,
  "costingPending": true,
  "lot": Lot,
  "sourceLocationCode": "xyz789",
  "targetLocationCode": "abc123",
  "transferAdviceLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "transferAdviceLine": TransferAdviceLine
}

TransferLineConnection

Description

One page of a transfer's lines.

Fields
Field Name Description
edges - [TransferLineEdge!]! The lines with their cursors, by line number.
nodes - [TransferLine!]! The same lines without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
totalCount - Int! How many lines the transfer has, capped at 10001: 10001 reads "10000 or more".
Example
{
  "edges": [TransferLineEdge],
  "nodes": [TransferLine],
  "pageInfo": PageInfo,
  "totalCount": 987
}

TransferLineEdge

Description

One line and its cursor.

Fields
Field Name Description
cursor - String! Where this line sits; pass as after (with first) or before (with last) to this transfer's lines.
node - TransferLine!
Example
{
  "cursor": "xyz789",
  "node": TransferLine
}

TransferOrigin

Description

What a transfer was created from.

Fields
Field Name Description
kind - TransferOriginKind!
id - UUID The stocktake; null for MANUAL.
Example
{
  "kind": "STOCKTAKE",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

UpdatePublicTransferAdviceResult

Fields
Field Name Description
applied - Boolean! True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.
advice - TransferAdvice!
Example
{"applied": false, "advice": TransferAdvice}

UpdateReceiptAdviceResult

Fields
Field Name Description
applied - Boolean! True: this call changed the advice. False: a replay of an earlier call with the same requestId and input; nothing changed.
advice - ReceiptAdvice!
Example
{"applied": false, "advice": ReceiptAdvice}

Warehouse

Description

A warehouse. Needs warehouse.read.

Fields
Field Name Description
id - UUID! Our id.
code - String! Our code of the warehouse.
name - String! Its name.
archivedAt - Time When it was archived; null while in use.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "xyz789",
  "name": "abc123",
  "archivedAt": "10:15:30Z"
}

WarehouseConnection

Description

One page of warehouses.

Fields
Field Name Description
edges - [WarehouseEdge!]! The warehouses with their cursors, by code.
nodes - [Warehouse!]! The same warehouses without cursors.
pageInfo - PageInfo! Where the page sits, and the cursors to the next and previous pages.
Example
{
  "edges": [WarehouseEdge],
  "nodes": [Warehouse],
  "pageInfo": PageInfo
}

WarehouseEdge

Description

One warehouse and its cursor.

Fields
Field Name Description
cursor - String! Where this warehouse sits; pass as after (with first) or before (with last).
node - Warehouse!
Example
{
  "cursor": "abc123",
  "node": Warehouse
}

Inputs

AddDocumentVersionInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key, 1 to 128 bytes.
documentId - UUID!
fileId - UUID! The upload's fileId (POST /api/v1/files).
note - String About this version, at most 2000 characters.
Example
{
  "requestId": "abc123",
  "documentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "note": "abc123"
}

AddressInput

Description

A postal address.

Fields
Input Field Description
recipient - String Who receives it, when not the customer.
street - String! Street and number.
street2 - String A second address line.
city - String! City.
postalCode - String! Postal code.
region - String Region or state.
countryCode - String! ISO 3166-1 alpha-2 country code.
phone - String The phone the carrier calls. Kept only on an address this order adds.
email - String The e-mail delivery notices go to. Kept only on an address this order adds.
Example
{
  "recipient": "abc123",
  "street": "abc123",
  "street2": "abc123",
  "city": "xyz789",
  "postalCode": "abc123",
  "region": "abc123",
  "countryCode": "xyz789",
  "phone": "abc123",
  "email": "abc123"
}

AssetFilter

Fields
Input Field Description
scope - AssetScope
legalEntityId - UUID
kind - AssetKind
Example
{
  "scope": "TENANT",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "LOGO"
}

AttachDocumentInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key, 1 to 128 bytes.
fileId - UUID! The upload's fileId (POST /api/v1/files).
salesOrder - SalesOrderRefInput! The order the document is kept with.
kind - DocumentKind!
externalId - String The issuing system's own id of the document, at most 200 characters.
externalNumber - String The document's number in the issuing system, at most 100 characters.
title - String At most 255 characters.
note - String About this version, at most 2000 characters.
Example
{
  "requestId": "xyz789",
  "fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "salesOrder": SalesOrderRefInput,
  "kind": "INVOICE",
  "externalId": "xyz789",
  "externalNumber": "abc123",
  "title": "abc123",
  "note": "abc123"
}

BuiltInPrintTemplateRef

Description

One of ours, by kind and language.

Fields
Input Field Description
kind - PrintTemplateKind!
language - String!
Example
{
  "kind": "SALES_ORDER",
  "language": "xyz789"
}

CarrierProfileInput

Description

An atomic operational carrier choice from the synchronized Chameleoon catalogue.

Fields
Input Field Description
code - String! The Chameleoon courier id, e.g. SP.
profile - String! The courier's profile id, e.g. na_adresu.
Example
{
  "code": "abc123",
  "profile": "xyz789"
}

CopyPrintTemplateInput

Description

Exactly one of id and builtIn.

Fields
Input Field Description
id - UUID
builtIn - BuiltInPrintTemplateRef
name - String! The copy's name; when it is taken, " 2" … " 20" is appended.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "builtIn": BuiltInPrintTemplateRef,
  "name": "abc123"
}

CreateAssetInput

Fields
Input Field Description
scope - AssetScope!
legalEntityId - UUID Required for COMPANY, absent for TENANT.
code - String! 1-40 lower-case letters, digits and hyphens, starting with a letter.
name - String!
kind - AssetKind!
fileId - UUID! An upload not yet used (POST /api/v1/assets/files).
isPublic - Boolean
Example
{
  "scope": "TENANT",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "code": "abc123",
  "name": "abc123",
  "kind": "LOGO",
  "fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "isPublic": true
}

CreatePrintTemplateInput

Fields
Input Field Description
kind - PrintTemplateKind!
language - String! sk, cs or en.
name - String! 1-120 characters, unique per kind and language.
body - String! At most 512 KiB.
isDefault - Boolean Makes it the one its kind and language print with; the previous default stops being one. Default = false
Example
{
  "kind": "SALES_ORDER",
  "language": "abc123",
  "name": "abc123",
  "body": "abc123",
  "isDefault": false
}

CreatePublicTransferAdviceInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key, 1 to 128 bytes.
sourceWarehouseId - UUID!
targetWarehouseId - UUID!
plannedAt - Time
reference - String
lines - [PublicTransferAdviceLineInput!]! One to 100 positive-quantity lines. Quantities are in each variant's base unit.
parameters - [ParameterInput!] Up to 32 short text parameters, such as workflow_id and run_id.
Example
{
  "requestId": "abc123",
  "sourceWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "plannedAt": "10:15:30Z",
  "reference": "abc123",
  "lines": [PublicTransferAdviceLineInput],
  "parameters": [ParameterInput]
}

CreateReceiptAdviceInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key, 1 to 128 bytes.
supplierId - UUID!
warehouseId - UUID! The one warehouse the goods are coming into.
kind - ReceiptAdviceKind!
supplierReference - String The supplier's delivery note or invoice number, to quote back.
advisedAt - Time The advice's own date, which its number's year is drawn from. Omitted: now.
expectedAt - Time When the goods are due.
currencyCode - String ISO 4217. Omitted: the warehouse company's currency.
pricesIncludeVat - Boolean Whether the line prices include VAT. Omitted: false.
note - String A note for the receiving desk.
lines - [ReceiptAdviceLineInput!]! One to 100 lines.
parameters - [ParameterInput!] Up to 32 short text parameters, such as workflow_id and run_id.
Example
{
  "requestId": "abc123",
  "supplierId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "warehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "kind": "DELIVERY_NOTE",
  "supplierReference": "abc123",
  "advisedAt": "10:15:30Z",
  "expectedAt": "10:15:30Z",
  "currencyCode": "xyz789",
  "pricesIncludeVat": true,
  "note": "xyz789",
  "lines": [ReceiptAdviceLineInput],
  "parameters": [ParameterInput]
}

CreateSalesOrderInput

Description

A shop order, as the shop knows it.

Fields
Input Field Description
source - String! The code of an external source set up in this organisation. The API never creates one.
externalId - String! The shop's id of the order. With source, the key that makes a repeat safe.
externalNumber - String The order number the customer sees.
sourceUrl - String A link to the order in the shop's administration.
legalEntity - String The code of the legal entity that sells. Omitted: the organisation's default.
orderedAt - Time! When the customer placed the order, by the shop's clock. Not before 2000, at most a day ahead.
currencyCode - String! ISO 4217 code of the order's currency, e.g. "EUR". Never converted.
pricesIncludeVat - Boolean! Whether every unitPrice and charge amount includes VAT. ROUNDING always does.
expectedTotal - Decimal The shop's total including VAT. When our total differs by a cent or more, the order is created with our sums and blocked for review, with the exception TOTAL_MISMATCH. Send a residue as a ROUNDING charge.
customer - CustomerInput! Who ordered.
billingAddress - AddressInput! The billing address.
deliveryAddress - AddressInput Where the goods go. Omitted: the billing address, unless a pickupPoint is given.
pickupPoint - PickupPointInput The carrier's collection point the customer chose. Never added to the address book.
deliveryMethod - MethodInput The delivery method as the shop names it.
carrier - CarrierProfileInput The operational Chameleoon carrier and profile. Both are identifiers; names are derived from the synchronized catalogue. Omitted means no Chameleoon route was selected. Unknown or unverifiable pairs do not become normalized carrier data; see createSalesOrder warnings.
paymentMethod - PaymentMethod How the customer intends to pay. Omitted -- the shop's method is not mapped to one of ours: BANK_TRANSFER is stored as a placeholder and the order is blocked for review, with the exception PAYMENT_METHOD_UNKNOWN. Send paymentMethodName so the person can see what it was.
paymentMethodName - MethodInput The payment method as the shop names it.
preferredWarehouseId - UUID Our id of the warehouse to reserve from. Omitted: any of the legal entity's warehouses. One that is unknown, archived or another company's is ignored and the order is blocked for review, with the exception PREFERRED_WAREHOUSE_IGNORED.
note - String What the customer wrote with the order.
items - [CreateSalesOrderItemInput!]! The goods. At least one.
charges - [SalesOrderChargeInput!] Delivery, payment fees, discounts and rounding -- everything that is not goods.
paid - SalesOrderPaidInput Present: the order is paid in full. Absent: not (yet) paid.
Example
{
  "source": "abc123",
  "externalId": "xyz789",
  "externalNumber": "xyz789",
  "sourceUrl": "abc123",
  "legalEntity": "xyz789",
  "orderedAt": "10:15:30Z",
  "currencyCode": "xyz789",
  "pricesIncludeVat": true,
  "expectedTotal": Decimal,
  "customer": CustomerInput,
  "billingAddress": AddressInput,
  "deliveryAddress": AddressInput,
  "pickupPoint": PickupPointInput,
  "deliveryMethod": MethodInput,
  "carrier": CarrierProfileInput,
  "paymentMethod": "CARD",
  "paymentMethodName": MethodInput,
  "preferredWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "note": "abc123",
  "items": [CreateSalesOrderItemInput],
  "charges": [SalesOrderChargeInput],
  "paid": SalesOrderPaidInput
}

CreateSalesOrderItemInput

Description

One goods line of a shop order.

Fields
Input Field Description
externalId - String The shop's id of the line, unique within the order.
kind - SalesOrderItemKind What the line is. A SET is one priced line; its components are never sent. Default = PRODUCT
product - ProductRefInput The product, by exactly one key. Not found: the line is kept unlinked under its sku, with the warning PRODUCT_NOT_FOUND. Ambiguous (an EAN several products carry): kept unlinked under its sku, or under the EAN when no sku was sent, warning PRODUCT_AMBIGUOUS. A service becomes an OTHER charge.
sku - String The shop's SKU. Required when the product is not found -- except for an EAN several products carry, where the line is kept under the EAN when no sku was sent.
name - String! The product's name as the customer saw it.
variantName - String The variant's name as the customer saw it, e.g. "black, M".
quantity - Decimal! How many, in unit. More than zero, at most three decimals.
unit - String A unit code of the product. Omitted: its base unit, or the unit of the EAN sent. One the product does not have: its base unit, and the order is blocked for review with the exception UNIT_UNKNOWN.
unitPrice - Decimal! The final price of one unit, after this line's own discount. At most four decimals.
originalUnitPrice - Decimal The price of one unit before the discount; the difference is kept as the discount.
discountPercent - Decimal The discount as the shop showed it. Informative only.
vatPercent - Decimal! The VAT rate in percent, e.g. 23. At most two decimals.
lineTotal - Decimal The shop's total of the line, on the order's basis: gross when pricesIncludeVat, net otherwise. A cent or more from ours: the order is created with ours and blocked for review, with the exception LINE_TOTAL_MISMATCH on the line.
attributes - [ItemAttributeInput!] What the customer chose about the line: an engraving, a colour.
note - String A note on the line.
Example
{
  "externalId": "abc123",
  "kind": "PRODUCT",
  "product": ProductRefInput,
  "sku": "xyz789",
  "name": "xyz789",
  "variantName": "abc123",
  "quantity": Decimal,
  "unit": "abc123",
  "unitPrice": Decimal,
  "originalUnitPrice": Decimal,
  "discountPercent": Decimal,
  "vatPercent": Decimal,
  "lineTotal": Decimal,
  "attributes": [ItemAttributeInput],
  "note": "xyz789"
}

CustomerInput

Description

The customer: either id alone, or what the shop knows of them. A customer named by the shop is matched by externalId, then registration id, then e-mail, and created when nothing matches. An existing customer's details are never overwritten.

Fields
Input Field Description
id - UUID Our id of the customer. Nothing else may be sent with it.
externalId - String The shop's id of the customer.
name - String The person's name.
companyName - String The company's name; when sent, it names a new customer.
registrationId - String The company registration number (IČO).
vatId - String The VAT id (IČ DPH / DIČ).
email - String The e-mail, also kept as the order's contact.
phone - String The phone, also kept as the order's contact.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "externalId": "abc123",
  "name": "abc123",
  "companyName": "xyz789",
  "registrationId": "abc123",
  "vatId": "abc123",
  "email": "xyz789",
  "phone": "abc123"
}

DeleteAssetInput

Fields
Input Field Description
id - UUID!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

DeletePrintTemplateInput

Fields
Input Field Description
id - UUID!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

ErrorReportFilter

Fields
Input Field Description
subject - ErrorSubjectInput! The record whose reports to read.
statuses - [ErrorReportStatus!] Keep these statuses, at least one; left out, every status, MUTED included.
Example
{"subject": ErrorSubjectInput, "statuses": ["OPEN"]}

ErrorSubjectInput

Fields
Input Field Description
type - ErrorSubjectType!
id - UUID!
Example
{
  "type": "STOCK_DOCUMENT",
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

IntegrationsTargetInput

Description

Where in the Integrations platform this occurrence's technical detail is.

Fields
Input Field Description
workspace - String! The workspace slug: lowercase letters, digits and hyphens, up to 63.
kind - IntegrationsTargetKind!
id - String! The run's, run item's, workflow run's or event's id there, 1 to 128 bytes.
parentId - String The run of a RUN_ITEM; refused for any other kind.
Example
{
  "workspace": "xyz789",
  "kind": "RUN",
  "id": "abc123",
  "parentId": "abc123"
}

InvoiceFilter

Description

Which invoices invoices returns. Every field narrows.

Fields
Input Field Description
direction - InvoiceDirection
kinds - [InvoiceKind!]
statuses - [InvoiceStatus!]
paymentStatuses - [InvoicePaymentStatus!]
overdue - Boolean
partnerId - UUID
legalEntityId - UUID
salesOrderId - UUID
issueDateFrom - Time
issueDateTo - Time
dueDateFrom - Time
dueDateTo - Time
search - String
Example
{
  "direction": "ISSUED",
  "kinds": ["INVOICE"],
  "statuses": ["PENDING"],
  "paymentStatuses": ["UNPAID"],
  "overdue": true,
  "partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "legalEntityId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "salesOrderId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "issueDateFrom": "10:15:30Z",
  "issueDateTo": "10:15:30Z",
  "dueDateFrom": "10:15:30Z",
  "dueDateTo": "10:15:30Z",
  "search": "abc123"
}

InvoiceLineInput

Fields
Input Field Description
lineNo - Int Unique within the invoice; the line's position when omitted.
kind - InvoiceLineKind
name - String!
code - String The code the line names its goods by: the supplier's (received) or customer's (issued) code, or our SKU.
barcode - String EAN/GTIN.
manufacturerCode - String The maker's part number.
quantity - Decimal
unit - String
unitPriceNet - Decimal
unitPriceGross - Decimal
pricesIncludeVat - Boolean
vatPercent - Decimal
discountPercent - Decimal
totalNet - Decimal!
totalVat - Decimal!
totalGross - Decimal!
note - String
externalId - String
variantId - UUID Our id of the product variant. Without it the line is matched by code, barcode and manufacturer code.
advanceInvoice - InvoiceRefInput On ADVANCE_DEDUCTION: the deducted advance. Unknown stays null.
salesOrderLineId - UUID
Example
{
  "lineNo": 123,
  "kind": "ITEM",
  "name": "abc123",
  "code": "abc123",
  "barcode": "xyz789",
  "manufacturerCode": "abc123",
  "quantity": Decimal,
  "unit": "abc123",
  "unitPriceNet": Decimal,
  "unitPriceGross": Decimal,
  "pricesIncludeVat": false,
  "vatPercent": Decimal,
  "discountPercent": Decimal,
  "totalNet": Decimal,
  "totalVat": Decimal,
  "totalGross": Decimal,
  "note": "abc123",
  "externalId": "abc123",
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "advanceInvoice": InvoiceRefInput,
  "salesOrderLineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

InvoiceLinkInput

Fields
Input Field Description
type - InvoiceLinkType!
targetId - UUID! Our id of the order, purchase order or receipt.
Example
{
  "type": "SALES_ORDER",
  "targetId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

InvoiceLinkTargetInput

Fields
Input Field Description
type - InvoiceLinkType!
ref - InvoiceRecordRefInput! A sales order by id or by its source id; a purchase order or a receipt by our id.
Example
{"type": "SALES_ORDER", "ref": InvoiceRecordRefInput}

InvoicePartyInput

Fields
Input Field Description
name - String
street - String
city - String
postalCode - String
countryCode - String
registrationId - String
taxId - String
vatId - String
email - String
phone - String
web - String
Example
{
  "name": "abc123",
  "street": "xyz789",
  "city": "xyz789",
  "postalCode": "abc123",
  "countryCode": "xyz789",
  "registrationId": "abc123",
  "taxId": "abc123",
  "vatId": "abc123",
  "email": "xyz789",
  "phone": "abc123",
  "web": "xyz789"
}

InvoiceRecordRefInput

Description

Names a partner or a sales order: our id, or its id in a source (the sync's own by default).

Fields
Input Field Description
id - UUID
source - String
externalId - String
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "abc123",
  "externalId": "abc123"
}

InvoiceRefInput

Description

Names one invoice: either id, or source together with externalId -- never both.

Fields
Input Field Description
id - UUID
source - String The code of the accounting system's source.
externalId - String The accounting system's own id of the document.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "abc123",
  "externalId": "xyz789"
}

InvoiceSettlementInput

Fields
Input Field Description
kind - InvoiceSettlementKind!
counterInvoice - InvoiceRefInput The advance or credit note; unknown stays null and counterNumber is kept.
counterNumber - String
amount - Decimal!
settledOn - Time
Example
{
  "kind": "ADVANCE_DEDUCTION",
  "counterInvoice": InvoiceRefInput,
  "counterNumber": "abc123",
  "amount": Decimal,
  "settledOn": "10:15:30Z"
}

InvoiceVatRowInput

Fields
Input Field Description
vatPercent - Decimal!
base - Decimal!
vat - Decimal!
gross - Decimal!
baseHome - Decimal
vatHome - Decimal
grossHome - Decimal
Example
{
  "vatPercent": Decimal,
  "base": Decimal,
  "vat": Decimal,
  "gross": Decimal,
  "baseHome": Decimal,
  "vatHome": Decimal,
  "grossHome": Decimal
}

IssueFilter

Description

Which issues the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

Fields
Input Field Description
ids - [UUID!] These issues, at most 50. Ids that are not returnable are simply absent.
statuses - [IssueStatus!] Issues in any of these states; all three when omitted.
warehouseIds - [UUID!] Issues out of any of these warehouses. At most 50.
effectiveFrom - Time Issues effective at or after this instant.
effectiveTo - Time Issues effective before this instant (exclusive).
origins - [IssueOriginKind!] Issues with any of these origins.
Example
{
  "ids": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "statuses": ["OPEN"],
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "effectiveFrom": "10:15:30Z",
  "effectiveTo": "10:15:30Z",
  "origins": ["FULFILMENT"]
}

ItemAttributeInput

Description

One choice the customer made about a line.

Fields
Input Field Description
name - String! What was chosen, e.g. "Engraving".
value - String! The choice, e.g. "For Anna".
Example
{
  "name": "abc123",
  "value": "xyz789"
}

LocationFilter

Description

Every supplied field narrows the result; an explicit empty list matches nothing.

Fields
Input Field Description
warehouseIds - [UUID!]! 1 to 50 warehouses.
codes - [String!] Exact codes, up to 250. A code is unique per warehouse and zone, so one code may name several bins.
pickable - Boolean True: bins reservations take from. False: bins nobody picks from.
kinds - [LocationKind!]
includeArchived - Boolean Default false: archived bins are left out.
Example
{
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "codes": ["abc123"],
  "pickable": false,
  "kinds": ["STOCK"],
  "includeArchived": false
}

MethodInput

Description

A delivery or payment method in the shop's own words.

Fields
Input Field Description
code - String The shop's code of the method.
name - String! Its name, as the customer saw it.
Example
{
  "code": "abc123",
  "name": "xyz789"
}

ParameterInput

Description

One parameter. Names are lowercase snake case, 1 to 64 characters; values 1 to 512 bytes of text.

Fields
Input Field Description
name - String!
value - String!
Example
{
  "name": "xyz789",
  "value": "xyz789"
}

PickupPointInput

Description

A carrier's collection point.

Fields
Input Field Description
code - String! The carrier's code of the point.
name - String! Its name, as the customer saw it.
Example
{
  "code": "abc123",
  "name": "xyz789"
}

PrintTemplateFilter

Fields
Input Field Description
kind - PrintTemplateKind
language - String
search - String A part of the name, any case and diacritics.
archived - Boolean true lists the archived templates instead of the active ones.
Example
{
  "kind": "SALES_ORDER",
  "language": "abc123",
  "search": "abc123",
  "archived": false
}

ProductFilter

Description

Which products products returns. Every field narrows; an omitted one matches all, an empty list none.

Fields
Input Field Description
ids - [UUID!] These products, at most 250.
codes - [String!] Products with these codes (exact), at most 250.
skus - [String!] Products having a variant (archived included) with one of these SKUs (exact), at most 250.
barcodes - [String!] Products having a variant (archived included) carrying one of these codes -- EAN, GTIN, UPC, manufacturer's, customs or internal -- exact, at most 250.
updatedFrom - Time Products whose updatedAt is at or after this instant -- for an incremental sync, with sortKey UPDATED_AT and includeArchived: true: an archive moves updatedAt, and archivedAt tells the product is gone -- without includeArchived a sync never sees it leave. updatedAt is the start time of the writing transaction, so resume from the last updatedAt seen minus 10 minutes and de-duplicate by id. Prices and a rename of an attribute or of one of its values do not move it.
includeArchived - Boolean True: archived products too. Default false. Default = false
Example
{
  "ids": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "codes": ["xyz789"],
  "skus": ["xyz789"],
  "barcodes": ["xyz789"],
  "updatedFrom": "10:15:30Z",
  "includeArchived": true
}

ProductRefInput

Description

A product, by exactly one key.

Fields
Input Field Description
id - UUID Our id of the product variant.
externalId - String The source's id of the variant.
sku - String Our SKU, exact and case-sensitive.
ean - String A barcode; one on a packaging unit also sets the line's unit. Several products may share one; then nothing is picked (PRODUCT_AMBIGUOUS).
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "externalId": "abc123",
  "sku": "abc123",
  "ean": "xyz789"
}

PublicTransferAdviceLineInput

Fields
Input Field Description
variantId - UUID!
quantity - Decimal!
sourceLocationId - UUID
targetLocationId - UUID
lotId - UUID
note - String
Example
{
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "quantity": Decimal,
  "sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "note": "xyz789"
}

PublicTransferAdviceLineUpdate

Fields
Input Field Description
lineId - UUID!
quantity - Decimal In base units. Omitted: unchanged. A line entered in another unit refuses it (reason LINE_NOT_IN_BASE_UNIT).
sourceLocationId - UUID Omitted: unchanged. Null: cleared.
targetLocationId - UUID Omitted: unchanged. Null: cleared (refused inside one warehouse).
lotId - UUID Omitted: unchanged. Null: cleared.
note - String Omitted: unchanged. Null: cleared.
Example
{
  "lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "quantity": Decimal,
  "sourceLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "targetLocationId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "lotId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "note": "xyz789"
}

ReceiptAdviceFilter

Description

A filter on receipt advice headers. Every supplied field narrows the result; an explicit empty list matches nothing. Each list holds at most 100 values.

Fields
Input Field Description
statuses - [ReceiptAdviceStatus!]
states - [ReceiptAdviceState!]
warehouseIds - [UUID!]
supplierIds - [UUID!]
kinds - [ReceiptAdviceKind!]
advisedFrom - Time advisedAt at or after this instant.
advisedTo - Time advisedAt before this instant.
expectedFrom - Time expectedAt at or after this instant (an advice with none never matches).
expectedTo - Time expectedAt at or before this instant.
code - String The exact number or the supplier's reference.
parameters - [ParameterInput!] Up to 8 exact name/value equalities combined with AND.
hasActiveDocuments - Boolean True: a receipt answering it is not finished (progress.activeDocuments > 0). False: none is.
started - Boolean True: work has started (progress.startedAt set). False: nobody has started.
lastActivityBefore - Time The last activity is before this instant (advices nobody has started never match).
lastActivityAfter - Time The last activity is at or after this instant.
Example
{
  "statuses": ["DRAFT"],
  "states": ["DRAFT"],
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "supplierIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "kinds": ["DELIVERY_NOTE"],
  "advisedFrom": "10:15:30Z",
  "advisedTo": "10:15:30Z",
  "expectedFrom": "10:15:30Z",
  "expectedTo": "10:15:30Z",
  "code": "xyz789",
  "parameters": [ParameterInput],
  "hasActiveDocuments": true,
  "started": true,
  "lastActivityBefore": "10:15:30Z",
  "lastActivityAfter": "10:15:30Z"
}

ReceiptAdviceLineInput

Fields
Input Field Description
variantId - UUID!
quantity - Decimal! Positive, in unit.
unit - String A unit the variant defines (a carton). Omitted: the item's base unit.
unitPrice - Decimal Per unit, in the advice's currency; with or without VAT as the advice says.
vatPercent - Decimal
expectedAt - Time
batchCode - String The batch the supplier's paperwork names; it prefills the receipt.
expiresAt - Time The expiry the paperwork names; its UTC date is kept.
serialNumber - String The serial the paperwork names. A serial names one piece: the line's base quantity must be 1.
supplierSku - String The supplier's own code of the item.
note - String
Example
{
  "variantId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "quantity": Decimal,
  "unit": "abc123",
  "unitPrice": Decimal,
  "vatPercent": Decimal,
  "expectedAt": "10:15:30Z",
  "batchCode": "abc123",
  "expiresAt": "10:15:30Z",
  "serialNumber": "abc123",
  "supplierSku": "xyz789",
  "note": "abc123"
}

ReceiptAdviceLineUpdate

Description

One line's change: an omitted field is unchanged, a null one cleared.

Fields
Input Field Description
lineId - UUID!
quantity - Decimal Positive, in the line's unit (the new one when unit changes it). Omitted: unchanged.
unit - String Omitted: unchanged. Refused once goods arrived against the line in its unit.
unitPrice - Decimal
vatPercent - Decimal
expectedAt - Time
batchCode - String
expiresAt - Time
serialNumber - String
supplierSku - String
note - String
Example
{
  "lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "quantity": Decimal,
  "unit": "abc123",
  "unitPrice": Decimal,
  "vatPercent": Decimal,
  "expectedAt": "10:15:30Z",
  "batchCode": "abc123",
  "expiresAt": "10:15:30Z",
  "serialNumber": "xyz789",
  "supplierSku": "xyz789",
  "note": "xyz789"
}

ReceiptFilter

Description

Which receipts the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

Fields
Input Field Description
ids - [UUID!] These receipts, at most 50. Ids that are not returnable are simply absent.
statuses - [ReceiptStatus!] Receipts in any of these states; all three when omitted.
warehouseIds - [UUID!] Receipts into any of these warehouses. At most 50.
effectiveFrom - Time Receipts effective at or after this instant.
effectiveTo - Time Receipts effective before this instant (exclusive).
origins - [ReceiptOriginKind!] Receipts with any of these origins.
receiptAdviceIds - [UUID!] Receipts answering any of these receipt advices. At most 50.
Example
{
  "ids": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "statuses": ["OPEN"],
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "effectiveFrom": "10:15:30Z",
  "effectiveTo": "10:15:30Z",
  "origins": ["MANUAL"],
  "receiptAdviceIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ]
}

RemoveDocumentInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key, 1 to 128 bytes.
documentId - UUID!
Example
{
  "requestId": "xyz789",
  "documentId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

RemoveInvoiceInput

Fields
Input Field Description
source - String!
externalId - String!
sourceChangedAt - Time
Example
{
  "source": "xyz789",
  "externalId": "abc123",
  "sourceChangedAt": "10:15:30Z"
}

ReplaceAssetFileInput

Fields
Input Field Description
id - UUID!
fileId - UUID!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "fileId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

ReportErrorInput

Fields
Input Field Description
requestId - String! 1 to 128 bytes; one per occurrence you report.
subject - ErrorSubjectInput!
lineId - UUID A line of the subject the error is about; null for the record as a whole.
source - String! The outside system, UPPER_SNAKE_CASE of 2 to 32 characters, e.g. OBERON.
code - String! Your code for the error, UPPER_SNAKE_CASE of 2 to 64 characters, e.g. EXPORT_REJECTED.
statusCode - Int The outside system's status, e.g. the HTTP status it answered; 0 to 999.
message - String! The reason, as the outside system gave it; 1 to 2000 characters.
details - JSON Machine detail as a JSON object, up to 8 KiB.
occurredAt - Time When it happened by your clock; defaults to when the ERP received it.
integrationsTarget - IntegrationsTargetInput
Example
{
  "requestId": "abc123",
  "subject": ErrorSubjectInput,
  "lineId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "xyz789",
  "code": "xyz789",
  "statusCode": 987,
  "message": "xyz789",
  "details": {},
  "occurredAt": "10:15:30Z",
  "integrationsTarget": IntegrationsTargetInput
}

SalesOrderChargeInput

Description

Anything on the order that is not goods.

Fields
Input Field Description
kind - ChargeKind! What it is for.
code - String The shop's code of the charge.
name - String! Its name as the customer saw it.
amount - Decimal! The whole amount, net or gross as pricesIncludeVat says (ROUNDING: always gross). Never negative, except ROUNDING, which is at most 1.00 either way. A DISCOUNT is sent positive.
vatPercent - Decimal! The VAT rate in percent. ROUNDING: 0.
Example
{
  "kind": "DELIVERY",
  "code": "xyz789",
  "name": "abc123",
  "amount": Decimal,
  "vatPercent": Decimal
}

SalesOrderFilter

Description

Which orders salesOrders returns. Every field narrows; an omitted one matches all.

Fields
Input Field Description
source - String Orders placed through this external source, by its code, matched ignoring case and surrounding spaces.
statuses - [SalesOrderStatus!] Orders in any of these states.
fulfilmentStatuses - [SalesOrderFulfilmentStatus!] Orders with any of these fulfilment states.
paymentStatuses - [SalesOrderPaymentStatus!] Orders with any of these payment states.
blocked - Boolean True: only blocked orders. False: only orders nothing stops.
hasOpenExceptions - Boolean True: orders with an open exception -- the review queue. False: orders without one.
hasUnreservedItems - Boolean True: at least one linked goods line has live quantity not shipped and not held on a live consignment (reserved or picked). False: no such line. Unlinked lines need catalogue repair and are excluded. Needs reservation.read and an unrestricted warehouse scope so hidden warehouses cannot make an order appear short.
unreservedInWarehouseId - UUID Orders short IN THIS WAREHOUSE: a linked goods line whose open quantity is more than what has shipped (from any warehouse) plus what this warehouse's live consignments hold (reserved or picked). Goods held in another warehouse do not count as covered here -- the question a workflow asks before moving goods into the warehouse orders are picked in. Needs reservation.read and the warehouse in the key's scope (FORBIDDEN_SCOPE otherwise). If one of the tenant's warehouses is never picked from, give the orders preferredWarehouseId: allocation then reserves in that warehouse only.
orderedFrom - Time Orders placed at or after this instant.
orderedTo - Time Orders placed at or before this instant.
Example
{
  "source": "abc123",
  "statuses": ["DRAFT"],
  "fulfilmentStatuses": ["UNFULFILLED"],
  "paymentStatuses": ["UNPAID"],
  "blocked": false,
  "hasOpenExceptions": false,
  "hasUnreservedItems": true,
  "unreservedInWarehouseId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "orderedFrom": "10:15:30Z",
  "orderedTo": "10:15:30Z"
}

SalesOrderInvoiceInput

Description

The invoice issued for an order in another system. An omitted field is kept; null or blank clears it.

Fields
Input Field Description
number - String The invoice's number, at most 100 characters.
externalId - String That system's own id of the invoice, at most 200 characters.
expectedExternalId - String Compare-and-set. A value: the write happens only if the order's invoiceExternalId equals it. Null (or blank): only if the order has no invoice at all (number and external id both empty). Otherwise CONFLICT with extensions.reason INVOICE_CHANGED. Omitted: no check.
Example
{
  "number": "abc123",
  "externalId": "xyz789",
  "expectedExternalId": "xyz789"
}

SalesOrderPaidInput

Description

The order is paid in full.

Fields
Input Field Description
paidAt - Time When the money arrived. Omitted: now.
reference - String The gateway's or bank's id of the payment. One already used by another order is skipped with a warning by createSalesOrder, and is a CONFLICT for markSalesOrderPaid.
Example
{
  "paidAt": "10:15:30Z",
  "reference": "abc123"
}

SalesOrderRefInput

Description

Names one order: either id, or source together with externalId -- never both.

Fields
Input Field Description
id - UUID Our id of the order.
source - String The code of the external source that placed the order.
externalId - String The source's own id of the order.
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "source": "abc123",
  "externalId": "xyz789"
}

SetInvoicePartnerInput

Fields
Input Field Description
partnerId - UUID Our id of the partner; null clears it.
Example
{
  "partnerId": "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
}

SetParametersInput

Description

Set and remove parameters by name in one atomic change; a name may occur once across both.

Fields
Input Field Description
set - [ParameterInput!] Up to 32 values to set; setting a current value changes nothing.
remove - [String!] Up to 32 names to remove; removing a missing name changes nothing.
Example
{
  "set": [ParameterInput],
  "remove": ["xyz789"]
}

SetPrintTemplateArchivedInput

Fields
Input Field Description
id - UUID!
archived - Boolean!
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "archived": false
}

StockCardFilter

Description

Which cards the query returns. Every field narrows; an omitted (or null) one matches all, and an empty list matches none.

Fields
Input Field Description
warehouseIds - [UUID!] At most 50.
warehouseCodes - [String!] Exact, at most 50. Needs warehouse.read.
variantIds - [UUID!] At most 250.
skus - [String!] Exact, at most 250. Needs item.read.
Example
{
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "warehouseCodes": ["abc123"],
  "variantIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "skus": ["abc123"]
}

StockDocumentExternalRefInput

Description

The reference a receipt or an issue gets: the record another system made of it.

Fields
Input Field Description
source - String! An external source's code in this ERP.
externalId - String! That system's id of its record, at most 200 characters.
externalNumber - String The number that system shows for it, at most 100 characters. Omitted or null: none.
Example
{
  "source": "abc123",
  "externalId": "abc123",
  "externalNumber": "xyz789"
}

StockQuantFilter

Description

Every supplied field narrows the result; an explicit empty list matches nothing.

Fields
Input Field Description
warehouseIds - [UUID!]! 1 to 50 warehouses.
variantIds - [UUID!] Up to 250 variants.
locationIds - [UUID!] Up to 250 bins.
pickable - Boolean Narrows by the bin's pickable flag.
Example
{
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "variantIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "locationIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "pickable": false
}

SyncInvoiceInput

Description

The whole document, as the accounting system holds it now.

Fields
Input Field Description
source - String! The code of the accounting system's source; it must be of kind ERP.
externalId - String! The accounting system's own id of the document.
sourceChangedAt - Time When the document last changed in the accounting system; an older write is STALE.
direction - InvoiceDirection!
kind - InvoiceKind!
legalEntity - String The company it belongs to, by code. Omitted: the company whose IČO our side of the invoice prints (the seller of an issued invoice, the buyer of a received one), else the default.
partner - InvoiceRecordRefInput The partner, when the integration knows it. Omitted, or an externalId nothing holds yet: found by the party's IČO, then e-mail (the oldest of several, with a warning), else created from the party -- the buyer of an issued invoice, the seller of a received one. A partner already on the invoice stays.
sourceDocumentType - String
cancelled - Boolean
number - String!
variableSymbol - String
constantSymbol - String
specificSymbol - String
supplierNumber - String
orderNumber - String
issueDate - Time
taxPointDate - Time
dueDate - Time
receivedDate - Time
vatClaimDate - Time
seller - InvoicePartyInput
buyer - InvoicePartyInput
delivery - InvoicePartyInput
paymentMethod - InvoicePaymentMethod
paymentMethodName - String
bankAccountNumber - String
bankCode - String
bankName - String
iban - String
swift - String
currencyCode - String!
exchangeRate - Decimal
exchangeRateAmount - Int
homeCurrencyCode - String The home currency; the document's currency when omitted.
textBeforeItems - String
textAfterItems - String
printedNote - String
vatNote - String The statutory VAT wording printed on the document ("Dodanie je oslobodené od dane podľa § 43 zákona o DPH"); omitted clears it, like the other header texts.
reverseCharge - Boolean
oss - Boolean
totalNet - Decimal!
totalVat - Decimal!
totalGross - Decimal!
rounding - Decimal
advancesDeducted - Decimal
amountDue - Decimal!
totalNetHome - Decimal
totalVatHome - Decimal
totalGrossHome - Decimal
paymentStatus - InvoicePaymentStatus
paidAmount - Decimal Null when the accounting system does not say.
remainingAmount - Decimal
paidAt - Time
correctsInvoice - InvoiceRefInput On a credit note: the invoice it corrects. Unknown stays null; correctedNumber is kept.
correctedNumber - String
correctedIssueDate - Time
correctedTaxPointDate - Time
correctionReason - String
lines - [InvoiceLineInput!] Replaces every line.
vatSummary - [InvoiceVatRowInput!] Replaces the VAT summary.
settlements - [InvoiceSettlementInput!] Replaces the settlements.
links - [InvoiceLinkTargetInput!] Added, never removed.
Example
{
  "source": "abc123",
  "externalId": "abc123",
  "sourceChangedAt": "10:15:30Z",
  "direction": "ISSUED",
  "kind": "INVOICE",
  "legalEntity": "xyz789",
  "partner": InvoiceRecordRefInput,
  "sourceDocumentType": "xyz789",
  "cancelled": false,
  "number": "xyz789",
  "variableSymbol": "xyz789",
  "constantSymbol": "abc123",
  "specificSymbol": "xyz789",
  "supplierNumber": "xyz789",
  "orderNumber": "xyz789",
  "issueDate": "10:15:30Z",
  "taxPointDate": "10:15:30Z",
  "dueDate": "10:15:30Z",
  "receivedDate": "10:15:30Z",
  "vatClaimDate": "10:15:30Z",
  "seller": InvoicePartyInput,
  "buyer": InvoicePartyInput,
  "delivery": InvoicePartyInput,
  "paymentMethod": "BANK_TRANSFER",
  "paymentMethodName": "xyz789",
  "bankAccountNumber": "xyz789",
  "bankCode": "abc123",
  "bankName": "abc123",
  "iban": "xyz789",
  "swift": "xyz789",
  "currencyCode": "abc123",
  "exchangeRate": Decimal,
  "exchangeRateAmount": 987,
  "homeCurrencyCode": "xyz789",
  "textBeforeItems": "xyz789",
  "textAfterItems": "abc123",
  "printedNote": "xyz789",
  "vatNote": "xyz789",
  "reverseCharge": false,
  "oss": true,
  "totalNet": Decimal,
  "totalVat": Decimal,
  "totalGross": Decimal,
  "rounding": Decimal,
  "advancesDeducted": Decimal,
  "amountDue": Decimal,
  "totalNetHome": Decimal,
  "totalVatHome": Decimal,
  "totalGrossHome": Decimal,
  "paymentStatus": "UNPAID",
  "paidAmount": Decimal,
  "remainingAmount": Decimal,
  "paidAt": "10:15:30Z",
  "correctsInvoice": InvoiceRefInput,
  "correctedNumber": "abc123",
  "correctedIssueDate": "10:15:30Z",
  "correctedTaxPointDate": "10:15:30Z",
  "correctionReason": "xyz789",
  "lines": [InvoiceLineInput],
  "vatSummary": [InvoiceVatRowInput],
  "settlements": [InvoiceSettlementInput],
  "links": [InvoiceLinkTargetInput]
}

TransferAdviceFilter

Description

A filter on transfer advice headers. Every supplied field narrows the result.

Fields
Input Field Description
statuses - [TransferAdviceStatus!] Lifecycle statuses; an explicit empty list matches nothing.
states - [TransferAdviceState!] Derived work states; an explicit empty list matches nothing.
sourceWarehouseIds - [UUID!]
targetWarehouseIds - [UUID!]
parameters - [ParameterInput!] Up to 8 exact name/value equalities combined with AND; an explicit empty list matches nothing.
hasActiveDocuments - Boolean True: an executing document is not finished (progress.activeDocuments > 0). False: none is.
started - Boolean True: work has started (progress.startedAt set). False: nobody has started.
lastActivityBefore - Time The last activity is before this instant (advices nobody has started never match).
lastActivityAfter - Time The last activity is at or after this instant.
Example
{
  "statuses": ["DRAFT"],
  "states": ["DRAFT"],
  "sourceWarehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "targetWarehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "parameters": [ParameterInput],
  "hasActiveDocuments": true,
  "started": false,
  "lastActivityBefore": "10:15:30Z",
  "lastActivityAfter": "10:15:30Z"
}

TransferFilter

Description

Which transfers the query returns. Every field narrows and they combine with AND; an omitted (or null) one matches all, and an empty list matches none.

Fields
Input Field Description
ids - [UUID!] These transfers, at most 50. Ids that are not returnable are simply absent.
statuses - [TransferStatus!] Transfers in any of these states; all three when omitted.
warehouseIds - [UUID!] Transfers out of or into any of these warehouses (either end). At most 50.
sourceWarehouseIds - [UUID!] Transfers out of any of these warehouses. At most 50.
targetWarehouseIds - [UUID!] Transfers into any of these warehouses. At most 50.
effectiveFrom - Time Transfers effective at or after this instant.
effectiveTo - Time Transfers effective before this instant (exclusive).
origins - [TransferOriginKind!] Transfers with any of these origins.
transferAdviceIds - [UUID!] Transfers executing any of these transfer advices (linked by header or line). At most 50. Needs transferAdvice.read.
Example
{
  "ids": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "statuses": ["OPEN"],
  "warehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "sourceWarehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "targetWarehouseIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "effectiveFrom": "10:15:30Z",
  "effectiveTo": "10:15:30Z",
  "origins": ["STOCKTAKE"],
  "transferAdviceIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ]
}

UpdateAssetInput

Fields
Input Field Description
id - UUID!
name - String
isPublic - Boolean
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "name": "xyz789",
  "isPublic": true
}

UpdateInvoiceInput

Fields
Input Field Description
internalNote - String Omitted keeps, null or blank clears.
Example
{"internalNote": "abc123"}

UpdatePrintTemplateInput

Fields
Input Field Description
id - UUID!
name - String
language - String Moving a template to another language leaves it no longer the default, unless isDefault says so.
body - String
isDefault - Boolean
Example
{
  "id": "4c4efadc-fa25-44b2-b302-a0229e5a7e96",
  "name": "xyz789",
  "language": "abc123",
  "body": "xyz789",
  "isDefault": false
}

UpdatePublicTransferAdviceInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.
plannedAt - Time Omitted: unchanged. Null: cleared.
reference - String Omitted: unchanged. Null: cleared.
removeLineIds - [UUID!] Up to 100 lines to remove.
updateLines - [PublicTransferAdviceLineUpdate!] Up to 100 line changes.
addLines - [PublicTransferAdviceLineInput!] Up to 100 new lines, base-unit quantities, as on create.
parameters - SetParametersInput
Example
{
  "requestId": "xyz789",
  "plannedAt": "10:15:30Z",
  "reference": "abc123",
  "removeLineIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "updateLines": [PublicTransferAdviceLineUpdate],
  "addLines": [PublicTransferAdviceLineInput],
  "parameters": SetParametersInput
}

UpdateReceiptAdviceInput

Fields
Input Field Description
requestId - String! An opaque, tenant-unique idempotency key for this change, 1 to 128 bytes. A new key for every intended change.
kind - ReceiptAdviceKind Omitted: unchanged. Never PURCHASE_ORDER.
supplierReference - String Omitted: unchanged. Null: cleared.
advisedAt - Time Omitted: unchanged. Null is refused.
expectedAt - Time Omitted: unchanged. Null: cleared.
note - String Omitted: unchanged. Null: cleared.
removeLineIds - [UUID!] Up to 100 lines to remove.
updateLines - [ReceiptAdviceLineUpdate!] Up to 100 line changes.
addLines - [ReceiptAdviceLineInput!] Up to 100 new lines, as on create.
parameters - SetParametersInput
Example
{
  "requestId": "abc123",
  "kind": "DELIVERY_NOTE",
  "supplierReference": "abc123",
  "advisedAt": "10:15:30Z",
  "expectedAt": "10:15:30Z",
  "note": "abc123",
  "removeLineIds": [
    "4c4efadc-fa25-44b2-b302-a0229e5a7e96"
  ],
  "updateLines": [ReceiptAdviceLineUpdate],
  "addLines": [ReceiptAdviceLineInput],
  "parameters": SetParametersInput
}

Enums

ApiKeyEnvironment

Description

Which deployment a key belongs to. A test key never authenticates against a live server.

Values
Enum Value Description

LIVE

Production.

TEST

Every other deployment.
Example
"LIVE"

AssetKind

Description

What an asset is. Read it as a string: more may be added.

Values
Enum Value Description

LOGO

STAMP

IMAGE

Example
"LOGO"

AssetScope

Description

Whose an asset is.

Values
Enum Value Description

TENANT

The organisation's: tenant.<code>.

COMPANY

One company's (legal entity): company.<code>.
Example
"TENANT"

ChargeKind

Description

What a charge is for.

Values
Enum Value Description

DELIVERY

Delivery.

PAYMENT

A payment fee, e.g. for cash on delivery.

DISCOUNT

A discount, sent positive and subtracted. One row per VAT rate.

ROUNDING

The residue between the shop's total and ours, at most 1.00 either way.

OTHER

Any other surcharge: insurance, gift wrap.
Example
"DELIVERY"

DocumentKind

Description

What a document is. Read it as a string: more may be added.

Values
Enum Value Description

INVOICE

CREDIT_NOTE

PROFORMA_INVOICE

DELIVERY_NOTE

PROOF_OF_DELIVERY

ORDER_CONFIRMATION

CONTRACT

OTHER

Example
"INVOICE"

ErrorReportStatus

Description

Where a report stands. Only a person changes it, in the ERP; a new occurrence reopens RESOLVED, and a MUTED one once its mutedUntil has passed. AN OPEN ENUM: more statuses may arrive.

Values
Enum Value Description

OPEN

RESOLVED

MUTED

Still counted, not shown as open.
Example
"OPEN"

ErrorSubjectType

Description

The kind of record a report is on. AN OPEN ENUM: more kinds of record arrive.

Values
Enum Value Description

STOCK_DOCUMENT

A stock document of any kind: a receipt, an issue, a transfer, a return, ...
Example
"STOCK_DOCUMENT"

EventActorKind

Values
Enum Value Description

USER

API_KEY

JOB

IMPORT

SYSTEM

Example
"USER"

EventEntityType

Description

What an event happened to.

Values
Enum Value Description

SALES_ORDER

A sales order. Needs order.read.

RECEIPT

A stock receipt: goods into a warehouse. Needs receipt.read.

ISSUE

A stock issue: goods out of a warehouse, by hand or for a consignment. Needs issue.read.

TRANSFER

A stock transfer between two warehouses, seen from either end. Needs transfer.read.

FULFILMENT

A consignment: what one dispatch of an order sends. Needs fulfilment.read and order.read.

SHIPMENT

A carrier shipment, from the moment the carrier accepted it: shipment.created, then shipment.changed when its tracking status moves, shipment.cancelled. Needs shipment.read.

TRANSFER_ADVICE

A transfer advice, from the moment it is opened: transfer_advice.opened, then .changed when a line is added, changed or removed or its planned date moves, .closed, .cancelled. The work on it is the transfers' own events. Needs transferAdvice.read.

RECEIPT_ADVICE

A receipt advice, from the moment it is opened: receipt_advice.opened, then .changed when a line is added, changed (a settlement too) or removed or its expected date or supplier reference moves, .closed, .cancelled. What arrives against it is its receipts' own events. Needs advice.read.

DOCUMENT

A document attached to a sales order: document.attached, then document.version_added when a new version becomes current, document.removed. The event names the document only: read document(id) for its order and versions. Seen where its order is. Needs order.read.

INVOICE

A mirrored invoice, advance invoice or credit note: invoice.created, then invoice.changed. Needs invoice.read.
Example
"SALES_ORDER"

EventOriginKind

Values
Enum Value Description

STOCKTAKE

FULFILMENT

ADVICE

MANUAL

Example
"STOCKTAKE"

IntegrationsTargetKind

Description

What an occurrence points at in the Chameleoon Integrations platform.

Values
Enum Value Description

RUN

RUN_ITEM

An item of a run; parentId is the run.

WORKFLOW_RUN

EVENT

Example
"RUN"

InvoiceDirection

Description

Which way an invoice goes.

Values
Enum Value Description

ISSUED

We invoiced a customer.

RECEIVED

A supplier invoiced us.
Example
"ISSUED"

InvoiceKind

Description

What the document is.

Values
Enum Value Description

INVOICE

ADVANCE

An advance (proforma) invoice; not a tax document.

CREDIT_NOTE

Corrects an invoice downwards. Its amounts are negative.
Example
"INVOICE"

InvoiceLegalEntityMatch

Description

How an invoice's company was found.

Values
Enum Value Description

EXPLICIT

The integration named it by code.

MATCHED

Found by the IČO our side of the invoice prints.

DEFAULT

The organisation's default company.
Example
"EXPLICIT"

InvoiceLineKind

Description

What one line of the document is.

Values
Enum Value Description

ITEM

TEXT

ADVANCE_DEDUCTION

ROUNDING

DISCOUNT

Example
"ITEM"

InvoiceLinkOrigin

Description

Who made a link.

Values
Enum Value Description

SYNC

The integration sent it.

AUTO

The ERP found it: the invoice's order number, that order's consignments.

MANUAL

A person made it.
Example
"SYNC"

InvoiceLinkType

Description

An ERP document an invoice belongs to.

Values
Enum Value Description

SALES_ORDER

PURCHASE_ORDER

RECEIPT

ISSUE

A stock issue (výdajka).

FULFILMENT

A consignment of an order.
Example
"SALES_ORDER"

InvoicePartnerMatch

Description

How an invoice's partner was found.

Values
Enum Value Description

EXPLICIT

The integration named it.

MATCHED

Found by the party's IČO or e-mail.

CREATED

Created from the invoice's party.

MANUAL

A person chose it.
Example
"EXPLICIT"

InvoicePaymentMethod

Description

The way the invoice is to be paid, normalised; paymentMethodName is the system's own label.

Values
Enum Value Description

BANK_TRANSFER

CASH

CARD

CASH_ON_DELIVERY

OFFSET

OTHER

Example
"BANK_TRANSFER"

InvoicePaymentStatus

Description

How much of the invoice is paid, as the accounting system says.

Values
Enum Value Description

UNPAID

PARTIALLY_PAID

PAID

OVERPAID

UNKNOWN

The accounting system does not say.
Example
"UNPAID"

InvoiceSettlementKind

Description

What reduced an invoice's amount due.

Values
Enum Value Description

ADVANCE_DEDUCTION

CREDIT_NOTE_OFFSET

Example
"ADVANCE_DEDUCTION"

InvoiceStatus

Description

Where the document stands with the accounting system.

Values
Enum Value Description

PENDING

CREATED

FAILED

REMOVED

Deleted in the accounting system (removeInvoice); kept as evidence.
Example
"PENDING"

InvoiceSyncReason

Description

Why a sync wrote nothing.

Values
Enum Value Description

STALE

Its sourceChangedAt is older than the one the ERP holds.
Example
"STALE"

IssueOriginKind

Description

What an issue was created from, with the events feed's precedence: the same as Event.origin.

Values
Enum Value Description

FULFILMENT

A consignment's issue: the goods an order's consignment took, at dispatch or by picking. A picked consignment's issue is returned once it is completed, never while it is still open.

STOCKTAKE

A stocktake's shortfall.

MANUAL

Entered directly, from nothing else.
Example
"FULFILMENT"

IssueStatus

Description

Where an issue stands. Drafts are never returned.

Values
Enum Value Description

OPEN

Open: issued continuously. Its lines already applied are off stock and carry their value.

COMPLETED

Completed. The events feed's issue.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.
Example
"OPEN"

LocationKind

Values
Enum Value Description

STOCK

RECEIVING

SHIPPING

QUARANTINE

TRANSIT

SCRAP

PRODUCTION

Example
"STOCK"

LotStatus

Values
Enum Value Description

RELEASED

QUARANTINE

BLOCKED

Example
"RELEASED"

PaymentMethod

Description

How the customer pays.

Values
Enum Value Description

CARD

By card.

BANK_TRANSFER

By bank transfer.

CASH_ON_DELIVERY

In cash to the courier.

CASH

In cash at the counter.
Example
"CARD"

PrintTemplateKind

Description

The data contract a template is written against. Read it as a string: more may be added.

Values
Enum Value Description

SALES_ORDER

One document per sales order.

SALES_ORDER_ITEMS

One list of the lines of a selection of orders.

RECEIPT_ADVICE

One document per receipt advice.

RECEIPT

One document per receipt, an opening balance included.

ISSUE

One document per issue.

TRANSFER_ADVICE

One document per transfer advice.

TRANSFER

One document per transfer.

RECEIPT_ADVICE_ITEMS

One list of the lines of a selection of receipt advices.

RECEIPT_ITEMS

One list of the lines of a selection of receipts.

ISSUE_ITEMS

One list of the lines of a selection of issues.

TRANSFER_ADVICE_ITEMS

One list of the lines of a selection of transfer advices.

TRANSFER_ITEMS

One list of the lines of a selection of transfers.

INVOICE

One document per issued invoice.

ADVANCE_INVOICE

One document per issued advance invoice.

CREDIT_NOTE

One document per issued credit note.
Example
"SALES_ORDER"

PrintTemplateOutput

Description

What a template produces. Read it as a string: more may be added.

Values
Enum Value Description

PDF

Example
"PDF"

PrintTemplateSyntax

Description

What a template is written in. Read it as a string: more may be added.

Values
Enum Value Description

JSON

The renderer's layout JSON.
Example
"JSON"

ProductSortKey

Description

How products are ordered; the id breaks a tie.

Values
Enum Value Description

CODE

By code.

UPDATED_AT

By updatedAt, oldest first: with updatedFrom and includeArchived: true, the incremental sync (an archive moves updatedAt; archivedAt tells the product is gone). updatedAt is the start time of the writing transaction, so a change committed later can sort before one already read: resume from the last updatedAt seen minus 10 minutes and de-duplicate by id.
Example
"CODE"

ReceiptAdviceKind

Description

What the advice's document is. A purchase order's advice is drawn from the order in the ERP.

Values
Enum Value Description

DELIVERY_NOTE

SUPPLIER_INVOICE

OTHER

PURCHASE_ORDER

Drawn from a purchase order in the ERP. Never accepted on create or update.
Example
"DELIVERY_NOTE"

ReceiptAdviceLineReceiptStatus

Description

Where one line stands: what arrived against it, within the tenant's receipt tolerance.

Values
Enum Value Description

AWAITING

PARTIALLY_RECEIVED

RECEIVED

Example
"AWAITING"

ReceiptAdviceLineSettlement

Description

What a person decided about a line's difference.

Values
Enum Value Description

SHORT_ACCEPTED

Less arrived, and it is accepted.

OVER_ACCEPTED

More arrived, and it is kept.

SHORT_CLAIMED

Less arrived, and it is claimed from the supplier.

RETURNED

It arrived and went back.

CANCELLED_REMAINDER

The rest is not coming.
Example
"SHORT_ACCEPTED"

ReceiptAdviceState

Description

Where the advice stands, its status and what arrived combined. Derived, never stored.

Values
Enum Value Description

DRAFT

AWAITING

Open, and nothing has arrived on an open or completed receipt. A worker may already be scanning it into a draft receipt.

PARTIALLY_RECEIVED

Open, something arrived, and a line is short past the tenant's receipt tolerance.

RECEIVED

Open, and every line arrived within the tolerance (or over). Still open until a person closes it.

CLOSED

CANCELLED

Example
"DRAFT"

ReceiptAdviceStatus

Values
Enum Value Description

DRAFT

Being built in the ERP (an import still being matched). Has no number; never made here.

OPEN

Expects its goods.

CLOSED

Finished by a person once the differences were settled.

CANCELLED

Called off before anything arrived. Keeps its number.
Example
"DRAFT"

ReceiptOriginKind

Description

What a receipt was created from.

Values
Enum Value Description

MANUAL

Entered directly, from nothing else.

ADVICE

Received against an advice (a supplier's announced delivery).

STOCKTAKE

A stocktake's surplus.
Example
"MANUAL"

ReceiptStatus

Description

Where a receipt stands. Drafts are never returned.

Values
Enum Value Description

OPEN

Open: being received continuously. Its lines already applied are on stock and carry their value.

COMPLETED

Completed. The events feed's receipt.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.
Example
"OPEN"

SalesOrderFulfilmentStatus

Description

How much of an order has left the warehouse.

Values
Enum Value Description

UNFULFILLED

Nothing has shipped.

PARTIALLY_FULFILLED

Some has shipped.

FULFILLED

Nothing is outstanding.
Example
"UNFULFILLED"

SalesOrderItemKind

Description

What a goods line is.

Values
Enum Value Description

PRODUCT

A product.

SET

A set, as one priced line.

GIFT

A gift, which may be priced 0 without a warning.
Example
"PRODUCT"

SalesOrderPaymentStatus

Description

Whether an order is paid, from its payments against its total.

Values
Enum Value Description

UNPAID

Nothing paid.

PENDING

A payment is announced and not yet arrived.

AUTHORIZED

A hold covers the order; no money yet.

PARTIALLY_PAID

Part is paid.

PAID

Paid in full.

PARTIALLY_REFUNDED

Part was refunded.

REFUNDED

Refunded in full.
Example
"UNPAID"

SalesOrderStatus

Description

Where an order is in its life.

Values
Enum Value Description

DRAFT

Not yet confirmed.

CONFIRMED

Confirmed: numbered and reserving stock.

COMPLETED

Everything owed has shipped.

CANCELLED

Cancelled.

MERGED

Merged into another order.
Example
"DRAFT"

ScopeType

Description

A dimension along which a key's view is narrowed.

Values
Enum Value Description

LEGAL_ENTITY

A legal entity of the organisation.

WAREHOUSE

A warehouse.

COUNTRY

A country, by ISO 3166-1 alpha-2 code.

PARTNER

A business partner.
Example
"LEGAL_ENTITY"

ShipmentStatus

Description

Where a shipment stands at the carrier. More values may be added: ignore what you do not know.

Values
Enum Value Description

CREATED

The carrier accepted it; its shipping numbers are answered at this moment.

CANCELLED

Cancelled before the carrier took it.
Example
"CREATED"

StockCardChangeOrigin

Description

How a change of a stock card was found.

Values
Enum Value Description

LIVE

After a stock write.

SWEEP

Found by the background check.
Example
"LIVE"

StockFigure

Description

A figure of a stock card, as stockCardChanges names what changed.

Values
Enum Value Description

QUANTITY

RESERVED

RESERVED_BY_SOURCE

AVAILABLE

ADVISED

ON_ORDER

Example
"QUANTITY"

TransferAdviceState

Description

The progress of the instruction, derived from the transfers that answer it.

Values
Enum Value Description

DRAFT

AWAITING

Open, and no open or posted transfer has moved goods against it. A worker may already be scanning it into a draft transfer.

IN_PROGRESS

COMPLETED

CLOSED

CANCELLED

Example
"DRAFT"

TransferAdviceStatus

Values
Enum Value Description

DRAFT

OPEN

CLOSED

CANCELLED

Example
"DRAFT"

TransferOriginKind

Description

What a transfer was created from, with the events feed's precedence: the same as Event.origin.

Values
Enum Value Description

STOCKTAKE

A stocktake's relocation: goods counted in another bin than the books held them in.

MANUAL

Entered directly, or against a transfer advice (see TransferLine.transferAdviceLineId).
Example
"STOCKTAKE"

TransferStatus

Description

Where a transfer stands. Drafts are never returned.

Values
Enum Value Description

OPEN

Open: moved continuously. Its lines already applied are moved and carry their value.

COMPLETED

Completed. The events feed's transfer.completed; in Event.transitions the raw status code is POSTED.

CANCELLED

Cancelled. Its lines net to zero: each line's value is 0.
Example
"OPEN"

Scalars

Boolean

Description

The Boolean scalar type represents true or false.

Decimal

Description

An exact decimal number, sent and returned as a JSON string ("12.30") so no digit is lost to a float. A JSON number is accepted on input.

Example
Decimal

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

JSON

Description

Any JSON value, sent as itself.

Example
{}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

Time

Description

An instant, RFC 3339 in UTC.

Example
"10:15:30Z"

UUID

Description

A UUID in its canonical text form.

Example
"4c4efadc-fa25-44b2-b302-a0229e5a7e96"