Complete OpenAPI Specification
Below is the complete OpenAPI specification for the Procuros API v2. You can copy this content and save it asopenapi-v2.yaml
for use with your development tools.
Copy
Ask AI
openapi: 3.0.3
info:
title: 'Procuros API'
description: 'Manage Procuros Transactions.'
version: 2.0.0
servers:
- url: https://api.procuros.io/
- url: https://api.procuros-staging.io/
security:
- api_token: []
components:
securitySchemes:
api_token:
type: http
scheme: bearer
description: 'The API Token of your ERP Connection.'
schemas:
Attachment:
type: object
properties:
fileName:
type: string
description: 'Name of the file.'
url:
type: string
format: uri
description: 'URL to the file.'
mimeType:
type: string
description: 'MIME type of the file.'
Date:
type: string
format: date
pattern: '^\d{4}-\d{2}-\d{2}$'
example: '2021-11-11'
DateTime:
type: string
format: date-time
pattern: \d{4}(.\d{2}){2}(\s|T)(\d{2}.){2}\d{2}(.\d{6}(Z?))?
example: '2021-10-23T00:00:00.000000Z'
Currency:
type: string
description: 'ISO 4217 standard three-letter currency code.'
pattern: '^[A-Z]{3}$'
example: 'EUR'
PaymentTerm:
type: object
required:
- payInNumberOfDays
- percentage
properties:
payInNumberOfDays:
type: integer
example: 7
percentage:
type: number
description: 'Discount in % which is granted if payment is made not later than payInNumberOfDays after invoice date.'
format: float
example: 3.5
Tax:
type: object
required:
- amount
- percentage
properties:
amount:
type: number
format: float
description: 'Tax value in currency.'
example: 0.15
percentage:
type: number
format: float
description: 'Tax value in percentage.'
example: 19.0
description:
type: string
nullable: true
example: 'Total item tax.'
UnitOfMeasure:
type: string
description: 'Subset of the the UN/CEFACT Unit of Measure Common Codes.'
default: EA
enum:
- EA
- GRM
- HUR
- KGM
- LTR
- MLT
- MTK
- MTR
- PCK
- SET
- CS
- CA
- DAY
- WEE
- MON
- CT
- CQ
- CU
- BJ
- BO
- MTQ
- PF
- BG
- RO
- TNE
- BE
- CMT
- KMT
- PR
- TU
AdditionalOrderIdentifiers:
type: object
description: 'Additional order identifiers for different parties in the transaction.'
properties:
supplierOrderIdentifier:
type: string
description: 'Supplier order identifier.'
example: 'SUP-12345'
shipToOrderIdentifier:
type: string
description: 'Ship-to order identifier.'
example: 'ST-67890'
shipFromOrderIdentifier:
type: string
description: 'Ship-from order identifier.'
example: 'SF-11111'
billToOrderIdentifier:
type: string
description: 'Bill-to order identifier.'
example: 'BT-22222'
billFromOrderIdentifier:
type: string
description: 'Bill-from order identifier.'
example: 'BF-33333'
finalRecipientOrderIdentifier:
type: string
description: 'Final recipient order identifier.'
example: 'FR-44444'
ItemIdentifier:
type: object
properties:
identifier:
type: string
description: "Party identifier within the 'domain' such as EAN/GTIN on GS1 domain, buyer's internal SKU on BUYER domain, etc."
example: '43000000000011'
domain:
type: string
description: 'Identification system the identifier belongs to.'
default: GS1
enum:
- GS1
- BUYER
- SUPPLIER
Batch:
type: object
properties:
batchIdentifier:
type: string
expirationDate:
$ref: '#/components/schemas/Date'
quantity:
type: number
format: float
description: 'How much of the shipping notice line item belongs to this batch. The sum of all batch quantities must be equal to the "shippedQuantity" of the shipping notice line item.'
netWeight:
type: number
format: float
description: 'Net weight of the batch in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the batch in grams.'
ModeOfTransport:
type: string
description: 'Chosen mode of transport for the shipment.'
enum:
- ROAD
- RAIL
- AIR
- SEA
- MULTIMODAL
IncoTerms:
type: string
description: 'International Commercial Terms (INCOTERMS) as published by the International Chamber of Commerce (ICC).'
enum:
- EXW
- FCA
- CPT
- CIP
- DAP
- DDP
- FAS
- FOB
- CFR
- CIF
- DAT
Certifications:
type: object
description: 'Item certifications for various standards and organizations.'
properties:
deBnn:
type: string
description: 'DE-BNN (Bundesverband Naturkost Naturwaren) certification number'
example: 'NUMBER-123'
# Content Type - Purchase Order
Order:
type: object
title: 'Order'
description: 'A purchase order is a formal request from a buying organization to a supplier to fulfill a contract. '
required:
- header
- items
properties:
header:
$ref: '#/components/schemas/OrderHeader'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/OrderItem'
summary:
description: 'The summary is required if a modificationGroup exists on the order, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
type: object
required:
- subtotalAmount
- grossAmount
- netAmount
- dueAmount
- totalCharges
- totalAllowances
- tax
properties:
subtotalAmount:
type: number
format: float
description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
grossAmount:
type: number
format: float
description: 'The netAmount plus taxes.'
netAmount:
type: number
format: float
description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
dueAmount:
type: number
format: float
description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
totalCharges:
type: number
format: float
description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
totalAllowances:
type: number
format: float
description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
tax:
type: object
minItems: 1
required:
- total
- items
properties:
total:
type: number
format: float
description:
type: string
example: 'Total item tax.'
items:
type: array
items:
type: object
required:
- percentage
- taxableAmount
- taxAmount
- category
properties:
percentage:
type: number
format: float
taxableAmount:
type: number
format: float
taxAmount:
type: number
format: float
category:
type: string
description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
description:
type: string
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
OrderHeader:
type: object
required:
- buyer
- supplier
- orderIdentifier
- orderDate
properties:
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
orderIdentifier:
type: string
example: 'PO9383-R45'
description: 'Order number assigned to this purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
AdditionalOrderIdentifiers:
$ref: '#/components/schemas/AdditionalOrderIdentifiers'
type:
type: string
description: 'Type of the order as assigned by sender.'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
currency:
$ref: '#/components/schemas/Currency'
paymentTerms:
type: array
description: 'Used for defining payment targets and optional discounts.'
items:
$ref: '#/components/schemas/PaymentTerm'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within purchase orders'
deliveryInformation:
type: string
maxLength: 100000
description: 'Delivery information for the order.'
purchasingInformation:
type: string
maxLength: 100000
description: 'Additional information about purchasing.'
legalInformation:
type: string
maxLength: 100000
description: 'Legal notices and information.'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to the entire order.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for the order.'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
attachments:
type: array
items:
$ref: '#/components/schemas/Attachment'
OrderItem:
type: object
properties:
lineNumber:
example: 1
description: 'LineNumber attribute may remain constant for any item through updates to the order, therefor lineNumbers may not be consecutive.'
type: integer
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
quantity:
example: 2.0
description: 'Defaults to 1.'
type: number
format: float
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
description:
type: string
comments:
type: string
unitPrice:
example: 4.75
type: number
format: float
recommendedRetailPrice:
example: 5.25
type: number
format: float
tax:
$ref: '#/components/schemas/Tax'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to this item.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for this item.'
requestedDeliveryDate:
allOf:
- $ref: '#/components/schemas/DateTime'
requestedEarliestDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedLatestDeliveryDate:
$ref: '#/components/schemas/DateTime'
deliveryGracePeriodInDays:
type: integer
description: 'Delivery grace period in days.'
minimumRemainingShelfLifeInDays:
type: integer
description: 'Minimum remaining shelf life in days.'
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
description: 'Color code of the item.'
colorName:
type: string
description: 'Color name of the item.'
size:
type: string
description: 'Size of the item.'
dimension:
type: string
description: 'Dimension of the item.'
hsCode:
type: string
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
brand:
type: string
description: 'Brand or manufacturer name of the product (e.g., BOSCH, Kela).'
example: 'BOSCH'
consumerGroup:
type: string
description: 'Gender for which this item is marketed (e.g., Unisex, Damen, Herren).'
assortment:
type: string
description: 'Collection which the item belongs to (e.g., ME_GEN, COA_FB, COA_G, COA_OR, MB_EP, MB_EX, MB_LS, VCA_CE, LAN_ARP, JCH_IWF, JCH_IWC, LAC_L).'
category:
type: string
description: 'Product category classification (e.g., 1008).'
subCategory:
type: string
description: 'Product sub-category classification.'
certifications:
$ref: '#/components/schemas/Certifications'
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
OrderResponse:
type: object
title: 'Order Response'
required:
- header
properties:
header:
$ref: '#/components/schemas/OrderResponseHeader'
items:
type: array
description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. When the type is `CHANGE`, it must contain ALL order line items, regardless whether or not `orderedQuantity` and `confirmedQuantity` are equal.'
minItems: 1
items:
$ref: '#/components/schemas/OrderResponseItem'
summary:
description: 'The summary is required if a modificationGroup exists on the order response, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
type: object
required:
- subtotalAmount
- grossAmount
- netAmount
- dueAmount
- totalCharges
- totalAllowances
- tax
properties:
subtotalAmount:
type: number
format: float
description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
grossAmount:
type: number
format: float
description: 'The netAmount plus taxes.'
netAmount:
type: number
format: float
description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
dueAmount:
type: number
format: float
description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
totalCharges:
type: number
format: float
description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
totalAllowances:
type: number
format: float
description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
tax:
type: object
minItems: 1
required:
- total
- items
properties:
total:
type: number
format: float
description:
type: string
example: 'Total item tax.'
items:
type: array
items:
type: object
required:
- percentage
- taxableAmount
- taxAmount
- category
properties:
percentage:
type: number
format: float
taxableAmount:
type: number
format: float
taxAmount:
type: number
format: float
category:
type: string
description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
description:
type: string
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
OrderResponseHeader:
type: object
required:
- buyer
- supplier
- orderResponseIdentifier
- orderResponseDate
- orderIdentifier
properties:
type:
type: string
description: 'Type of the order response. `ACCEPT` means the order was accepted exactly as ordered. `REJECT` means the order was fully rejected. `CHANGE` means part of the order was accepted but either line item quantities or delivery date are changed.'
enum:
- ACCEPT
- REJECT
- CHANGE
version:
type: integer
description: 'If you are sending multiple order responses, this field must be incremented by 1 for each response.'
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
orderResponseIdentifier:
type: string
example: 'PO9383-R45'
description: 'Order number assigned to this purchase order by the buyer.'
orderResponseDate:
$ref: '#/components/schemas/DateTime'
orderIdentifier:
type: string
example: 'PO9383-R45'
description: 'Order number assigned to this purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
AdditionalOrderIdentifiers:
$ref: '#/components/schemas/AdditionalOrderIdentifiers'
confirmedDeliveryDate:
description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. The confirmed delivery date of the order response.'
allOf:
- $ref: '#/components/schemas/DateTime'
requestedDeliveryDate:
description: 'Required on order response type `CHANGE`. Prohibited for `REJECT` type. The requested delivery date of the order.'
allOf:
- $ref: '#/components/schemas/DateTime'
currency:
$ref: '#/components/schemas/Currency'
paymentTerms:
type: array
description: 'Used for defining payment targets and optional discounts.'
items:
$ref: '#/components/schemas/PaymentTerm'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within purchase orders'
deliveryInformation:
type: string
maxLength: 100000
description: 'Delivery information for the order.'
purchasingInformation:
type: string
maxLength: 100000
description: 'Additional information about purchasing.'
legalInformation:
type: string
maxLength: 100000
description: 'Legal notices and information.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for the order.'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to the entire order.'
OrderResponseItem:
type: object
properties:
lineNumber:
example: 1
type: integer
orderLineNumber:
type: integer
description: 'The line number of the order item that this response item refers to.'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
orderedQuantity:
example: 2.0
type: number
format: float
confirmedQuantity:
example: 2.0
type: number
format: float
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedEarliestDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedLatestDeliveryDate:
$ref: '#/components/schemas/DateTime'
confirmedDeliveryDate:
$ref: '#/components/schemas/DateTime'
confirmedEarliestDeliveryDate:
$ref: '#/components/schemas/DateTime'
confirmedLatestDeliveryDate:
$ref: '#/components/schemas/DateTime'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
description:
type: string
comments:
type: string
unitPrice:
example: 4.75
type: number
format: float
recommendedRetailPrice:
example: 5.25
type: number
format: float
tax:
$ref: '#/components/schemas/Tax'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for this item.'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to this item.'
minimumRemainingShelfLifeInDays:
type: integer
description: 'Minimum remaining shelf life in days.'
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
description: 'Color code of the item.'
colorName:
type: string
description: 'Color name of the item.'
size:
type: string
description: 'Size of the item.'
dimension:
type: string
description: 'Dimension of the item.'
hsCode:
type: string
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
Invoice:
type: object
title: 'Invoice'
description: 'Invoices describe purchase orders, line items, partners involved, accounting distribution, payment terms, discounts, shipping and special handling, taxes, deposit and prepayment, and remittance information.'
required:
- header
- items
properties:
header:
$ref: '#/components/schemas/InvoiceHeader'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/InvoiceItemWithSubSubItems'
summary:
description: 'The summary is required if a modificationGroup exists on the invoice, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
type: object
required:
- dueAmount
properties:
subtotalAmount:
type: number
format: float
description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
grossAmount:
type: number
format: float
description: 'The netAmount plus taxes.'
netAmount:
type: number
format: float
description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
dueAmount:
type: number
format: float
description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
totalCharges:
type: number
format: float
description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
totalAllowances:
type: number
format: float
description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
tax:
type: object
minItems: 1
required:
- total
- items
properties:
total:
type: number
format: float
description:
type: string
example: 'Total item tax.'
items:
type: array
items:
type: object
required:
- percentage
- taxableAmount
- taxAmount
- category
properties:
percentage:
type: number
format: float
taxableAmount:
type: number
format: float
taxAmount:
type: number
format: float
category:
type: string
description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
description:
type: string
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
InvoiceHeader:
type: object
required:
- buyer
- supplier
- invoiceIdentifier
- invoiceDate
- shippingNoticeIdentifier
- shippingNoticeDate
- orderIdentifier
- orderDate
properties:
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billFrom:
description: 'If this is kept empty, the "supplier" is used as the "billFrom" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
invoiceIdentifier:
type: string
description: 'Invoice number/reference.'
example: 'IV-0001'
invoiceDate:
$ref: '#/components/schemas/DateTime'
invoiceDueDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeIdentifier:
type: string
description: 'Shipping notice number/reference.'
example: 'SN-0001'
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
AdditionalOrderIdentifiers:
$ref: '#/components/schemas/AdditionalOrderIdentifiers'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
paymentTerms:
type: array
description: 'Used for defining payment targets and optional discounts.'
items:
$ref: '#/components/schemas/PaymentTerm'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within invoices'
deliveryInformation:
type: string
maxLength: 100000
description: 'Information about the delivery process.'
purchasingInformation:
type: string
maxLength: 100000
description: 'Additional information about purchasing.'
legalInformation:
type: string
maxLength: 100000
description: 'Legal notices and information.'
currency:
$ref: '#/components/schemas/Currency'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to the entire invoice. Does not affect invoice calculations.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for the invoice.'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
InvoiceItem:
type: object
required:
- lineNumber
- identifiers
- isDepositItem
- isInvoicedItem
- quantity
- unitPrice
- tax
properties:
lineNumber:
type: integer
example: 1
shippingNoticeIdentifier:
type: string
description: 'Shipping notice number/reference.'
example: 'SN-0001'
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeLineNumber:
type: integer
example: 1
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
orderLineNumber:
type: integer
example: 1
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
isInvoicedItem:
type: boolean
description: 'Determine if this item is the invoiced item. Only invoiced items can have a unitPrice != 0. If an item is not invoiced and no parent item is invoiced either, sub items must exist.'
description:
type: string
description: 'Item description.'
comments:
type: string
quantity:
type: number
format: float
example: 1.0
description: 'For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
freeQuantity:
type: number
format: float
example: 1.0
default: null
description: 'The quantity of this item that is free of charge. For subitems, this must be the total free quantity of this item. For example, the parent item is a display of chocolate bars and has free quantity set to 2. Each display contains 50 chocolate bars. Therefore, the free quantity of the "Chocolate Bar" subitem is 100 (2x50).'
orderedQuantity:
type: number
format: float
example: 1.0
default: null
description: 'The quantity ordered by the customer.'
unitPrice:
type: number
format: float
default: null
example: 2.00
recommendedRetailPrice:
type: number
format: float
default: null
example: 2.50
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
maxLength: 255
description: 'Color code of the item.'
colorName:
type: string
maxLength: 255
description: 'Color name of the item.'
size:
type: string
maxLength: 255
description: 'Size of the item.'
dimension:
type: string
maxLength: 255
description: 'Dimension of the item.'
hsCode:
type: string
maxLength: 255
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
certifications:
$ref: '#/components/schemas/Certifications'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to this item. Does not affect invoice calculations.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for this item.'
tax:
$ref: '#/components/schemas/Tax'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
modificationGroups:
description: 'If a Modification Group is provided, the Invoice Summary is required.'
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
InvoiceItemWithSubItems:
allOf:
- $ref: '#/components/schemas/InvoiceItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this sub invoice item.'
items:
$ref: '#/components/schemas/InvoiceItem'
InvoiceItemWithSubSubItems:
allOf:
- $ref: '#/components/schemas/InvoiceItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this invoice item. Supports two levels of nesting.'
items:
$ref: '#/components/schemas/InvoiceItemWithSubItems'
ShippingNotice:
type: object
title: 'Shipping Notice'
required:
- header
- transportUnits
properties:
header:
$ref: '#/components/schemas/ShippingNoticeHeader'
transportUnits:
type: array
description: 'Transport units (e.g. pallets, cartons) contained in the shipment. Can be nested in case of sandwich pallets.'
minItems: 1
items:
$ref: '#/components/schemas/ShippingNoticeTransportUnitWithSubTransportUnits'
ShippingNoticeHeader:
type: object
required:
- buyer
- supplier
- shippingNoticeIdentifier
- shippingNoticeDate
- orderIdentifier
properties:
buyer:
allOf:
- $ref: '#/components/schemas/Party'
supplier:
allOf:
- $ref: '#/components/schemas/Party'
shipFrom:
description: 'Used in case the shipment is sent by a third-party logistics provider.'
allOf:
- $ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
shippingNoticeIdentifier:
type: string
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
AdditionalOrderIdentifiers:
$ref: '#/components/schemas/AdditionalOrderIdentifiers'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
despatchDate:
description: 'If this is kept empty, the "shippingNoticeDate" is used as "despatchDate".'
allOf:
- $ref: '#/components/schemas/DateTime'
carrier:
type: string
default: null
description: 'Carriers company name.'
trackingNumber:
type: string
default: null
trackingUrl:
type: string
default: null
modeOfTransport:
$ref: '#/components/schemas/ModeOfTransport'
incoTerms:
$ref: '#/components/schemas/IncoTerms'
shippingMethod:
type: string
status:
type: string
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within purchase orders'
deliveryInformation:
type: string
maxLength: 100000
description: 'Information about the delivery process.'
purchasingInformation:
type: string
maxLength: 100000
description: 'Additional information about purchasing.'
legalInformation:
type: string
maxLength: 100000
description: 'Legal notices and information.'
currency:
$ref: '#/components/schemas/Currency'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
ShippingNoticeTransportUnit:
type: object
description: 'If a TransportUnit does not contain sub items (like packages on a pallet), it must contain a nonempty list of items. '
required:
- items
properties:
unitIdentifier:
type: string
description: 'Transport unit number. (SSCC or NVE)'
example: '340000000000001'
unitType:
type: string
description: 'Transport unit type.'
enum:
- EURO_PALLET
- EURO_PALLET_HALF
- EURO_PALLET_QUARTER
- CARTON
- PACKAGE
- PALLET
- CONTAINER
containedTradeUnitCount:
type: integer
description: 'Number of contained trade units. (cases, cartons, etc.)'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
despatchDate:
$ref: '#/components/schemas/DateTime'
items:
type: array
description: 'Line items contained in this transport unit.'
items:
$ref: '#/components/schemas/ShippingNoticeItemWithSubSubItems'
ShippingNoticeTransportUnitWithSubTransportUnits:
allOf:
- $ref: '#/components/schemas/ShippingNoticeTransportUnit'
- type: object
properties:
transportUnits:
type: array
description: 'Contained transport units (e.g. sandwich pallet layers).'
items:
$ref: '#/components/schemas/ShippingNoticeTransportUnit'
ShippingNoticeItem:
type: object
required:
- lineNumber
- identifiers
- isDepositItem
- orderedQuantity
- shippedQuantity
properties:
lineNumber:
type: integer
orderLineNumber:
type: integer
description: 'Line number used on the order.'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
description:
type: string
description: 'Item description.'
comments:
type: string
orderedQuantity:
type: number
description: 'The quantity ordered by the customer. For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
shippedQuantity:
type: number
description: 'The quantity shipped to the customer. For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
openQuantityAction:
type: string
enum:
- DISCARDED
- DELIVERED_LATER
description: 'Method used to handle mismatches between "orderedQuantity" and "shippedQuantity". Required if "orderedQuantity" and "shippedQuantity" mismatch, otherwise prohibited.'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
unitPrice:
type: number
example: 1.50
format: float
default: null
recommendedRetailPrice:
type: number
example: 1.75
format: float
default: null
tax:
$ref: '#/components/schemas/Tax'
minimumRemainingShelfLifeInDays:
type: integer
description: 'Minimum remaining shelf life in days.'
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
maxLength: 255
description: 'Color code of the item.'
colorName:
type: string
maxLength: 255
description: 'Color name of the item.'
size:
type: string
maxLength: 255
description: 'Size of the item.'
dimension:
type: string
maxLength: 255
description: 'Dimension of the item.'
hsCode:
type: string
maxLength: 255
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
certifications:
$ref: '#/components/schemas/Certifications'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
breeder:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
required:
- identifiers
properties:
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ShippingNoticePartyIdentifier'
fattener:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
required:
- identifiers
properties:
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ShippingNoticePartyIdentifier'
slaughterer:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
required:
- identifiers
properties:
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ShippingNoticePartyIdentifier'
cutter:
allOf:
- $ref: '#/components/schemas/Party'
- type: object
required:
- identifiers
properties:
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ShippingNoticePartyIdentifier'
slaughterDate:
$ref: '#/components/schemas/Date'
tradeClass:
type: string
maxLength: 255
earTag:
type: string
maxLength: 255
birthdate:
$ref: '#/components/schemas/Date'
gender:
type: string
enum:
- MALE
- FEMALE
ShippingNoticeItemWithSubItems:
allOf:
- $ref: '#/components/schemas/ShippingNoticeItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this sub shipping notice item.'
items:
$ref: '#/components/schemas/ShippingNoticeItem'
ShippingNoticeItemWithSubSubItems:
allOf:
- $ref: '#/components/schemas/ShippingNoticeItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this shipping notice item. Supports two levels of nesting.'
items:
$ref: '#/components/schemas/ShippingNoticeItemWithSubItems'
# Party
Party:
type: object
required:
- identifiers
properties:
name:
type: string
description: 'Mandatory if the deprecated "name" attribute on the "PostalAddress" object is omitted.'
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/PartyIdentifier'
postalAddress:
$ref: '#/components/schemas/PostalAddress'
contacts:
type: array
minItems: 1
items:
$ref: '#/components/schemas/Contact'
financialInstitution:
type: object
properties:
name:
type: string
institutionId:
type: string
institutionIdDomain:
type: string
accountNumber:
type: string
accountHolder:
type: string
PartyIdentifier:
type: object
required:
- identifier
- domain
properties:
identifier:
type: string
description: 'Party identifier within the "domain" such as GLN on GS1 domain, DUNS number on DUNS domain, etc.'
example: '1100001016310'
domain:
type: string
description: 'Identification system the identifier belongs to.'
default: GS1
enum:
- GS1
- DUNS
- VAT_DE
- FED_TAX
- SENDER_INTERNAL
- RECEIVER_INTERNAL
ShippingNoticePartyIdentifier:
type: object
required:
- identifier
- domain
properties:
identifier:
type: string
description: 'Party identifier within the "domain" such as GLN on GS1 domain, DUNS number on DUNS domain, etc.'
example: '1100001016310'
domain:
type: string
description: 'Identification system the identifier belongs to.'
default: GS1
enum:
- GS1
- DUNS
- VAT_DE
- FED_TAX
- SENDER_INTERNAL
- RECEIVER_INTERNAL
- VVVO
- VETERINARY
PostalAddress:
type: object
description: 'Depending on the transaction different properties are required. Only on an invoice a full address is required.'
properties:
name:
type: string
example: 'ACME Germany GmbH - Außenstelle Hamburg'
deprecated: true
description: 'Use the "name" attribute on the "Party" object instead.'
street:
type: string
example: 'Sternstrasse 23'
addressExtra:
type: string
example: 'E4'
city:
type: string
example: 'Hamburg'
postalCode:
type: string
example: '21571'
state:
type: string
example: 'HH'
countryCode:
type: string
minLength: 2
maxLength: 2
pattern: '^[A-Z]{2}$'
description: 'ISO 3166-1 standard two-letter country code.'
example: 'DE'
Contact:
type: object
properties:
title:
type: string
example: 'Prof. Dr.'
salutation:
type: string
example: 'Frau'
firstName:
type: string
example: 'Atikin'
lastName:
type: string
example: 'Iar'
phone:
type: string
example: '+491763021548'
mobile:
type: string
example: '+447881561299'
email:
type: string
example: '[email protected]'
format: email
fax:
type: string
example: '+491763021548-11'
department:
type: string
example: 'Purchasing'
ProcurosTransactionId:
type: string
description: 'Unique ID assigned to every transaction on the Procuros Network.'
format: uuid
example: '949b2f25-fd9d-4c58-8899-b4dc277f8cf9'
TransactionType:
type: string
description: 'Type of transaction.'
enum:
- 'ORDER'
- 'ORDER_RESPONSE'
- 'SHIPPING_NOTICE'
- 'INVOICE'
- 'CREDIT_NOTE'
- 'DISPATCH_INSTRUCTION'
- 'DISPATCH_INSTRUCTION_RESPONSE'
- 'RECEIVAL_NOTICE'
- 'REMITTANCE_ADVICE'
- 'PRODUCT_CATALOG'
- 'INVENTORY_REPORT'
- 'SALES_REPORT'
TransactionContent:
oneOf:
- '$ref': '#/components/schemas/Order'
- '$ref': '#/components/schemas/OrderResponse'
- '$ref': '#/components/schemas/ShippingNotice'
- '$ref': '#/components/schemas/Invoice'
- '$ref': '#/components/schemas/CreditNote'
- '$ref': '#/components/schemas/DispatchInstruction'
- '$ref': '#/components/schemas/DispatchInstructionResponse'
- '$ref': '#/components/schemas/ReceivalNotice'
- '$ref': '#/components/schemas/RemittanceAdvice'
- '$ref': '#/components/schemas/ProductCatalog'
- '$ref': '#/components/schemas/InventoryReport'
- '$ref': '#/components/schemas/SalesReport'
Transaction:
type: object
required:
- procurosTransactionId
- status
- flow
- createdAt
- type
- content
properties:
procurosTransactionId:
$ref: '#/components/schemas/ProcurosTransactionId'
type:
$ref: '#/components/schemas/TransactionType'
status:
$ref: '#/components/schemas/TransactionStatus'
flow:
$ref: '#/components/schemas/TransactionFlow'
createdAt:
$ref: '#/components/schemas/DateTime'
content:
$ref: '#/components/schemas/TransactionContent'
TransactionFlow:
type: string
description: 'Flow (LIVE or TEST) of the transaction.'
enum:
- 'LIVE'
- 'TEST'
TransactionStatus:
type: string
description: 'Current status of the transaction.'
enum:
- 'PENDING'
- 'SUCCESS'
- 'FAILED'
- 'DROPPED'
- 'UNKNOWN'
ReceivedTransaction:
type: object
required:
- procurosTransactionId
- type
- content
properties:
procurosTransactionId:
$ref: '#/components/schemas/ProcurosTransactionId'
type:
$ref: '#/components/schemas/TransactionType'
content:
$ref: '#/components/schemas/TransactionContent'
SentTransaction:
type: object
required:
- type
- content
properties:
type:
$ref: '#/components/schemas/TransactionType'
content:
$ref: '#/components/schemas/TransactionContent'
ErrorType:
type: string
description: 'The type of the error. `DATA` indicates that the error is caused by invalid or insufficient data and can be resolved by a user. `INTERNAL` indicates a system-level error that cannot be fixed by a user.'
enum:
- 'DATA'
- 'INTERNAL'
InternalErrorResponse:
type: object
required:
- message
properties:
message:
type: string
ClientErrorResponse:
type: object
required:
- message
- errorUrl
properties:
message:
type: string
errorUrl:
type: string
description: 'URL linking to the error on the Procuros Portal.'
ValidationError:
type: object
additionalProperties:
type: array
description: 'List of validation errors.'
minItems: 1
items:
type: string
GeneralValidationErrorResponse:
type: object
required:
- message
- errors
properties:
message:
type: string
errors:
$ref: '#/components/schemas/ValidationError'
TransactionValidationErrorResponse:
type: object
required:
- message
- errors
- errorUrl
properties:
message:
type: string
errors:
$ref: '#/components/schemas/ValidationError'
errorUrl:
type: string
description: 'URL linking to the error on the Procuros Portal.'
ExportCustomersResult: &ExportTradePartnersResult
type: array
items:
type: object
required:
- systemIdentifier
- isEnabled
- mainParty
properties:
systemIdentifier:
type: string
example: 'KU-1029'
description: 'The internal ERP system identifier this trade partner has on your side. Will be supplied back to you through the "SYNC_ENABLED_TRADE_PARTNERS" task.'
isEnabled:
type: boolean
example: false
description: 'Indicates whether the trade partner is enabled for Procuros.'
mainParty:
description: 'Main party (address + contacts) of the trade partner.'
allOf:
- $ref: '#/components/schemas/Party'
additionalParties:
type: object
properties:
shipTo:
type: array
description: 'Additional ship-to (delivery) parties that exist for this trade partner.'
items:
$ref: '#/components/schemas/Party'
billTo:
type: array
description: 'Additional bill-to (billing) parties that exist for this trade partner.'
items:
$ref: '#/components/schemas/Party'
payTo:
type: array
description: 'Additional pay-to (remittance) parties that exist for this trade partner.'
items:
$ref: '#/components/schemas/Party'
ExportSuppliersResult:
<<: *ExportTradePartnersResult
SyncEnabledTradePartnersPayload:
type: object
required:
- customers
- suppliers
properties:
customers:
type: array
items:
type: string
example: 'KU-1092'
description: 'Your internal ERP system identifier of the trade partner as supplied to Procuros through your response to the "EXPORT_CUSTOMERS" task.'
suppliers:
type: array
items:
type: string
example: 'SU-1092'
description: 'Your internal ERP system identifier of the trade partner as supplied to Procuros through your response to the "EXPORT_SUPPLIERS" task.'
ModificationGroup:
type: object
required:
- basis
- level
- modifications
properties:
basis:
type: number
format: float
example: 1.50
description: 'The net base amount on which the modifications are applied. For item-level modifications on level 1, this equals the line item subtotal (quantity * unitPrice). For document-level modifications on level 1, this equals the subtotalAmount of the invoice.'
level:
type: integer
example: 1
description: 'Determines in which order the modifications group should be applied. Starting at 1 and continuously increasing. There should be no modification groups with the same level.'
modifications:
type: array
minItems: 1
items:
$ref: '#/components/schemas/Modification'
Modification:
type: object
description: 'One of percentage and amount is required.'
properties:
type:
type: string
description: 'Type of the modification'
enum:
- ALLOWANCE
- CHARGE
calculationType:
type: string
description: 'Type of the calculation'
enum:
- ABSOLUTE
- RELATIVE
reasonCode:
type: string
description: 'Reason for the modification'
enum:
- SHIPPING
- PACKAGING
- HANDLING
- DISCOUNT
- INSURANCE
description:
type: string
description: 'Description for the modification'
percentage:
type: number
format: float
example: 1.5
amount:
type: number
format: float
example: 5.5
tax:
$ref: '#/components/schemas/Tax'
CreditNote:
type: object
title: 'Credit Note'
description: 'A credit note is a document sent to a customer in order to correct a mistake on an order or an invoice, or to refund an amount paid for products or services.'
required:
- header
- items
- summary
properties:
header:
$ref: '#/components/schemas/CreditNoteHeader'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/CreditNoteItemWithSubSubItems'
summary:
description: 'The summary is required if a modificationGroup exists on the invoice, otherwise the summary is optional. In API v3, the summary will be mandatory in any case.'
type: object
required:
- dueAmount
properties:
subtotalAmount:
type: number
format: float
description: 'The sum of all line item subtotal amounts. The line item subtotal already includes all line item modifications.'
grossAmount:
type: number
format: float
description: 'The netAmount plus taxes.'
netAmount:
type: number
format: float
description: 'The subtotalAmount plus totalCharges and minus totalAllowances.'
dueAmount:
type: number
format: float
description: 'The grossAmount minus deposit. Note: deposits are not yet supported, therefore dueAmount will always equal grossAmount for now.'
totalCharges:
type: number
format: float
description: 'The total sum of all charges applied on document-level. Does not include charges applied on item-level.'
totalAllowances:
type: number
format: float
description: 'The total sum of all allowances applied on invoice level. Does not include allowances applied on item-level.'
tax:
type: object
minItems: 1
required:
- total
- items
properties:
total:
type: number
format: float
description:
type: string
example: 'Total item tax.'
items:
type: array
items:
type: object
required:
- percentage
- taxableAmount
- taxAmount
- category
properties:
percentage:
type: number
format: float
taxableAmount:
type: number
format: float
taxAmount:
type: number
format: float
category:
type: string
description: 'Category of the tax, such as "sales", "import", etc. This is free field attribute.'
description:
type: string
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
CreditNoteHeader:
type: object
required:
- buyer
- supplier
- creditNoteIdentifier
- creditNoteDate
properties:
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "buyer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "buyer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billFrom:
description: 'If this is kept empty, the "supplier" is used as the "billFrom" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
creditNoteIdentifier:
type: string
description: 'Credit note number/reference.'
example: 'CN-0001'
creditNoteDate:
$ref: '#/components/schemas/DateTime'
creditNoteDueDate:
$ref: '#/components/schemas/DateTime'
type:
type: string
description: 'Credit note message type'
enum:
- CORRECTION
- VALUE_CREDIT
invoiceIdentifier:
type: string
description: 'Invoice number/reference.'
example: 'IV-0001'
invoiceDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeIdentifier:
type: string
description: 'Shipping notice number/reference.'
example: 'SN-0001'
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
paymentTerms:
type: array
description: 'Used for defining payment targets and optional discounts.'
items:
$ref: '#/components/schemas/PaymentTerm'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within invoices'
deliveryInformation:
type: string
maxLength: 100000
description: 'Information about the delivery process.'
purchasingInformation:
type: string
maxLength: 100000
description: 'Additional information about purchasing.'
legalInformation:
type: string
maxLength: 100000
description: 'Legal notices and information.'
currency:
$ref: '#/components/schemas/Currency'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to the entire invoice. Does not affect invoice calculations.'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for the credit note.'
reason:
type: string
maxLength: 255
description: 'Reason for the credit note'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
CreditNoteItem:
type: object
required:
- lineNumber
- identifiers
- isDepositItem
- isInvoicedItem
- quantity
- unitPrice
- tax
properties:
lineNumber:
type: integer
example: 1
shippingNoticeIdentifier:
type: string
description: 'Shipping notice number/reference.'
example: 'SN-0001'
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeLineNumber:
type: integer
example: 1
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
orderLineNumber:
type: integer
example: 1
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
isInvoicedItem:
type: boolean
description: 'Determine if this item is the invoiced item. Only invoiced items can have a unitPrice != 0. If an item is not invoiced and no parent item is invoiced either, sub items must exist.'
description:
type: string
description: 'Item description.'
comments:
type: string
quantity:
type: number
format: float
example: 1.0
description: 'For subitems, this must be the total quantity of this item. For example, the parent item is a display of chocolate bars and has quantity 2. Each display contains 50 chocolate bars. Therefore, the quantity of the "Chocolate Bar" subitem is 100 (2x50).'
freeQuantity:
type: number
format: float
example: 1.0
default: null
description: 'The quantity of this item that is free of charge. For subitems, this must be the total free quantity of this item. For example, the parent item is a display of chocolate bars and has free quantity set to 2. Each display contains 50 chocolate bars. Therefore, the free quantity of the "Chocolate Bar" subitem is 100 (2x50).'
orderedQuantity:
type: number
format: float
example: 1.0
default: null
description: 'The quantity ordered by the customer.'
unitPrice:
type: number
format: float
default: null
example: 2.00
recommendedRetailPrice:
type: number
format: float
default: null
example: 2.50
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
minLength: 2
maxLength: 2
pattern: '^[A-Z]{2}$'
description: 'ISO 3166-1 standard two-letter country code.'
example: 'DE'
colorCode:
type: string
maxLength: 255
description: 'Color code of the item.'
colorName:
type: string
maxLength: 255
description: 'Color name of the item.'
size:
type: string
maxLength: 255
description: 'Size of the item.'
dimension:
type: string
maxLength: 255
description: 'Dimension of the item.'
hsCode:
type: string
maxLength: 255
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
certifications:
$ref: '#/components/schemas/Certifications'
promotionCode:
type: string
maxLength: 255
description: 'Promotion code applied to this item. Does not affect invoice calculations.'
reason:
type: string
maxLength: 255
description: 'Reason for the credit note'
tax:
$ref: '#/components/schemas/Tax'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
modificationGroups:
description: 'If a Modification Group is provided, the Invoice Summary is required.'
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
contractReference:
type: string
maxLength: 255
description: 'Contract reference for the credit note item.'
CreditNoteItemWithSubItems:
allOf:
- $ref: '#/components/schemas/CreditNoteItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this sub credit note item.'
items:
$ref: '#/components/schemas/CreditNoteItem'
CreditNoteItemWithSubSubItems:
allOf:
- $ref: '#/components/schemas/CreditNoteItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this credit note item. Supports two levels of nesting.'
items:
$ref: '#/components/schemas/CreditNoteItemWithSubItems'
DispatchInstruction:
type: object
title: 'Dispatch Instruction'
required:
- header
- items
properties:
header:
$ref: '#/components/schemas/DispatchInstructionHeader'
items:
type: array
minItems: 1
items:
allOf:
- $ref: '#/components/schemas/DispatchInstructionItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this dispatch instruction item. Supports two levels of nesting.'
items:
allOf:
- $ref: '#/components/schemas/DispatchInstructionItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this sub dispatch instruction item.'
items:
$ref: '#/components/schemas/DispatchInstructionItem'
DispatchInstructionHeader:
type: object
required:
- shipmentIdentifier
- shipFrom
properties:
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
shipmentIdentifier:
type: string
description: 'Shipment identifier number/reference.'
example: 'SI-0001'
noticeDate:
$ref: '#/components/schemas/DateTime'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
shipFrom:
$ref: '#/components/schemas/Party'
shipTo:
description: 'If this is kept empty, the "customer" is used as the "shipTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
billTo:
description: 'If this is kept empty, the "customer" is used as the "billTo" party.'
allOf:
- $ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
customer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
modeOfTransport:
$ref: '#/components/schemas/ModeOfTransport'
incoTerms:
$ref: '#/components/schemas/IncoTerms'
shippingMethod:
type: string
pickingNotes:
type: string
deliveryNotes:
type: string
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within dispatch instructions'
currency:
$ref: '#/components/schemas/Currency'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
DispatchInstructionItem:
type: object
required:
- shippingNoticeLineNumber
- shippedQuantity
- orderedQuantity
- identifiers
- batches
properties:
orderLineNumber:
type: integer
example: 1
shippingNoticeLineNumber:
type: integer
example: 1
shippedQuantity:
type: number
format: float
example: 1.00
orderedQuantity:
type: number
format: float
example: 1.00
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
unitPrice:
type: number
format: float
default: null
example: 2.00
recommendedRetailPrice:
type: number
format: float
default: null
example: 2.00
tax:
$ref: '#/components/schemas/Tax'
currency:
$ref: '#/components/schemas/Currency'
description:
type: string
description: 'Item description.'
comments:
type: string
maxLength: 100000
minimumRemainingShelfLifeInDays:
type: integer
description: 'Minimum remaining shelf life in days.'
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
maxLength: 255
description: 'Color code of the item.'
colorName:
type: string
maxLength: 255
description: 'Color name of the item.'
size:
type: string
maxLength: 255
description: 'Size of the item.'
dimension:
type: string
maxLength: 255
description: 'Dimension of the item.'
hsCode:
type: string
maxLength: 255
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
openQuantityAction:
type: string
enum:
- DISCARDED
- DELIVERED_LATER
DispatchInstructionResponse:
type: object
title: 'Dispatch Instruction Response'
required:
- header
- transportUnits
properties:
header:
$ref: '#/components/schemas/DispatchInstructionResponseHeader'
transportUnits:
type: array
minItems: 1
items:
allOf:
- $ref: '#/components/schemas/DispatchInstructionResponseTransportUnits'
- type: object
DispatchInstructionResponseTransportUnits:
type: object
required:
- items
properties:
unitIdentifier:
type: string
unitType:
type: string
enum:
- EURO_PALLET
- EURO_PALLET_HALF
- EURO_PALLET_QUARTER
- CARTON
containedTradeUnitCount:
type: integer
example: 1
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
despatchDate:
$ref: '#/components/schemas/DateTime'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/DispatchInstructionResponseItem'
DispatchInstructionResponseHeader:
type: object
required:
- shippingNoticeIdentifier
- supplier
properties:
orderIdentifier:
type: string
description: 'Order number assigned to the related purchase order by the buyer.'
orderDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeIdentifier:
type: string
description: 'Shipment identifier number/reference.'
example: 'SI-0001'
requestedDespatchDate:
$ref: '#/components/schemas/DateTime'
dispatchInstructionResponseDate:
$ref: '#/components/schemas/DateTime'
shippingNoticeDate:
$ref: '#/components/schemas/DateTime'
requestedDeliveryDate:
$ref: '#/components/schemas/DateTime'
expectedDeliveryDate:
$ref: '#/components/schemas/DateTime'
carrier:
type: string
trackingNumber:
type: string
trackingUrl:
type: string
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within dispatch instruction responses'
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
shipTo:
$ref: '#/components/schemas/Party'
billTo:
$ref: '#/components/schemas/Party'
shipFrom:
$ref: '#/components/schemas/Party'
finalRecipient:
description: 'Used in case the shipTo is not the final recipient. Mostly used in dropshipping or cross-docking scenarios.'
allOf:
- $ref: '#/components/schemas/Party'
modeOfTransport:
$ref: '#/components/schemas/ModeOfTransport'
incoTerms:
$ref: '#/components/schemas/IncoTerms'
shippingMethod:
type: string
status:
type: string
currency:
$ref: '#/components/schemas/Currency'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
DispatchInstructionResponseItem:
type: object
properties:
lineNumber:
type: integer
example: 1
instructionLineNumber:
type: integer
example: 1
orderLineNumber:
type: integer
example: 1
isDepositItem:
type: boolean
description: 'If true, the item is a deposit item such as bottle deposit (German: Pfandartikel).'
description:
type: string
description: 'Item description.'
comments:
type: string
maxLength: 100000
netWeight:
type: number
format: float
description: 'Net weight of the item in grams.'
grossWeight:
type: number
format: float
description: 'Gross weight of the item in grams.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
maxLength: 255
description: 'Color code of the item.'
colorName:
type: string
maxLength: 255
description: 'Color name of the item.'
size:
type: string
maxLength: 255
description: 'Size of the item.'
dimension:
type: string
maxLength: 255
description: 'Dimension of the item.'
hsCode:
type: string
maxLength: 255
description: 'Harmonized System Code of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
orderedQuantity:
type: number
format: float
example: 1.00
shippedQuantity:
type: number
format: float
example: 1.00
openQuantityAction:
type: string
enum:
- DISCARDED
- DELIVERED_LATER
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
unitPrice:
type: number
format: float
default: null
example: 2.00
recommendedRetailPrice:
type: number
format: float
default: null
example: 2.00
tax:
$ref: '#/components/schemas/Tax'
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
ReceivalNotice:
type: object
title: 'Receival Notice'
required:
- header
- transportUnits
properties:
header:
$ref: '#/components/schemas/ReceivalNoticeHeader'
transportUnits:
type: array
minItems: 1
items:
allOf:
- $ref: '#/components/schemas/ReceivalNoticeTransportUnits'
- type: object
ReceivalNoticeTransportUnits:
type: object
required:
- items
properties:
unitIdentifier:
type: string
unitType:
type: string
enum:
- EURO_PALLET
- EURO_PALLET_HALF
- EURO_PALLET_QUARTER
- CARTON
containedTradeUnitCount:
type: integer
example: 1
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ReceivalNoticeItem'
ReceivalNoticeHeader:
type: object
required:
- receivalAdviceNumber
- receivalDate
- supplier
- customer
properties:
receivalAdviceNumber:
type: string
receivalDate:
$ref: '#/components/schemas/DateTime'
deliveryNoteNumber:
type: string
customerOrderNumber:
type: string
shipTo:
$ref: '#/components/schemas/Party'
customer:
$ref: '#/components/schemas/Party'
deliveryNoteDate:
$ref: '#/components/schemas/DateTime'
orderDate:
$ref: '#/components/schemas/DateTime'
shipFrom:
$ref: '#/components/schemas/Party'
billTo:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within dispatch instruction responses'
carrierId:
type: string
carrierDomain:
type: string
trackingNumber:
type: string
trackingUrl:
type: string
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
ReceivalNoticeItem:
type: object
properties:
lineNumber:
type: integer
example: 1
receivedQuantity:
type: number
format: float
example: 1.00
shippedQuantity:
type: number
format: float
example: 1.00
identifiers:
type: array
minItems: 1
description: 'There must be at least one identifier with domain `GS1` or `BUYER`.'
items:
$ref: '#/components/schemas/ItemIdentifier'
orderLineNumber:
type: integer
example: 1
orderedQuantity:
type: number
format: float
example: 1.00
rejectedQuantity:
type: number
format: float
example: 1.00
rejectReason:
type: string
openQuantityAction:
type: string
enum:
- DISCARDED
- DELIVERED_LATER
unitPrice:
type: number
format: float
default: null
example: 2.00
currency:
$ref: '#/components/schemas/Currency'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
description:
type: string
description: 'Item description.'
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
RemittanceAdvice:
type: object
title: 'Remittance Advice'
required:
- header
- items
- summary
properties:
header:
$ref: '#/components/schemas/RemittanceAdviceHeader'
items:
type: array
minItems: 1
items:
allOf:
- $ref: '#/components/schemas/RemittanceAdviceItem'
- type: object
summary:
$ref: '#/components/schemas/RemittanceAdviceSummary'
RemittanceAdviceHeader:
type: object
required:
- adviceNumber
- adviceDate
properties:
adviceNumber:
type: string
adviceDate:
$ref: '#/components/schemas/DateTime'
paymentMethod:
type: string
paymentReference:
type: string
remittanceDate:
$ref: '#/components/schemas/DateTime'
currency:
$ref: '#/components/schemas/Currency'
payFrom:
$ref: '#/components/schemas/Party'
payTo:
$ref: '#/components/schemas/Party'
buyer:
$ref: '#/components/schemas/Party'
supplier:
$ref: '#/components/schemas/Party'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
RemittanceAdviceItem:
type: object
properties:
documentNumber:
type: string
documentDate:
$ref: '#/components/schemas/DateTime'
externalDocumentNumber:
type: string
documentType:
type: string
dueTotal:
type: number
format: float
remittedTotal:
type: number
format: float
tax:
$ref: '#/components/schemas/Tax'
correctionTotal:
type: number
format: float
buyer:
$ref: '#/components/schemas/Party'
shipTo:
$ref: '#/components/schemas/Party'
corrections:
type: array
minItems: 1
items:
allOf:
- $ref: '#/components/schemas/RemittanceAdviceItemCorrection'
- type: object
RemittanceAdviceItemCorrection:
type: object
required:
- amount
- total
properties:
basis:
type: number
format: float
reason:
type: string
amount:
type: number
format: float
total:
type: number
format: float
tax:
$ref: '#/components/schemas/Tax'
RemittanceAdviceSummary:
type: object
properties:
dueTotal:
type: number
format: float
remittedTotal:
type: number
format: float
correctionTotal:
type: number
format: float
SalesReport:
type: object
title: 'Sales Report'
required:
- header
- locations
properties:
header:
$ref: '#/components/schemas/SalesReportHeader'
locations:
type: array
minItems: 1
items:
$ref: '#/components/schemas/SalesReportLocation'
SalesReportHeader:
type: object
required:
- salesReportIdentifier
- salesReportDate
- salesPeriodStartDate
- salesPeriodEndDate
- supplier
- buyer
properties:
salesReportIdentifier:
type: string
salesReportDate:
$ref: '#/components/schemas/DateTime'
salesPeriodStartDate:
$ref: '#/components/schemas/DateTime'
salesPeriodEndDate:
$ref: '#/components/schemas/DateTime'
currency:
$ref: '#/components/schemas/Currency'
supplier:
$ref: '#/components/schemas/Party'
buyer:
$ref: '#/components/schemas/Party'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information'
SalesReportLocation:
type: object
required:
- location
- items
properties:
location:
$ref: '#/components/schemas/Party'
salesPeriodStartDate:
$ref: '#/components/schemas/DateTime'
salesPeriodEndDate:
$ref: '#/components/schemas/DateTime'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/SalesReportLocationItem'
SalesReportLocationItem:
type: object
required:
- lineNumber
- identifiers
- salesQuantity
properties:
lineNumber:
type: integer
identifiers:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ItemIdentifier'
description:
type: string
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
unitPrice:
type: number
format: float
netUnitPrice:
type: number
format: float
recommendedRetailPrice:
type: number
format: float
salesQuantity:
type: number
format: float
lineGrossAmount:
type: number
format: float
lineNetAmount:
type: number
format: float
lineTaxAmount:
type: number
format: float
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information'
netWeight:
type: integer
description: 'In grams'
grossWeight:
type: integer
description: 'In grams'
hsCode:
type: string
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
description: 'Color code of the item.'
colorName:
type: string
description: 'Color name of the item.'
size:
type: string
description: 'Size of the item.'
dimension:
type: string
description: 'Dimension of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
category:
type: string
description: 'Relevant category for the sales report item.'
subCategory:
type: string
description: 'Relevant subcategory for the sales report item.'
tax:
$ref: '#/components/schemas/Tax'
InventoryReport:
type: object
title: 'Inventory Report'
required:
- header
- items
properties:
header:
$ref: '#/components/schemas/InventoryReportHeader'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/InventoryReportItem'
InventoryReportHeader:
type: object
required:
- inventoryReportIdentifier
- inventoryReportDate
- warehouse
- goodsOwner
properties:
inventoryReportIdentifier:
type: string
inventoryReportDate:
$ref: '#/components/schemas/DateTime'
warehouse:
$ref: '#/components/schemas/Party'
goodsOwner:
$ref: '#/components/schemas/Party'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information warehouse can send within inventory reports'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
InventoryReportItem:
type: object
properties:
name:
type: string
lineNumber:
type: integer
availableQuantity:
type: number
format: float
blockedQuantity:
type: number
format: float
orderedQuantity:
type: number
format: float
identity:
type: object
properties:
senderPartnerId:
type: string
receiverPartnerId:
type: string
gtin:
type: string
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
unitPrice:
type: number
format: float
tax:
$ref: '#/components/schemas/Tax'
netWeight:
type: integer
description: 'In grams'
grossWeight:
type: integer
description: 'In grams'
hsCode:
type: string
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
description: 'Color code of the item.'
colorName:
type: string
description: 'Color name of the item.'
size:
type: string
description: 'Size of the item.'
dimension:
type: string
description: 'Dimension of the item.'
comment:
type: string
batches:
type: array
items:
allOf:
- $ref: '#/components/schemas/Batch'
- properties:
status:
type: string
statusReason:
type: string
ProductCatalogIdentity:
type: object
description: 'Product identity containing sender partner ID, receiver partner ID, and GTIN.'
properties:
senderPartnerId:
type: string
description: 'Sender partner product identifier (e.g., supplier SKU).'
example: 'SUPPLIER-SKU-12345'
receiverPartnerId:
type: string
description: 'Receiver partner product identifier (e.g., buyer SKU).'
example: 'BUYER-SKU-67890'
gtin:
type: string
description: 'Global Trade Item Number (GTIN/EAN).'
example: '4260123456789'
ProductCatalog:
type: object
title: 'Product Catalog'
required:
- header
- items
properties:
header:
$ref: '#/components/schemas/ProductCatalogHeader'
items:
type: array
minItems: 1
items:
$ref: '#/components/schemas/ProductCatalogItemWithSubSubItems'
ProductCatalogHeader:
type: object
required:
- catalogDate
- sender
- receiver
properties:
catalogNumber:
type: string
catalogDate:
$ref: '#/components/schemas/DateTime'
sender:
$ref: '#/components/schemas/Party'
receiver:
$ref: '#/components/schemas/Party'
importer:
description: 'GPSR Importer Contact Address in a PRICAT refers to the official address of the importer responsible under the General Product Safety Regulation (GPSR). This ensures traceability and compliance with safety requirements for products entering the market.
NAD+IM (Importer) with CTA/COM contact details
'
$ref: '#/components/schemas/Party'
manufacturer:
description: 'GPSR Manufacturer Contact Address in a PRICAT refers to the official address of the product’s manufacturer as required under the General Product Safety Regulation (GPSR). It enables traceability and confirms the manufacturer’s responsibility for product safety.'
$ref: '#/components/schemas/Party'
comments:
type: string
maxLength: 100000
description: 'Arbitrary human-readable information buyers can send within product catalogs'
version:
type: integer
description: 'The document version number. Subsequent updates should increment this number by 1.'
ProductCatalogItemWithSubSubItems:
allOf:
- $ref: '#/components/schemas/ProductCatalogItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this product catalog item. Supports two levels of nesting.'
items:
$ref: '#/components/schemas/ProductCatalogItemWithSubItems'
ProductCatalogItemWithSubItems:
allOf:
- $ref: '#/components/schemas/ProductCatalogItem'
- type: object
properties:
subItems:
type: array
description: 'Sub items of this product catalog item.'
items:
$ref: '#/components/schemas/ProductCatalogItem'
ProductCatalogItem:
type: object
required:
- lineNumber
- quantity
- identity
properties:
name:
type: string
lineNumber:
type: integer
quantity:
type: number
format: float
identity:
$ref: '#/components/schemas/ProductCatalogIdentity'
predecessorIdentity:
$ref: '#/components/schemas/ProductCatalogIdentity'
successorIdentity:
$ref: '#/components/schemas/ProductCatalogIdentity'
alternativeIdentifiers:
type: array
items:
$ref: '#/components/schemas/ProductCatalogIdentity'
action:
type: string
enum:
- NEW
- CHANGED
- DELETED
currency:
$ref: '#/components/schemas/Currency'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
isOrderable:
type: boolean
unitPrice:
type: number
format: float
unitPriceValidFromDate:
$ref: '#/components/schemas/DateTime'
unitPriceValidUntilDate:
$ref: '#/components/schemas/DateTime'
recommendedRetailPrice:
type: number
format: float
recommendedRetailPriceValidFromDate:
$ref: '#/components/schemas/DateTime'
recommendedRetailPriceValidUntilDate:
$ref: '#/components/schemas/DateTime'
minimumOrderQuantity:
type: number
format: float
taxPercentage:
type: number
format: float
depositAmount:
type: number
format: float
description: 'Deposit amount in the currency of the item.'
shortDescription:
type: string
description:
type: string
perUnitQuantity:
type: number
format: float
description: 'Quantity of consumer units (pieces, bottles) contained in this item.'
length:
type: integer
description: 'In millimeters'
width:
type: integer
description: 'In millimeters'
height:
type: integer
description: 'In millimeters'
netWeight:
type: integer
description: 'In grams'
grossWeight:
type: integer
description: 'In grams'
drainedWeight:
type: integer
description: 'In grams'
volume:
type: integer
description: 'In cubic centimeters'
category:
type: string
description: 'Used for product category, commodity group'
subCategory:
type: string
unNumber:
type: integer
description: '4-digit number assigned by the United Nations to classify hazardous substances and articles.'
hsCode:
type: string
htsCode:
type: string
deliverableFromDate:
$ref: '#/components/schemas/DateTime'
isDangerous:
type: boolean
hasExpiryDate:
type: boolean
hasBatchNumber:
type: boolean
hasSerialNumber:
type: boolean
minimumRemainingShelfLifeInDays:
type: integer
description: 'Minimum remaining shelf life in days.'
sourceIdentifier:
type: string
description: 'Identifies the source (warehouse, supplier, etc.) from which the item can be procured.'
originCountryCode:
type: string
description: 'ISO 3166-1 alpha-2 country code.'
example: 'DE'
colorCode:
type: string
description: 'Color code of the item.'
colorName:
type: string
description: 'Color name of the item.'
size:
type: string
description: 'Size of the item.'
dimension:
type: string
description: 'Dimension of the item.'
organicControlPointNumber:
type: string
maxLength: 255
description: 'Organic Control Point Number of the supplier - OCPN is a unique identifier that verifies that a producer of organic products is adhering to the standards for organic production.'
fscNumber:
type: string
description: 'An FSC number refers to an identification number issued by the Forest Stewardship Council (FSC), an international organization that certifies sustainable forestry practices.'
brand:
type: string
description: 'BRAND in a PRICAT (Price Catalogue) refers to the name of the product’s brand or manufacturer. It helps identify the product’s origin and is essential for classification, marketing, and buyer recognition.'
declarationOfConformity:
type: string
description: 'Declaration of Conformity in a PRICAT refers to a formal statement by the manufacturer confirming that the product meets all applicable EU safety, health, and environmental requirements. It is key for regulatory compliance and market approval.'
userManual:
type: string
description: 'User Manual / Instructions in a PRICAT refers to the documentation provided with a product that explains its proper use, safety guidelines, and maintenance. It ensures safe handling and compliance with regulatory requirements.'
energyLabel:
type: string
description: 'Energy Label in a PRICAT refers to the standardized label indicating a product’s energy efficiency class. It helps buyers assess energy consumption and supports compliance with EU energy labeling regulations.'
safetyDatasheet:
type: string
description: 'Safety Datasheet in a PRICAT refers to a document providing detailed information on the safe handling, storage, and disposal of a product. It is essential for compliance with chemical safety regulations and workplace protection.'
technicalDatasheet:
type: string
description: '(Technical) Datasheet in a PRICAT refers to a document outlining the key technical specifications, features, and performance data of a product. It supports accurate product evaluation, comparison, and integration into systems or catalogues.'
euDatasheet:
type: string
description: 'EU Datasheet in a PRICAT refers to a product information sheet tailored to meet EU regulatory and market requirements. It typically includes technical specifications, compliance details, and other essential data for distribution within the EU.'
safetyInstructions:
type: string
description: 'Safety Instructions / Warnings in a PRICAT refer to mandatory information on potential hazards and safe usage of a product. They help ensure user safety and compliance with legal and regulatory standards.'
materialComposition:
type: string
description: 'All material components'
images:
type: array
description: 'Images of the product catalog item.'
items:
$ref: '#/components/schemas/Attachment'
comment:
type: string
batches:
type: array
items:
$ref: '#/components/schemas/Batch'
packagingUnits:
type: array
items:
$ref: '#/components/schemas/ProductCatalogItemPackagingUnit'
modificationGroups:
type: array
items:
$ref: '#/components/schemas/ModificationGroup'
manufacturer:
$ref: '#/components/schemas/Party'
importer:
$ref: '#/components/schemas/Party'
ProductCatalogSubItem:
type: object
required:
- lineNumber
- quantity
- identity
properties:
lineNumber:
type: integer
quantity:
type: number
format: float
identity:
type: object
properties:
senderPartnerId:
type: string
receiverPartnerId:
type: string
gtin:
type: string
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
description:
type: string
ProductCatalogItemPackagingUnit:
type: object
required:
- quantity
properties:
quantity:
type: number
format: float
identity:
$ref: '#/components/schemas/ProductCatalogIdentity'
isOrderable:
type: boolean
length:
type: integer
description: 'In millimeters'
width:
type: integer
description: 'In millimeters'
height:
type: integer
description: 'In millimeters'
netWeight:
type: integer
description: 'In grams'
grossWeight:
type: integer
description: 'In grams'
volume:
type: integer
description: 'In cubic centimeters'
unitOfMeasure:
$ref: '#/components/schemas/UnitOfMeasure'
paths:
/v2/transactions:
get:
operationId: 'v2_list_received_transactions' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'List Incoming Transactions'
description: 'List unprocessed incoming transactions from your trade partners.'
tags: ['Incoming Transactions']
parameters:
- name: 'filter[type]'
in: query
required: false
allowReserved: true
schema:
$ref: '#/components/schemas/TransactionType'
- name: cursor
in: query
description: 'Page cursor'
required: false
schema:
type: string
- name: per_page
in: query
description: 'Number of transactions returned per page.'
required: false
schema:
type: integer
default: 100
minimum: 1
maximum: 100
responses:
'200':
description: 'Success'
content:
application/json:
schema:
type: object
required:
- items
- hasMore
- perPage
- count
- nextCursor
- nextPageUrl
properties:
items:
type: array
items:
$ref: '#/components/schemas/ReceivedTransaction'
hasMore:
type: boolean
description: 'Whether or not more transactions can be fetched on the next page.'
perPage:
type: integer
description: 'Amount of transactions returned per page.'
count:
type: integer
description: 'Amount of transactions on the current page.'
nextCursor:
type: string
nullable: true
description: 'Supplied to the `cursor` query parameter. See [Pagination] for more info.'
nextPageUrl:
type: string
format: url
nullable: true
description: 'Prebuilt URL to retrieve the next page of transactions.'
examples:
List of transactions:
value:
{
'hasMore': false,
'perPage': 100,
'count': 3,
'nextCursor': null,
'nextPageUrl': null,
'items':
[
{
'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
'type': 'ORDER',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'name': 'ACME Co. Ltd.',
'street': 'Elroy-Fritsch-Ring 15',
'city': 'Berlin',
'countryCode': 'DE',
'postalCode': '82643',
},
'contacts':
[
{
'firstName': 'John',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'currency': 'EUR',
'requestedDeliveryDate': '2021-10-05',
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20.0,
'unitOfMeasure': 'EA',
'description': 'First product description.',
'unitPrice': 0.15,
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Sparkling Water - Crate (6x0.75l).',
'unitPrice': 1.5,
},
{
'lineNumber': 3,
'identifiers':
[
{ 'identifier': '4300348765434', 'domain': 'GS1' },
{ 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
],
'isDepositItem': true,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Deposit 1x crate + 6x bottles.',
'unitPrice': 3.3,
},
],
},
},
{
'procurosTransactionId': '94fe13aa-8c9b-40e5-9937-42b852185858',
'type': 'SHIPPING_NOTICE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-24',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-20',
'despatchDate': '2021-11-05',
'requestedDeliveryDate': '2021-11-06',
'expectedDeliveryDate': '2021-11-06',
'carrier': 'Example Delivery Solution',
'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
'trackingUrl': 'https://api.procuros.com/example',
'comments': 'Something to comment',
},
'transportUnits':
[
{
'items':
[
{
'lineNumber': 1,
'orderLineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 20.0,
'shippedQuantity': 20.0,
'unitPrice': 200.0,
'description': 'First product description.',
},
{
'lineNumber': 2,
'orderLineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 19.0,
'shippedQuantity': 15.0,
'openQuantityAction': 'DISCARDED',
'unitPrice': 1.5,
'description': 'Second product description.',
},
],
},
],
},
},
{
'procurosTransactionId': '94fe1224-ae01-4587-8155-8e852cbbe75d',
'type': 'INVOICE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers':
[
{ 'identifier': '4522704465331', 'domain': 'GS1' },
{ 'identifier': 'DE123456789', 'domain': 'VAT_DE' },
],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers':
[
{ 'identifier': '4231930775745', 'domain': 'GS1' },
{ 'identifier': 'DE234567890', 'domain': 'VAT_DE' },
],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'invoiceIdentifier': 'IV9383-R45',
'invoiceDate': '2021-11-11',
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-04',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-10',
'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20,
'unitPrice': 200.0,
'description': 'First product description.',
'tax':
{ 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 15.0,
'unitPrice': 1.5,
'description': 'Second product description.',
'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
},
],
},
},
],
}
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
post:
operationId: 'v2_send_transaction' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Send Transaction'
description: 'Create and send a new transaction to one of your trade partners.'
tags: ['Outgoing Transactions']
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SentTransaction'
examples:
Order:
value:
{
'type': 'ORDER',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'currency': 'EUR',
'requestedDeliveryDate': '2021-10-05',
'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }]
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 10.0,
'unitOfMeasure': 'EA',
'description': 'First product description.',
'unitPrice': 1.23,
'tax': {
'percentage': 7,
'description': 'Umsatzsteuer'
},
'brand': 'kela',
'assortment': 'ME_GEN',
'consumerGroup': 'Unisex',
'category': '1008',
'subCategory': 'Beverages',
'modificationGroups': [
{
'modifications': [
{
'type': 'ALLOWANCE',
'reasonCode': 'DISCOUNT',
'description': 'Contract trade discount',
'percentage': 7
}
]
}
]
}
]
},
}
Minimal Order:
value:
{
'type': 'ORDER',
'content':
{
'header':
{
'buyer': { 'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }] },
'supplier': { 'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }] },
'orderIdentifier': 'PO9383-R46',
'orderDate': '2021-09-30',
'currency': 'EUR',
'requestedDeliveryDate': '2021-10-05',
},
'items':
[
{
'lineNumber': 1,
'identifiers': [{ 'identifier': '4300348765432', 'domain': 'GS1' }],
'isDepositItem': false,
'quantity': 20.0,
'unitOfMeasure': 'EA',
},
{
'lineNumber': 2,
'identifiers': [{ 'identifier': '4300348765433', 'domain': 'GS1' }],
'isDepositItem': false,
'quantity': 19.0,
'unitOfMeasure': 'EA',
},
],
},
}
Order Response | ACCEPT:
value:
{
'type': 'ORDER_RESPONSE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'type': 'ACCEPT',
'orderResponseIdentifier': 'RE-PO9383-R45',
'orderResponseDate': '2021-10-01',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'requestedDeliveryDate': '2021-10-05',
'confirmedDeliveryDate': '2021-10-05',
'currency': 'EUR',
},
},
}
Order Response | REJECT:
value:
{
'type': 'ORDER_RESPONSE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'type': 'REJECT',
'orderResponseIdentifier': 'RE-PO9383-R45',
'orderResponseDate': '2021-10-01',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'currency': 'EUR',
'comments': 'Something to comment',
},
},
}
Order Response | CHANGE:
value:
{
'type': 'ORDER_RESPONSE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'type': 'CHANGE',
'orderResponseIdentifier': 'RE-PO9383-R45',
'orderResponseDate': '2021-10-01',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'requestedDeliveryDate': '2021-10-05',
'confirmedDeliveryDate': '2021-10-05',
'currency': 'EUR',
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 20.0,
'confirmedQuantity': 15.0,
'unitOfMeasure': 'EA',
'description': 'First product description.',
'unitPrice': 0.15,
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 19.0,
'confirmedQuantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Second product description.',
'unitPrice': 1.5,
},
],
},
}
Shipping Notice:
value:
{
'type': 'SHIPPING_NOTICE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-24',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-20',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipFromOrderIdentifier': 'SF-11111',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'despatchDate': '2021-11-05',
'requestedDeliveryDate': '2021-11-06',
'expectedDeliveryDate': '2021-11-06',
'carrier': 'Example Delivery Solution',
'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
'trackingUrl': 'https://api.procuros.com/example',
},
'transportUnits':
[
{
'unitIdentifier': '34000000000001',
'unitType': 'EURO_PALLET',
'containedTradeUnitCount': 10,
'items':
[
{
'lineNumber': 1,
'orderLineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 20.0,
'shippedQuantity': 20.0,
'description': 'First product description.',
'certifications': { 'deBnn': 'NUMBER-123' },
'batches':
[
{
'batchIdentifier': BATCH_ID_1',
'expirationDate': '2022-12-24',
'quantity': 15.0,
},
{
'batchIdentifier': BATCH_ID_2',
'expirationDate': '2022-12-31',
'quantity': 5.0,
},
],
},
{
'lineNumber': 2,
'orderLineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 19.0,
'shippedQuantity': 15.0,
'openQuantityAction': 'DISCARDED',
'batches':
[
{
'batchIdentifier': BATCH_ID_2',
'expirationDate': '2022-05-01',
'quantity': 15.0,
},
],
'description': 'Sparkling Water - Crate (6x0.75l).',
},
],
},
],
},
}
Invoice:
value:
{
'type': 'INVOICE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'invoiceIdentifier': 'IV9383-R45',
'invoiceDate': '2021-11-11',
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-04',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-20',
'AdditionalOrderIdentifiers':
{
'supplierOrderIdentifier': 'SUP-12345',
'shipToOrderIdentifier': 'ST-67890',
'billToOrderIdentifier': 'BT-22222',
'billFromOrderIdentifier': 'BF-33333',
'finalRecipientOrderIdentifier': 'FR-44444'
},
'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20,
'unitPrice': 200.0,
'description': 'First product description.',
'certifications': { 'deBnn': 'NUMBER-123' },
'tax': { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 15.0,
'unitPrice': 1.5,
'description': 'Second product description.',
'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
},
],
},
}
CreditNote:
value:
{
'type': 'CREDIT_NOTE',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'creditNoteIdentifier': 'CN9383-R45',
'creditNoteDate': '2021-11-20',
'invoiceIdentifier': 'IV9383-R45',
'invoiceDate': '2021-11-11',
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-04',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-20',
'reason': 'customer refund',
'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20,
'unitPrice': 200.0,
'description': 'First product description.',
'certifications': { 'deBnn': 'NUMBER-123' },
'tax': { 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 15.0,
'unitPrice': 1.5,
'description': 'Second product description.',
'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
},
],
},
}
DispatchInstruction:
value:
{
'type': 'DISPATCH_INSTRUCTION',
'content':
{
'header':
{
'orderIdentifier': 'ORDER-123',
'orderDate': '2022-05-01T18:39:09-08:00',
'shipmentIdentifier': 'SHIPMENT-123',
'noticeDate': '2022-05-01T18:39:09-08:00',
'requestedDeliveryDate': '2022-05-01T18:39:09-08:00',
'shipFrom':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'shipTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'billTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'customer':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'supplier':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'comments': 'Some Comment',
},
'items':
[
{
'orderLineNumber': 1,
'shippingNoticeLineNumber': 1,
'shippedQuantity': 1,
'orderedQuantity': 1,
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'unitOfMeasure': 'EA',
'unitPrice': 1,
'currency': 'EUR',
'description': 'Some Description',
'batches': [{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
'openQuantityAction': 'DISCARDED',
},
],
},
}
DispatchInstructionResponse:
value:
{
'type': 'DISPATCH_INSTRUCTION_RESPONSE',
'content':
{
'header':
{
'orderId': null,
'orderDate': null,
'shipmentId': '48148',
'shippingNoticeIdentifier': 'SHIPMENT-123',
'shippingNoticeDate': '2022-10-12T12:53:51.000000Z',
'dispatchInstructionResponseDate': '2022-10-12T12:53:51.000000Z',
'responseDate': '2022-10-12T12:53:51.000000Z',
'shipmentDate': '2022-10-12T12:53:51.000000Z',
'requestedDeliveryDate': '2022-10-11T22:00:00.000000Z',
'expectedDeliveryDate': '2022-10-11T22:00:00.000000Z',
'shipFrom':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'shipTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'billTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'buyer':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'supplier':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'comments': null,
},
'transportUnits':
[
{
'unitIdentifier': '342601560208144493',
'unitType': null,
'containedTradeUnitCount': null,
'items':
[
{
'lineNumber': 4,
'shippingNoticeLineNumber': 1,
'shippedQuantity': 1,
'orderedQuantity': 1,
'isDepositItem': false,
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'unitOfMeasure': 'EA',
'unitPrice': null,
'currency': null,
'description': '',
'batches':
[{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
'parentLineNumber': null,
'openQuantityAction': null,
},
],
},
],
},
}
ReceivalNotice:
value:
{
'type': 'RECEIVAL_NOTICE',
'content':
{
'header':
{
'receivalAdviceNumber': 'receival-advice-number',
'receivalDate': '2022-10-12T12:53:51.000000Z',
'deliveryNoteNumber': 'delivery-note-number',
'customerOrderNumber': 'customer-order-number',
'deliveryNoteDate': '2022-10-12T12:53:51.000000Z',
'orderDate': '2022-10-12T12:53:51.000000Z',
'comments': 'comment',
'carrierId': 'carrierId',
'carrierDomain': 'carrierDomain',
'trackingNumber': 'trackingNumber',
'trackingUrl': 'trackingUrl',
'shipFrom':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'shipTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'billTo':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'customer':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
'supplier':
{
'name': 'Foo GmbH',
'identifiers': [{ 'domain': 'GS1', 'identifier': 'GS1' }],
'postalAddress':
{
'name': 'Foo',
'street': 'Musterstraße 123',
'addressExtra': '1st Floor',
'city': 'Hamburg',
'postalCode': '12345',
'state': 'HH',
'countryCode': 'DE',
},
'contacts':
[
{
'title': 'Dr.',
'salutation': 'Herr',
'firstName': 'Max',
'lastName': 'Muster',
'phone': '+49 12345',
'mobile': '+49 12345',
'email': '[email protected]',
'fax': '+49 12345',
},
],
},
},
'transportUnits':
[
{
'unitIdentifier': '342601560208144493',
'unitType': null,
'containedTradeUnitCount': null,
'items':
[
{
'lineNumber': 1,
'receivedQuantity': 10,
'shippedQuantity': 10,
'identifiers': [{ 'domain': 'GS1', 'identifier': 'abc' }],
'unitOfMeasure': 'EA',
'unitPrice': null,
'currency': null,
'description': '',
'batches':
[{ 'batchIdentifier': 'abc', 'expirationDate': '2022-12-31', 'quantity': 30 }],
'parentLineNumber': null,
'openQuantityAction': null,
},
],
},
],
},
}
RemittanceAdvice:
value:
{
'type': 'REMITTANCE_ADVICE',
'content':
{
'header':
{
'adviceNumber': 'AdviceNumber-643123',
'adviceDate': '2021-09-30',
'paymentMethod': 'cash',
'paymentReference': 'paymentReference-1234567890',
'remittanceDate': '2021-09-30',
'payFrom':
{
'name': 'Max Mustermann',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'financialInstitution':
{
'name': 'Deutsche Bank',
'institutionId': 'Deutsche Bank',
'institutionIdDomain': 'SWIFT',
'accountNumber': 'DE123456789',
'accountHolder': 'Foo Bar GmbH',
},
},
'payTo':
{
'name': 'John Doe',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
},
'buyer':
{
'name': 'buyer',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
},
'supplier':
{
'name': 'supplier',
'identifiers': [{ 'identifier': '3220010000022', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
},
'currency': 'EUR',
},
'items':
[
{
'documentNumber': 'originalInvoiceNumber-1234567890',
'documentDate': '2021-09-30',
'externalDocumentNumber': 'externalDocumentNumber-1234567890',
'documentType': 'INVOICE',
'dueTotal': 100,
'remittedTotal': 20,
'tax': { 'percentage': 19, 'amount': 1.9, 'description': 'MwSt. 19%' },
'correctionTotal': 80,
'buyer':
{
'name': 'buyer',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
},
'supplier':
{
'name': 'supplier',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
},
'corrections':
[
{
'basis': 20,
'reason': 'reason-1234567890',
'amount': 200,
'tax': { 'percentage': 19, 'amount': 1.9, 'description': 'MwSt. 19%' },
'total': 200,
},
],
},
],
'summary': { 'dueTotal': 100, 'remittedTotal': 20, 'correctionTotal': 80 },
},
}
ProductCatalog:
value:
{
'type': 'PRODUCT_CATALOG',
'content':
{
'header':
{
'catalogDate': '2023-04-19',
'catalogNumber': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
'sender': { 'identifiers': [{ 'domain': 'GS1', 'identifier': '3220010000001' }] },
'receiver': { 'identifiers': [{ 'domain': 'GS1', 'identifier': '4300000000015' }] },
},
'items':
[
{
'lineNumber': 1,
'quantity': 1,
'identity':
{
'senderPartnerId': '92a338d2-989e-36b4-a88e-273a170b68d9',
'receiverPartnerId': '880ae9f9-6d4d-3336-9e87-6f7cfccd6716',
'gtin': '4388091401620',
},
'action': 'NEW',
},
],
},
}
InventoryReport:
value:
{
'type': 'INVENTORY_REPORT',
'content':
{
'header':
{
'inventoryReportDate': '2023-04-19',
'inventoryReportIdentifier': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
'warehouse': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '3220010000001' } ] },
'goodsOwner': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000015' } ] },
},
'items':
[
{
'lineNumber': 1,
'availableQuantity': 1,
'identity':
{
'senderPartnerId': '92a338d2-989e-36b4-a88e-273a170b68d9',
'receiverPartnerId': '880ae9f9-6d4d-3336-9e87-6f7cfccd6716',
'gtin': '4388091401620',
},
},
],
},
}
SalesReport:
value:
{
'type': 'SALES_REPORT',
'content':
{
'header':
{
'salesReportDate': '2023-04-19',
'salesReportIdentifier': 'b3490ccc-de60-42f7-a9c0-3aead03c2e33',
'salesPeriodStartDate': '2023-04-19',
'salesPeriodEndDate': '2023-05-19',
'buyer': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '3220010000001' } ] },
'supplier': { 'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000015' } ] },
},
'locations':
[
{
'location': {
'identifiers': [ { 'domain': 'GS1', 'identifier': '4300000000016' } ]
},
'items': [
{
'salesReportLineIdentifier': 1,
'identifiers': [ { 'domain': 'SUPPLIER', 'identifier': '123456789' } ],
'salesQuantity': 100,
'category': '1008',
'subCategory': 'Beverages'
}
],
},
],
},
}
responses:
'201':
description: 'Created'
content:
application/json:
schema:
type: object
required:
- procurosTransactionId
properties:
procurosTransactionId:
$ref: '#/components/schemas/ProcurosTransactionId'
'202':
description: 'Accepted'
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
description: 'Status message'
example: 'Trade relationship not yet active.'
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/ClientErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionValidationErrorResponse'
examples:
Invalid Payload:
value:
{
'message': 'The given data was invalid.',
'errors': { 'type': ['Transaction type "PAYMENT_ADVICE" is not valid'] },
'errorUrl': 'https://portal.procuros.io/.../errors/{procurosErrorId}',
}
Unknown Party:
value:
{
'message': 'The given data was invalid.',
'errors': { 'buyer': ['Could not resolve party using provided identifiers'] },
'errorUrl': 'https://portal.procuros.io/.../errors/{procurosErrorId}',
}
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/transactions/{procurosTransactionId}:
parameters:
- name: procurosTransactionId
in: path
required: true
schema:
type: string
format: uuid
put:
operationId: 'v2_mark_transaction_processed' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Mark Transaction Processed'
description: 'Report processing of incoming transactions.'
tags: ['Incoming Transactions']
requestBody:
description: 'Expected parameters to update a transaction.'
required: true
content:
application/json:
schema:
type: object
required:
- success
properties:
success:
type: boolean
description: 'Whether or not your system was able to process the given transaction.'
errorReason:
type: string
description: 'Reason your system was not able to process the given transaction.'
errorType:
$ref: '#/components/schemas/ErrorType'
errorContext:
type: object
description: 'Additional context/meta data for the error.'
additionalProperties:
type: string
examples:
Successfully Processed:
value: { 'success': true }
Failed to Process:
value:
{ 'success': false, 'errorReason': "Product GTIN '0001647296281' not found", 'errorType': 'DATA' }
responses:
'200':
description: 'Success'
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- message
properties:
message:
type: string
description: 'Status message'
errorUrl:
type: string
description: 'URL linking to the error on the Procuros Portal.'
examples:
Successfully Processed:
value: { 'data': { 'message': 'OK.' } }
Failed to Process:
value:
{
'data':
{
'message': 'OK.',
'errorUrl': 'https://portal.procuros.io/transactions/{{procurosTransactionId}}/errors',
},
}
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/transactions/bulk/mark-processed:
post:
operationId: 'v2_bulk_mark_transactions_processed' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Bulk Mark Transactions Processed'
description: 'Mark a list of incoming transactions as processed.'
tags: ['Incoming Transactions']
requestBody:
description: 'Expected parameters to mark transactions as processed.'
required: true
content:
application/json:
schema:
type: object
required:
- items
properties:
items:
type: array
minItems: 1
maxItems: 1000
items:
type: object
required:
- procurosTransactionId
- success
properties:
procurosTransactionId:
$ref: '#/components/schemas/ProcurosTransactionId'
success:
type: boolean
description: 'Whether or not your system was able to process the given transaction.'
errorReason:
type: string
description: 'Reason your system was not able to process the given transaction.'
errorType:
$ref: '#/components/schemas/ErrorType'
errorContext:
type: object
description: 'Additional context/meta data for the error.'
additionalProperties:
type: string
examples:
Example:
value:
[
{ 'procurosTransactionId': '949b2ef2-3f40-465e-a7ee-ea3f9f189860', 'success': true },
{
'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
'success': false,
'errorReason': "Product GTIN '0001647296281' not found",
'errorType': 'DATA',
},
]
responses:
'200':
description: 'Success'
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: array
minItems: 1
items:
type: object
required:
- procurosTransactionId
- message
properties:
procurosTransactionId:
$ref: '#/components/schemas/ProcurosTransactionId'
message:
type: string
description: 'Status message'
errorUrl:
type: string
examples:
Processed:
value:
{
'data':
[
{ 'procurosTransactionId': '949b2ef2-3f40-465e-a7ee-ea3f9f189860', 'message': 'OK.' },
{
'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
'message': 'OK.',
'errorUrl': 'https://portal.procuros.io/transactions/{{procurosTransactionId}}/errors',
},
],
}
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/all-transactions:
get:
operationId: 'v2_list_all_transactions' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'List All Transactions'
description: 'List all existing transactions to and from your trade partners.'
tags: ['All Transactions']
parameters:
- name: 'filter[type]'
in: query
required: false
allowReserved: true
schema:
$ref: '#/components/schemas/TransactionType'
- name: 'filter[flow]'
in: query
required: false
allowReserved: true
schema:
$ref: '#/components/schemas/TransactionFlow'
- name: 'filter[status]'
in: query
required: false
allowReserved: true
schema:
$ref: '#/components/schemas/TransactionStatus'
- name: 'filter[created_between]'
in: query
required: false
allowReserved: true
schema:
type: string
description: 'Filter transactions created between two dates. Format: YYYY-MM-DD,YYYY-MM-DD'
example: '2024-01-01,2024-01-31'
- name: cursor
in: query
description: 'Page cursor'
required: false
schema:
type: string
- name: per_page
in: query
description: 'Number of transactions returned per page.'
required: false
schema:
type: integer
default: 100
minimum: 1
maximum: 100
responses:
'200':
description: 'Success'
content:
application/json:
schema:
type: object
required:
- items
- hasMore
- perPage
- count
- nextCursor
- nextPageUrl
properties:
items:
type: array
items:
$ref: '#/components/schemas/Transaction'
hasMore:
type: boolean
description: 'Whether or not more transactions can be fetched on the next page.'
perPage:
type: integer
description: 'Amount of transactions returned per page.'
count:
type: integer
description: 'Amount of transactions on the current page.'
nextCursor:
type: string
nullable: true
description: 'Supplied to the `cursor` query parameter. See [Pagination] for more info.'
nextPageUrl:
type: string
format: url
nullable: true
description: 'Prebuilt URL to retrieve the next page of transactions.'
examples:
List of transactions:
value:
{
'hasMore': false,
'perPage': 100,
'count': 3,
'nextCursor': null,
'nextPageUrl': null,
'items':
[
{
'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
'type': 'ORDER',
'flow': 'LIVE',
'status': 'SUCCESS',
'createdAt': '2024-01-01T00:00:00+00:00',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'name': 'ACME Co. Ltd.',
'street': 'Elroy-Fritsch-Ring 15',
'city': 'Berlin',
'countryCode': 'DE',
'postalCode': '82643',
},
'contacts':
[
{
'firstName': 'John',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'currency': 'EUR',
'requestedDeliveryDate': '2021-10-05',
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20.0,
'unitOfMeasure': 'EA',
'description': 'First product description.',
'unitPrice': 0.15,
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Sparkling Water - Crate (6x0.75l).',
'unitPrice': 1.5,
},
{
'lineNumber': 3,
'identifiers':
[
{ 'identifier': '4300348765434', 'domain': 'GS1' },
{ 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
],
'isDepositItem': true,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Deposit 1x crate + 6x bottles.',
'unitPrice': 3.3,
},
],
},
},
{
'procurosTransactionId': '94fe13aa-8c9b-40e5-9937-42b852185858',
'type': 'SHIPPING_NOTICE',
'flow': 'LIVE',
'status': 'SUCCESS',
'createdAt': '2024-01-01T00:00:00+00:00',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-24',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-20',
'despatchDate': '2021-11-05',
'requestedDeliveryDate': '2021-11-06',
'expectedDeliveryDate': '2021-11-06',
'carrier': 'Example Delivery Solution',
'trackingNumber': 'b52ea6a7-c2ea-3bfc-a63f-19140d3b3af5',
'trackingUrl': 'https://api.procuros.com/example',
'comments': 'Something to comment',
},
'transportUnits':
[
{
'items':
[
{
'lineNumber': 1,
'orderLineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 20.0,
'shippedQuantity': 20.0,
'unitPrice': 200.0,
'description': 'First product description.',
},
{
'lineNumber': 2,
'orderLineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'orderedQuantity': 19.0,
'shippedQuantity': 15.0,
'openQuantityAction': 'DISCARDED',
'unitPrice': 1.5,
'description': 'Second product description.',
},
],
},
],
},
},
{
'procurosTransactionId': '94fe1224-ae01-4587-8155-8e852cbbe75d',
'type': 'INVOICE',
'flow': 'LIVE',
'status': 'SUCCESS',
'createdAt': '2024-01-01T00:00:00+00:00',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers':
[
{ 'identifier': '4522704465331', 'domain': 'GS1' },
{ 'identifier': 'DE123456789', 'domain': 'VAT_DE' },
],
'postalAddress':
{
'city': 'Berlin',
'countryCode': 'DE',
'name': 'ACME Co. Ltd.',
'postalCode': '82643',
'street': 'Elroy-Fritsch-Ring 15',
},
'contacts':
[
{
'firstName': 'Jane',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers':
[
{ 'identifier': '4231930775745', 'domain': 'GS1' },
{ 'identifier': 'DE234567890', 'domain': 'VAT_DE' },
],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'invoiceIdentifier': 'IV9383-R45',
'invoiceDate': '2021-11-11',
'shippingNoticeIdentifier': 'SN9383-R45',
'shippingNoticeDate': '2021-11-04',
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-11-10',
'paymentTerms': [{ 'payInNumberOfDays': 28, 'percentage': 3.0 }],
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20,
'unitPrice': 200.0,
'description': 'First product description.',
'tax':
{ 'amount': 760.0, 'percentage': 19.0, 'description': 'Total tax amount.' },
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 15.0,
'unitPrice': 1.5,
'description': 'Second product description.',
'tax': { 'amount': 26.775, 'percentage': 19, 'description': 'Total tax amount.' },
},
],
},
},
],
}
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/all-transactions/{procurosTransactionId}:
get:
operationId: 'v2_show_transaction' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Show Transaction'
description: 'Show a single transaction.'
tags: ['All Transactions']
parameters:
- name: 'procurosTransactionId'
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: 'Success'
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Transaction'
examples:
Single Transaction:
value:
{
'data':
{
'procurosTransactionId': '949b2f25-fd9d-4c58-8899-b4dc277f8cf9',
'type': 'ORDER',
'flow': 'LIVE',
'status': 'SUCCESS',
'createdAt': '2024-01-01T00:00:00+00:00',
'content':
{
'header':
{
'buyer':
{
'name': 'ACME Co. Ltd.',
'identifiers': [{ 'identifier': '1100001016310', 'domain': 'GS1' }],
'postalAddress':
{
'name': 'ACME Co. Ltd.',
'street': 'Elroy-Fritsch-Ring 15',
'city': 'Berlin',
'countryCode': 'DE',
'postalCode': '82643',
},
'contacts':
[
{
'firstName': 'John',
'lastName': 'Doe',
'email': '[email protected]',
'fax': '(818) 463-6124',
'phone': '+1.352.856.0626',
},
],
},
'supplier':
{
'name': 'Testsupplier',
'identifiers': [{ 'identifier': '1100001016312', 'domain': 'GS1' }],
},
'shipTo': { 'identifiers': [{ 'identifier': '1100001016313', 'domain': 'GS1' }] },
'billTo': { 'identifiers': [{ 'identifier': '1100001016314', 'domain': 'GS1' }] },
'orderIdentifier': 'PO9383-R45',
'orderDate': '2021-09-30',
'currency': 'EUR',
'requestedDeliveryDate': '2021-10-05',
'comments': 'Something to comment',
},
'items':
[
{
'lineNumber': 1,
'identifiers':
[
{ 'identifier': '4300348765432', 'domain': 'GS1' },
{ 'identifier': 'PROD-77-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_8', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 20.0,
'unitOfMeasure': 'EA',
'description': 'First product description.',
'unitPrice': 0.15,
},
{
'lineNumber': 2,
'identifiers':
[
{ 'identifier': '4300348765433', 'domain': 'GS1' },
{ 'identifier': 'PROD-78-LS', 'domain': 'BUYER' },
{ 'identifier': 'sp_gr_9', 'domain': 'SUPPLIER' },
],
'isDepositItem': false,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Sparkling Water - Crate (6x0.75l).',
'unitPrice': 1.5,
},
{
'lineNumber': 3,
'identifiers':
[
{ 'identifier': '4300348765434', 'domain': 'GS1' },
{ 'identifier': 'PFAND-00B-LS', 'domain': 'SUPPLIER' },
],
'isDepositItem': true,
'quantity': 19.0,
'unitOfMeasure': 'EA',
'description': 'Deposit 1x crate + 6x bottles.',
'unitPrice': 3.3,
},
],
},
},
}
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/errors:
post:
operationId: 'v2_report_error' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Report Outgoing Error'
description: 'If you encounter an error while building an outgoing transaction payload, you can report it here. The error will enter the same exception handling process as an error reported while processing incoming transactions.'
tags: ['Outgoing Transactions']
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- errorReason
- errorType
properties:
errorReason:
type: string
description: 'The reason for the error.'
errorType:
$ref: '#/components/schemas/ErrorType'
errorContext:
type: object
description: 'Additional context/meta data for the error.'
additionalProperties:
type: string
transactionIdentifier:
type: string
description: 'Provide if error can be assigned to a specific outgoing transaction. Depending on the transactionType: Order number, Invoice number, etc.'
example: 'IV-0001'
transactionType:
description: 'Provide if error can be assigned to a specific outgoing transaction.'
allOf:
- $ref: '#/components/schemas/TransactionType'
responses:
'201':
description: 'Created'
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
description: 'Status message'
errorUrl:
type: string
description: 'URL to the Procuros portal where users can view the error and mark it as resolved.'
example: { 'message': 'OK.', 'errorUrl': 'https://portal.procuros.io/.../errors/{{procurosErrorId}}' }
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'422':
description: 'Validation Error'
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralValidationErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
/v2/ping:
get:
operationId: 'v2_ping' # DO NOT CHANGE! (API docs content on readme.com will otherwise be lost)
summary: 'Test connection to API'
description: 'Send an authorized request to the API to test the connectivity.'
tags: ['Misc']
responses:
'204':
description: 'Success'
'4XX':
description: 'Client Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'
'5XX':
description: 'Server Error'
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorResponse'