Skip to content

Purchase Order

An electronic purchase order document is a digital document that initiates a transaction, defining prices, quantities and delivery dates in accordance with pre-negotiated contractual conditions, between a buyer and a seller. It is used by a buyer to request goods, items or services from a supplier.

KTDDE Requirements

https://www.digitalizetrade.org/ktdde/trade-documents/PO

The schema is based on the data elements defined here.

Data Model

PurchaseOrder<<vtd.VerifiableCredential>>issuer:PartyissuanceDate:DateTimecredentialSubject:OrderOrder<<vtd.CredentialSubject>>purchaseOrderNumber:TextcontractNumber:TextorderDate:DatedeliveryDate:Datebuyer:Buyerinvoicee:InvoiceeshipToParty:ShipToPartyseller:SellerplaceOfDelivery:PlaceOfDeliveryoriginCountry:OriginCountrypaymentTerms:PaymentTermspaymentMethod:PaymentMethodunitPrice:UnitPriceallowance:AllowanceorderAmount:OrderAmounttaxAmount:TaxAmountproductIdentifier:URIquantityOrdered:QuantityOrderedBuyer<<vtd.Party>>id:URIaddress:AddressInvoicee<<vtd.Party>>id:URIaddress:AddressShipToParty<<vtd.Party>>id:URIaddress:AddressSeller<<vtd.Party>>id:URIaddress:AddressPlaceOfDelivery<<vtd.Place>>unlocode:URIaddress:vtd.AddressOriginCountry<<vtd.Place>>unlocode:URIaddress:vtd.AddressPaymentTerms<<vtd.Terms>>terms:TextPaymentMethod<<vtd.Terms>>terms:TextUnitPrice<<vtd.PriceSpecification>>amount:Decimalcurrency:TextAllowance<<vtd.PriceSpecification>>amount:Decimalcurrency:TextOrderAmount<<vtd.PriceSpecification>>amount:Decimalcurrency:TextTaxAmount<<vtd.PriceSpecification>>amount:Decimalcurrency:TextQuantityOrdered<<vtd.Quantity>>amount:Decimalunit:Text

Example

{
  "issuer": {
    "id": "https://jargon.sh",
    "address": {
      "street": "The quick brown fox jumps over the lazy dog.",
      "city": "The quick brown fox jumps over the lazy dog.",
      "state": "The quick brown fox jumps over the lazy dog.",
      "zip": 12345
    }
  },
  "issuanceDate": "1970-01-01T00:00:00Z",
  "credentialSubject": {
    "purchaseOrderNumber": "The quick brown fox jumps over the lazy dog.",
    "contractNumber": "The quick brown fox jumps over the lazy dog.",
    "orderDate": "1970-01-01",
    "deliveryDate": "1970-01-01",
    "buyer": {
      "id": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "invoicee": {
      "id": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "shipToParty": {
      "id": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "seller": {
      "id": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "placeOfDelivery": {
      "unlocode": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "originCountry": {
      "unlocode": "https://jargon.sh",
      "address": {
        "street": "The quick brown fox jumps over the lazy dog.",
        "city": "The quick brown fox jumps over the lazy dog.",
        "state": "The quick brown fox jumps over the lazy dog.",
        "zip": 12345
      }
    },
    "paymentTerms": {
      "terms": "The quick brown fox jumps over the lazy dog."
    },
    "paymentMethod": {
      "terms": "The quick brown fox jumps over the lazy dog."
    },
    "unitPrice": {
      "amount": 3.141579,
      "currency": "The quick brown fox jumps over the lazy dog."
    },
    "allowance": {
      "amount": 3.141579,
      "currency": "The quick brown fox jumps over the lazy dog."
    },
    "orderAmount": {
      "amount": 3.141579,
      "currency": "The quick brown fox jumps over the lazy dog."
    },
    "taxAmount": {
      "amount": 3.141579,
      "currency": "The quick brown fox jumps over the lazy dog."
    },
    "productIdentifier": "https://jargon.sh",
    "quantityOrdered": {
      "amount": 3.141579,
      "unit": "The quick brown fox jumps over the lazy dog."
    }
  }
}

Schema

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "issuer": {
      "$ref": "#/$defs/Party",
      "description": ""
    },
    "issuanceDate": {
      "type": "string",
      "format": "date-time",
      "description": ""
    },
    "credentialSubject": {
      "$ref": "#/$defs/Order",
      "description": ""
    }
  },
  "description": "",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$defs": {
    "Party": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "description": "A unique number that identifies a customer"
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The shipping address for the customer where they would like their orders delivered"
        }
      },
      "description": ""
    },
    "Address": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "street": {
          "type": "string",
          "description": "The street component of the address"
        },
        "city": {
          "type": "string",
          "description": "The city compomnent of the address"
        },
        "state": {
          "type": "string",
          "description": "The state component of the address"
        },
        "zip": {
          "type": "number",
          "description": "Zip or postal code for the address"
        }
      },
      "description": ""
    },
    "Order": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "purchaseOrderNumber": {
          "type": "string",
          "description": ""
        },
        "contractNumber": {
          "type": "string",
          "description": ""
        },
        "orderDate": {
          "type": "string",
          "format": "date",
          "description": ""
        },
        "deliveryDate": {
          "type": "string",
          "format": "date",
          "description": ""
        },
        "buyer": {
          "$ref": "#/$defs/Buyer",
          "description": ""
        },
        "invoicee": {
          "$ref": "#/$defs/Invoicee",
          "description": ""
        },
        "shipToParty": {
          "$ref": "#/$defs/ShipToParty",
          "description": ""
        },
        "seller": {
          "$ref": "#/$defs/Seller",
          "description": ""
        },
        "placeOfDelivery": {
          "$ref": "#/$defs/PlaceOfDelivery",
          "description": ""
        },
        "originCountry": {
          "$ref": "#/$defs/OriginCountry",
          "description": ""
        },
        "paymentTerms": {
          "$ref": "#/$defs/PaymentTerms",
          "description": ""
        },
        "paymentMethod": {
          "$ref": "#/$defs/PaymentMethod",
          "description": ""
        },
        "unitPrice": {
          "$ref": "#/$defs/UnitPrice",
          "description": ""
        },
        "allowance": {
          "$ref": "#/$defs/Allowance",
          "description": ""
        },
        "orderAmount": {
          "$ref": "#/$defs/OrderAmount",
          "description": ""
        },
        "taxAmount": {
          "$ref": "#/$defs/TaxAmount",
          "description": ""
        },
        "productIdentifier": {
          "type": "string",
          "format": "uri",
          "description": "A unique number for the user"
        },
        "quantityOrdered": {
          "$ref": "#/$defs/QuantityOrdered",
          "description": ""
        }
      },
      "description": ""
    },
    "Buyer": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "description": "A unique number that identifies a customer"
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The shipping address for the customer where they would like their orders delivered"
        }
      },
      "description": ""
    },
    "Invoicee": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "description": "A unique number that identifies a customer"
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The shipping address for the customer where they would like their orders delivered"
        }
      },
      "description": ""
    },
    "ShipToParty": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "description": "A unique number that identifies a customer"
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The shipping address for the customer where they would like their orders delivered"
        }
      },
      "description": ""
    },
    "Seller": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "id": {
          "type": "string",
          "format": "uri",
          "description": "A unique number that identifies a customer"
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The shipping address for the customer where they would like their orders delivered"
        }
      },
      "description": ""
    },
    "PlaceOfDelivery": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "unlocode": {
          "type": "string",
          "format": "uri",
          "description": ""
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": ""
        }
      },
      "description": ""
    },
    "OriginCountry": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "unlocode": {
          "type": "string",
          "format": "uri",
          "description": ""
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": ""
        }
      },
      "description": ""
    },
    "PaymentTerms": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "terms": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "PaymentMethod": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "terms": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "UnitPrice": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amount": {
          "type": "number",
          "format": "float",
          "description": ""
        },
        "currency": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "Allowance": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amount": {
          "type": "number",
          "format": "float",
          "description": ""
        },
        "currency": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "OrderAmount": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amount": {
          "type": "number",
          "format": "float",
          "description": ""
        },
        "currency": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "TaxAmount": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amount": {
          "type": "number",
          "format": "float",
          "description": ""
        },
        "currency": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    },
    "QuantityOrdered": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "amount": {
          "type": "number",
          "format": "float",
          "description": ""
        },
        "unit": {
          "type": "string",
          "description": ""
        }
      },
      "description": ""
    }
  }
}