Xero · Schema

PurchaseOrder

AccountingBank FeedsFinanceFinancial-ServicesInvoicingPayrollSmall Business

Properties

Name Type Description
Contact object
LineItems array See LineItems
Date string Date purchase order was issued – YYYY-MM-DD. If the Date element is not specified then it will default to the current date based on the timezone setting of the organisation
DeliveryDate string Date the goods are to be delivered – YYYY-MM-DD
LineAmountTypes string
PurchaseOrderNumber string Unique alpha numeric code identifying purchase order (when missing will auto-generate from your Organisation Invoice Settings)
Reference string Additional reference number
BrandingThemeID string See BrandingThemes
CurrencyCode string
Status string See Purchase Order Status Codes
SentToContact boolean Boolean to set whether the purchase order should be marked as “sent”. This can be set only on purchase orders that have been approved or billed
DeliveryAddress string The address the goods are to be delivered to
AttentionTo string The person that the delivery is going to
Telephone string The phone number for the person accepting the delivery
DeliveryInstructions string A free text feild for instructions (500 characters max)
ExpectedArrivalDate string The date the goods are expected to arrive.
PurchaseOrderID string Xero generated unique identifier for purchase order
CurrencyRate number The currency rate for a multicurrency purchase order. If no rate is specified, the XE.com day rate is used.
SubTotal number Total of purchase order excluding taxes
TotalTax number Total tax on purchase order
Total number Total of Purchase Order tax inclusive (i.e. SubTotal + TotalTax)
TotalDiscount number Total of discounts applied on the purchase order line items
HasAttachments boolean boolean to indicate if a purchase order has an attachment
UpdatedDateUTC string Last modified date UTC format
StatusAttributeString string A string to indicate if a invoice status
ValidationErrors array Displays array of validation error messages from the API
Warnings array Displays array of warning messages from the API
Attachments array Displays array of attachments from the API
View JSON Schema on GitHub

JSON Schema

xero-purchaseorder-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/PurchaseOrder",
  "title": "PurchaseOrder",
  "externalDocs": {
    "url": "http://developer.xero.com/documentation/api/purchase-orders/"
  },
  "properties": {
    "Contact": {
      "$ref": "#/components/schemas/Contact"
    },
    "LineItems": {
      "description": "See LineItems",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/LineItem"
      }
    },
    "Date": {
      "description": "Date purchase order was issued \u2013 YYYY-MM-DD. If the Date element is not specified then it will default to the current date based on the timezone setting of the organisation",
      "type": "string",
      "x-is-msdate": true
    },
    "DeliveryDate": {
      "description": "Date the goods are to be delivered \u2013 YYYY-MM-DD",
      "type": "string",
      "x-is-msdate": true
    },
    "LineAmountTypes": {
      "$ref": "#/components/schemas/LineAmountTypes",
      "type": "string"
    },
    "PurchaseOrderNumber": {
      "description": "Unique alpha numeric code identifying purchase order (when missing will auto-generate from your Organisation Invoice Settings)",
      "type": "string"
    },
    "Reference": {
      "description": "Additional reference number",
      "type": "string"
    },
    "BrandingThemeID": {
      "description": "See BrandingThemes",
      "type": "string",
      "format": "uuid"
    },
    "CurrencyCode": {
      "$ref": "#/components/schemas/CurrencyCode",
      "type": "string"
    },
    "Status": {
      "description": "See Purchase Order Status Codes",
      "type": "string",
      "enum": [
        "DRAFT",
        "SUBMITTED",
        "AUTHORISED",
        "BILLED",
        "DELETED"
      ]
    },
    "SentToContact": {
      "description": "Boolean to set whether the purchase order should be marked as \u201csent\u201d. This can be set only on purchase orders that have been approved or billed",
      "type": "boolean"
    },
    "DeliveryAddress": {
      "description": "The address the goods are to be delivered to",
      "type": "string"
    },
    "AttentionTo": {
      "description": "The person that the delivery is going to",
      "type": "string"
    },
    "Telephone": {
      "description": "The phone number for the person accepting the delivery",
      "type": "string"
    },
    "DeliveryInstructions": {
      "description": "A free text feild for instructions (500 characters max)",
      "type": "string"
    },
    "ExpectedArrivalDate": {
      "description": "The date the goods are expected to arrive.",
      "type": "string",
      "x-is-msdate": true
    },
    "PurchaseOrderID": {
      "description": "Xero generated unique identifier for purchase order",
      "type": "string",
      "format": "uuid"
    },
    "CurrencyRate": {
      "description": "The currency rate for a multicurrency purchase order. If no rate is specified, the XE.com day rate is used.",
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "SubTotal": {
      "description": "Total of purchase order excluding taxes",
      "readOnly": true,
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "TotalTax": {
      "description": "Total tax on purchase order",
      "readOnly": true,
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "Total": {
      "description": "Total of Purchase Order tax inclusive (i.e. SubTotal + TotalTax)",
      "readOnly": true,
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "TotalDiscount": {
      "description": "Total of discounts applied on the purchase order line items",
      "readOnly": true,
      "type": "number",
      "format": "double",
      "x-is-money": true
    },
    "HasAttachments": {
      "description": "boolean to indicate if a purchase order has an attachment",
      "readOnly": true,
      "type": "boolean",
      "default": "false",
      "example": "false"
    },
    "UpdatedDateUTC": {
      "description": "Last modified date UTC format",
      "type": "string",
      "x-is-msdate-time": true,
      "example": "/Date(1573755038314)/",
      "readOnly": true
    },
    "StatusAttributeString": {
      "description": "A string to indicate if a invoice status",
      "type": "string"
    },
    "ValidationErrors": {
      "description": "Displays array of validation error messages from the API",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      }
    },
    "Warnings": {
      "description": "Displays array of warning messages from the API",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      }
    },
    "Attachments": {
      "description": "Displays array of attachments from the API",
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Attachment"
      }
    }
  },
  "type": "object"
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/xero-purchaseorder"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.