SAP Ariba · Schema
SAP Ariba Purchase Order
JSON Schema for an SAP Ariba Purchase Order document representing a buyer's commitment to purchase goods or services from a supplier through the SAP Business Network. Based on the SAP Ariba Procurement API data model documented at https://help.sap.com/docs/ariba-apis and the Purchase Order web service schemas.
B2BContract ManagementProcurementSourcingSpend AnalysisSupplier ManagementSupply Chain
Properties
| Name | Type | Description |
|---|---|---|
| orderId | string | Unique purchase order identifier (UniqueName) including version number. This is the primary key for the purchase order in SAP Ariba. |
| erpPONumber | string | ERP system purchase order number (ERPPONumber). Defines the unique ID for every version of the purchase order in the backend ERP system. |
| versionNumber | integer | Supplemental version number of the original order. Incremented with each change request or modification. |
| orderDate | string | Date and time when the purchase order was created (ISO 8601 format). |
| status | string | Current status of the purchase order in the procurement lifecycle. |
| orderMethodCategory | string | Defines the ordering method category for the purchase order indicating how it was generated (e.g., manual entry, automatic from requisition, blanket release). |
| supplier | object | The supplier from whom goods or services are being purchased. |
| buyer | object | The buyer organization placing the purchase order. |
| currency | string | ISO 4217 currency code defining the type of currency used for the purchase order. |
| totalAmount | object | Total monetary value of the purchase order including all line items. |
| taxAmount | object | Total tax amount for the purchase order. |
| shippingAmount | object | Total shipping and handling charges. |
| paymentTerms | object | Payment terms governing when and how invoices against this order should be paid. References the unique payment terms code assigned to the supplier. |
| purchaseOrg | string | Purchasing organization identifier (PurchaseOrg/UniqueName). Defines the unique purchase organization responsible for this order. |
| purchaseGroup | string | Purchasing group identifier (PurchaseGroup/UniqueName). Defines the unique purchase group handling this order. |
| companyCode | string | Company code for the buying legal entity. |
| shipTo | object | Default shipping address for the purchase order. Can be overridden at the line item level. |
| billTo | object | Billing address for invoice submission. |
| lineItems | array | Line items contained in the purchase order. Each line item represents a specific good or service being procured. |
| deletedLineItems | array | Line items that have been deleted in a change order. Contains the line numbers of removed items. |
| requisitionId | string | Reference to the originating purchase requisition that generated this order. |
| contractId | string | Reference to a master agreement or contract against which this order is placed. |
| comments | string | Header-level comments or notes on the purchase order. |
| headerText | array | Structured header text elements for SAP integration. |
| customFields | object | Custom field extensions for organization-specific data requirements. |
| createdDate | string | Timestamp when the order was first created in the system. |
| lastModifiedDate | string | Timestamp of the most recent modification. |
| closedDate | string | Timestamp when the order was closed. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.ariba.com/procurement/purchase-order/v1",
"title": "SAP Ariba Purchase Order",
"description": "JSON Schema for an SAP Ariba Purchase Order document representing a buyer's commitment to purchase goods or services from a supplier through the SAP Business Network. Based on the SAP Ariba Procurement API data model documented at https://help.sap.com/docs/ariba-apis and the Purchase Order web service schemas.",
"type": "object",
"required": [
"orderId",
"orderDate",
"supplier",
"currency",
"lineItems"
],
"properties": {
"orderId": {
"type": "string",
"description": "Unique purchase order identifier (UniqueName) including version number. This is the primary key for the purchase order in SAP Ariba.",
"examples": [
"PO-2025-001234",
"PO4500012345-1"
]
},
"erpPONumber": {
"type": "string",
"description": "ERP system purchase order number (ERPPONumber). Defines the unique ID for every version of the purchase order in the backend ERP system.",
"examples": [
"4500012345"
]
},
"versionNumber": {
"type": "integer",
"description": "Supplemental version number of the original order. Incremented with each change request or modification.",
"minimum": 1,
"default": 1,
"examples": [
1,
2,
3
]
},
"orderDate": {
"type": "string",
"format": "date-time",
"description": "Date and time when the purchase order was created (ISO 8601 format)."
},
"status": {
"type": "string",
"description": "Current status of the purchase order in the procurement lifecycle.",
"enum": [
"Draft",
"Submitted",
"Ordered",
"Confirmed",
"PartiallyReceived",
"Received",
"PartiallyInvoiced",
"Invoiced",
"Cancelled",
"Closed",
"Rejected"
]
},
"orderMethodCategory": {
"type": "string",
"description": "Defines the ordering method category for the purchase order indicating how it was generated (e.g., manual entry, automatic from requisition, blanket release).",
"examples": [
"Manual",
"Automatic",
"BlanketRelease"
]
},
"supplier": {
"$ref": "#/$defs/SupplierReference",
"description": "The supplier from whom goods or services are being purchased."
},
"buyer": {
"$ref": "#/$defs/BuyerReference",
"description": "The buyer organization placing the purchase order."
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code defining the type of currency used for the purchase order.",
"pattern": "^[A-Z]{3}$",
"examples": [
"USD",
"EUR",
"GBP",
"JPY"
]
},
"totalAmount": {
"$ref": "#/$defs/Money",
"description": "Total monetary value of the purchase order including all line items."
},
"taxAmount": {
"$ref": "#/$defs/Money",
"description": "Total tax amount for the purchase order."
},
"shippingAmount": {
"$ref": "#/$defs/Money",
"description": "Total shipping and handling charges."
},
"paymentTerms": {
"$ref": "#/$defs/PaymentTerms",
"description": "Payment terms governing when and how invoices against this order should be paid. References the unique payment terms code assigned to the supplier."
},
"purchaseOrg": {
"type": "string",
"description": "Purchasing organization identifier (PurchaseOrg/UniqueName). Defines the unique purchase organization responsible for this order.",
"examples": [
"PO-1000",
"US01"
]
},
"purchaseGroup": {
"type": "string",
"description": "Purchasing group identifier (PurchaseGroup/UniqueName). Defines the unique purchase group handling this order.",
"examples": [
"PG-001",
"100"
]
},
"companyCode": {
"type": "string",
"description": "Company code for the buying legal entity.",
"examples": [
"1000",
"US01"
]
},
"shipTo": {
"$ref": "#/$defs/Address",
"description": "Default shipping address for the purchase order. Can be overridden at the line item level."
},
"billTo": {
"$ref": "#/$defs/Address",
"description": "Billing address for invoice submission."
},
"lineItems": {
"type": "array",
"description": "Line items contained in the purchase order. Each line item represents a specific good or service being procured.",
"items": {
"$ref": "#/$defs/PurchaseOrderLineItem"
},
"minItems": 1
},
"deletedLineItems": {
"type": "array",
"description": "Line items that have been deleted in a change order. Contains the line numbers of removed items.",
"items": {
"type": "object",
"properties": {
"numberOnPO": {
"type": "string",
"description": "The line number of the deleted line item (NumberOnPOString)."
}
},
"required": [
"numberOnPO"
]
}
},
"requisitionId": {
"type": "string",
"description": "Reference to the originating purchase requisition that generated this order."
},
"contractId": {
"type": "string",
"description": "Reference to a master agreement or contract against which this order is placed."
},
"comments": {
"type": "string",
"description": "Header-level comments or notes on the purchase order."
},
"headerText": {
"type": "array",
"description": "Structured header text elements for SAP integration.",
"items": {
"$ref": "#/$defs/TextElement"
}
},
"customFields": {
"$ref": "#/$defs/CustomFields",
"description": "Custom field extensions for organization-specific data requirements."
},
"createdDate": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the order was first created in the system."
},
"lastModifiedDate": {
"type": "string",
"format": "date-time",
"description": "Timestamp of the most recent modification."
},
"closedDate": {
"type": "string",
"format": "date-time",
"description": "Timestamp when the order was closed."
}
},
"additionalProperties": false,
"$defs": {
"Money": {
"type": "object",
"description": "Monetary amount with currency code following ISO 4217. Represents price and amount values throughout the purchase order.",
"required": [
"amount",
"currencyCode"
],
"properties": {
"amount": {
"type": "number",
"description": "The monetary value.",
"examples": [
1250.0,
99.99,
0.0
]
},
"currencyCode": {
"type": "string",
"description": "ISO 4217 three-letter currency code.",
"pattern": "^[A-Z]{3}$",
"examples": [
"USD",
"EUR"
]
}
},
"additionalProperties": false
},
"Address": {
"type": "object",
"description": "Postal address structure used for ShipTo, BillTo, and RemitTo addresses. Fields align with the SAP Ariba PostalAddress structure.",
"properties": {
"name": {
"type": "string",
"description": "Addressee name or attention line."
},
"lines": {
"type": "string",
"description": "Street address lines containing the valid shipping or billing address."
},
"city": {
"type": "string",
"description": "City name where goods need to be shipped or invoices directed."
},
"state": {
"type": "string",
"description": "State or province."
},
"postalCode": {
"type": "string",
"description": "Postal or ZIP code of the area."
},
"country": {
"type": "string",
"description": "Country code (ISO 3166-1 alpha-2).",
"pattern": "^[A-Z]{2}$",
"examples": [
"US",
"DE",
"GB"
]
},
"phone": {
"type": "string",
"description": "Phone number."
},
"email": {
"type": "string",
"format": "email",
"description": "Email address."
}
},
"additionalProperties": false
},
"UnitOfMeasure": {
"type": "object",
"description": "Unit of measure specification. Uses UN/ECE Recommendation 20 standard codes or SAP Ariba internal codes.",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "Unit of measure code (UN/ECE Rec 20 or SAP internal).",
"examples": [
"EA",
"KG",
"PC",
"HR",
"M",
"L"
]
},
"description": {
"type": "string",
"description": "Human-readable description of the unit.",
"examples": [
"Each",
"Kilogram",
"Piece",
"Hour"
]
}
},
"additionalProperties": false
},
"CommodityCode": {
"type": "object",
"description": "UNSPSC commodity classification code used to classify goods and services on line items.",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "UNSPSC commodity code.",
"examples": [
"43211500",
"72101500"
]
},
"description": {
"type": "string",
"description": "Commodity description.",
"examples": [
"Computers",
"Building maintenance and repair services"
]
},
"domain": {
"type": "string",
"description": "Classification domain identifier.",
"default": "UNSPSC"
}
},
"additionalProperties": false
},
"AccountingInfo": {
"type": "object",
"description": "Accounting assignment (split accounting) information for distributing line item costs across multiple cost objects. Corresponds to the SplitAccountings element in SAP Ariba.",
"properties": {
"costCenter": {
"type": "string",
"description": "Cost center identifier for expenditure allocation (CostCenter)."
},
"generalLedger": {
"type": "string",
"description": "General ledger account number (GeneralLedger)."
},
"asset": {
"type": "string",
"description": "Fixed asset number (Asset)."
},
"internalOrder": {
"type": "string",
"description": "Internal order number (InternalOrder)."
},
"wbsElement": {
"type": "string",
"description": "Work Breakdown Structure element (WBSElement)."
},
"amount": {
"$ref": "#/$defs/Money",
"description": "Amount allocated to this accounting assignment."
},
"percentage": {
"type": "number",
"description": "Percentage of line item amount allocated to this accounting assignment.",
"minimum": 0,
"maximum": 100
},
"sapDistributionFlag": {
"type": "string",
"description": "SAP Distribution Flag (SAPDistributionFlag) indicator."
},
"accountCategory": {
"type": "string",
"description": "Account assignment category code for the line item expenditure (AccountCategory/UniqueName)."
},
"sapSerialNumber": {
"type": "string",
"description": "SAP serial number for the accounting split entry."
}
},
"additionalProperties": false
},
"TaxDetail": {
"type": "object",
"description": "Tax calculation details for a line item. References the tax code per evaluated receipt settlement agreements.",
"properties": {
"taxCode": {
"type": "string",
"description": "Tax code identifier (TaxCode/UniqueName)."
},
"taxCategory": {
"type": "string",
"description": "Tax category (e.g., VAT, GST, Sales Tax)."
},
"taxRate": {
"type": "number",
"description": "Tax rate as a percentage.",
"minimum": 0
},
"taxAmount": {
"$ref": "#/$defs/Money",
"description": "Calculated tax amount."
},
"taxableAmount": {
"$ref": "#/$defs/Money",
"description": "Amount on which tax is calculated."
},
"description": {
"type": "string",
"description": "Description of the tax."
}
},
"additionalProperties": false
},
"PaymentTerms": {
"type": "object",
"description": "Payment terms specifying when and how invoices against this purchase order should be paid. References PaymentTerms/UniqueName in SAP Ariba.",
"properties": {
"code": {
"type": "string",
"description": "Unique code of the supplier payment terms (PaymentTerms/UniqueName).",
"examples": [
"NET30",
"NET60",
"2/10NET30"
]
},
"description": {
"type": "string",
"description": "Human-readable payment terms description.",
"examples": [
"Net 30 days",
"2% discount if paid within 10 days, net 30 days"
]
},
"netDays": {
"type": "integer",
"description": "Number of days until payment is due.",
"minimum": 0
},
"discountPercent": {
"type": "number",
"description": "Early payment discount percentage.",
"minimum": 0,
"maximum": 100
},
"discountDays": {
"type": "integer",
"description": "Number of days within which the discount applies.",
"minimum": 0
}
},
"additionalProperties": false
},
"SupplierReference": {
"type": "object",
"description": "Reference to a supplier on the SAP Ariba Network. The supplierId corresponds to the Supplier/UniqueName field.",
"required": [
"supplierId"
],
"properties": {
"supplierId": {
"type": "string",
"description": "Supplier unique number (Supplier/UniqueName). AN-ID on the Ariba Network or internal supplier number.",
"examples": [
"AN01000000001",
"SUP-10001"
]
},
"name": {
"type": "string",
"description": "Supplier company name."
},
"erpSupplierId": {
"type": "string",
"description": "Supplier number in the ERP system."
}
},
"additionalProperties": false
},
"BuyerReference": {
"type": "object",
"description": "Reference to the buyer organization placing the purchase order.",
"properties": {
"buyerId": {
"type": "string",
"description": "Buyer AN-ID on the SAP Ariba Network."
},
"name": {
"type": "string",
"description": "Buyer organization name."
},
"erpBuyerId": {
"type": "string",
"description": "Buyer identifier in the ERP system."
}
},
"additionalProperties": false
},
"PurchaseOrderLineItem": {
"type": "object",
"description": "A line item within a purchase order representing a specific good or service being procured. Corresponds to the ERPOrder line detail elements in SAP Ariba.",
"required": [
"numberOnPO",
"description",
"quantity",
"unitPrice",
"unitOfMeasure"
],
"properties": {
"numberOnPO": {
"type": "string",
"description": "Line item number within the purchase order (NumberOnPOString). Unique within the order."
},
"description": {
"type": "string",
"description": "Description of the item or service being purchased (Description/Description)."
},
"quantity": {
"type": "number",
"description": "Quantity to purchase (Quantity).",
"minimum": 0
},
"unitPrice": {
"$ref": "#/$defs/Money",
"description": "Price per unit of measure (Description/Price/Amount). Defines the net amount of each line item."
},
"unitOfMeasure": {
"$ref": "#/$defs/UnitOfMeasure",
"description": "Unit of measure for the line item (Description/UnitOfMeasure/UniqueName)."
},
"netAmount": {
"$ref": "#/$defs/Money",
"description": "Net line item amount (quantity multiplied by unit price)."
},
"commodityCode": {
"$ref": "#/$defs/CommodityCode",
"description": "UNSPSC commodity code for the line item (CommodityCode/UniqueName)."
},
"buyerPartNumber": {
"type": "string",
"description": "Buyer-assigned part or material number (ItemMasterID/BuyerPartNumber)."
},
"supplierPartNumber": {
"type": "string",
"description": "Supplier-assigned part or catalog number (SupplierPartNumber)."
},
"manufacturerPartId": {
"type": "string",
"description": "Manufacturer part identifier (ManufacturerPartID)."
},
"manufacturerName": {
"type": "string",
"description": "Name of the manufacturer (ManufacturerName)."
},
"itemCategory": {
"type": "string",
"description": "Item category code distinguishing material, service, or other item types (ItemCategory/UniqueName)."
},
"accountCategory": {
"type": "string",
"description": "Account assignment category for the line item expenditure (AccountCategory/UniqueName)."
},
"needByDate": {
"type": "string",
"format": "date",
"description": "Requested delivery date for the line item (NeedByDateString) in ISO 8601 YYYY-MM-DD format."
},
"shipTo": {
"$ref": "#/$defs/Address",
"description": "Line-item-level shipping address overriding the header ShipTo."
},
"accountings": {
"type": "array",
"description": "Split accounting assignments for distributing costs across multiple cost objects (SplitAccountings).",
"items": {
"$ref": "#/$defs/AccountingInfo"
}
},
"receivingType": {
"type": "integer",
"description": "Receiving type value indicating how receipts should be processed for this line item (ReceivingType)."
},
"taxCode": {
"type": "string",
"description": "Tax code per evaluated receipt settlement agreements (TaxCode/UniqueName)."
},
"taxDetail": {
"$ref": "#/$defs/TaxDetail",
"description": "Detailed tax information for this line item."
},
"itemOnRequisition": {
"type": "string",
"description": "Line number of the corresponding item in the originating requisition (ItemOnReq)."
},
"serviceStartDate": {
"type": "string",
"format": "date",
"description": "Service period start date for service line items."
},
"serviceEndDate": {
"type": "string",
"format": "date",
"description": "Service period end date for service line items."
},
"lineText": {
"type": "array",
"description": "Structured text elements for the line item (SAPOrderInfo). Used for SAP-specific text types.",
"items": {
"$ref": "#/$defs/TextElement"
}
},
"scheduleLines": {
"type": "array",
"description": "Delivery schedule lines for the line item.",
"items": {
"$ref": "#/$defs/ScheduleLine"
}
},
"comments": {
"type": "string",
"description": "Additional comments or notes on the line item."
},
"customFields": {
"$ref": "#/$defs/CustomFields",
"description": "Custom field extensions for organization-specific line item data."
}
},
"additionalProperties": false
},
"TextElement": {
"type": "object",
"description": "Structured text element for SAP integration. Contains indexed text entries with type identifiers corresponding to SAPOrderInfo elements.",
"properties": {
"index": {
"type": "integer",
"description": "Text element index position."
},
"textId": {
"type": "string",
"description": "SAP text type identifier (TextID)."
},
"textObject": {
"type": "string",
"description": "SAP text object identifier (TextObject)."
},
"content": {
"type": "string",
"description": "Text content."
}
},
"additionalProperties": false
},
"ScheduleLine": {
"type": "object",
"description": "Delivery schedule line specifying when partial quantities should be delivered.",
"properties": {
"scheduleLineNumber": {
"type": "string",
"description": "Schedule line number."
},
"deliveryDate": {
"type": "string",
"format": "date",
"description": "Planned delivery date for this schedule line."
},
"quantity": {
"type": "number",
"description": "Quantity to be delivered on this schedule line.",
"minimum": 0
}
},
"additionalProperties": false
},
"CustomFields": {
"type": "object",
"description": "Custom field extensions supporting organization-specific data requirements. SAP Ariba supports custom fields of various types (boolean, date, integer, money, string) that are configured per tenant. Not all fields are available by default; certain fields need to be added in the Ariba system configuration.",
"properties": {
"customBoolean": {
"type": "array",
"description": "Custom boolean field values.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom field name."
},
"value": {
"type": "boolean",
"description": "Boolean field value."
}
}
}
},
"customDate": {
"type": "array",
"description": "Custom date field values.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom field name."
},
"value": {
"type": "string",
"format": "date-time",
"description": "Date field value."
}
}
}
},
"customInteger": {
"type": "array",
"description": "Custom integer field values.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom field name."
},
"value": {
"type": "integer",
"description": "Integer field value."
}
}
}
},
"customMoney": {
"type": "array",
"description": "Custom money field values.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom field name."
},
"value": {
"$ref": "#/$defs/Money"
}
}
}
},
"customString": {
"type": "array",
"description": "Custom string field values.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom field name."
},
"value": {
"type": "string",
"description": "String field value."
}
}
}
}
},
"additionalProperties": false
}
},
"examples": [
{
"orderId": "PO4500012345-1",
"erpPONumber": "4500012345",
"versionNumber": 1,
"orderDate": "2025-06-15T10:30:00Z",
"status": "Ordered",
"orderMethodCategory": "Automatic",
"supplier": {
"supplierId": "AN01000000001",
"name": "Acme Industrial Supplies GmbH",
"erpSupplierId": "SUP-10001"
},
"buyer": {
"buyerId": "AN02000000001",
"name": "Global Manufacturing Corp",
"erpBuyerId": "BUY-2000"
},
"currency": "EUR",
"totalAmount": {
"amount": 15750.0,
"currencyCode": "EUR"
},
"taxAmount": {
"amount": 2992.5,
"currencyCode": "EUR"
},
"paymentTerms": {
"code": "NET30",
"description": "Net 30 days",
"netDays": 30
},
"purchaseOrg": "PO-1000",
"purchaseGroup": "PG-001",
"companyCode": "1000",
"shipTo": {
"name": "Global Manufacturing Corp - Plant 1",
"lines": "123 Industrial Park Drive",
"city": "Stuttgart",
"state": "Baden-Wuerttemberg",
"postalCode": "70173",
"country": "DE"
},
"billTo": {
"name": "Global Manufacturing Corp - Finance",
"lines": "456 Corporate Center Blvd",
"city": "Stuttgart",
"state": "Baden-Wuerttemberg",
"postalCode": "70174",
"country": "DE"
},
"lineItems": [
{
"numberOnPO": "1",
"description": "Industrial Safety Gloves - Heat Resistant",
"quantity": 500,
"unitPrice": {
"amount": 12.5,
"currencyCode": "EUR"
},
"unitOfMeasure": {
"code": "PR",
"description": "Pair"
},
"netAmount": {
"amount": 6250.0,
"currencyCode": "EUR"
},
"commodityCode": {
"code": "46181504",
"description": "Safety gloves",
"domain": "UNSPSC"
},
"buyerPartNumber": "MAT-GLV-001",
"supplierPartNumber": "SG-HR-500",
"itemCategory": "Material",
"needByDate": "2025-07-15",
"shipTo": {
"name": "Global Manufacturing Corp - Plant 1",
"lines": "123 Industrial Park Drive",
"city": "Stuttgart",
"postalCode": "70173",
"country": "DE"
},
"accountings": [
{
"costCenter": "CC-4100",
"generalLedger": "400000",
"percentage": 100,
"accountCategory": "K"
}
],
"taxCode": "V1"
},
{
"numberOnPO": "2",
"description": "Precision Measurement Tool Calibration Service",
"quantity": 25,
"unitPrice": {
"amount": 380.0,
"currencyCode": "EUR"
},
"unitOfMeasure": {
"code": "EA",
"description": "Each"
},
"netAmount": {
"amount": 9500.0,
"currencyCode": "EUR"
},
"commodityCode": {
"code": "72101500",
"description": "Building maintenance and repair services",
"domain": "UNSPSC"
},
"itemCategory": "Service",
"serviceStartDate": "2025-07-01",
"serviceEndDate": "2025-09-30",
"accountings": [
{
"costCenter": "CC-4200",
"generalLedger": "410000",
"percentage": 60
},
{
"costCenter": "CC-4300",
"generalLedger": "410000",
"percentage": 40
}
],
"taxCode": "V1"
}
],
"requisitionId": "PR-2025-005678",
"comments": "Urgent order for Q3 production requirements",
"createdDate": "2025-06-15T10:30:00Z",
"lastModifiedDate": "2025-06-15T10:30:00Z"
}
]
}