Procure to Pay Process and Spend Analytics Set (US)
Overview
This procure to pay set follows every purchase a modelled United States manufacturer made between 2015 and 2026, from the requisition that asked for it to the payment that settled it. Master data, requisitions and their approval ladder, competitive tenders with technical and commercial scoring and committee minutes, long term agreements, purchase orders with their discount, freight and surcharge conditions, delivery schedules, goods receipts with rejections and returns, service entry sheets, invoices with three way match blocks, payment proposals and outgoing payments all reference one another by key. Quantities, prices and dates hold across the chain: received never exceeds ordered beyond the line tolerance, invoiced never exceeds accepted beyond tolerance, every foreign currency amount converts at the rate of its posting period, and each document carries both a document date and a posting date so cycle time and service level can be measured stage by stage. Company growth, commodity and freight inflation, the 2020 demand collapse and the 2021 shortage are modelled by month rather than as an annual multiplier. Five anomaly classes are injected at controlled rates and labelled in their own table for supervised work on fraud detection, vendor scoring, late delivery prediction and accounts payable exception handling.
Document Flow
Every stage of the chain, counted from the data that shipped. The route percentages are how requisition lines actually reached the market, not a policy target.
Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| p2p_vendors | 1,180 |
| p2p_vendor_contacts | 2,859 |
| p2p_years | 12 |
| p2p_periods | 144 |
| p2p_company_codes | 4 |
| p2p_plants | 7 |
| p2p_purchasing_orgs | 5 |
| p2p_purchasing_groups | 10 |
| p2p_currencies | 8 |
| p2p_exchange_rates | 1,152 |
| p2p_payment_terms | 8 |
| p2p_incoterms | 6 |
| p2p_document_types | 13 |
| p2p_condition_types | 12 |
| p2p_approval_levels | 5 |
| p2p_material_groups | 25 |
| p2p_gl_accounts | 10 |
| p2p_cost_centers | 42 |
| p2p_users | 181 |
| p2p_vendor_bank_accounts | 1,180 |
| p2p_materials | 2,400 |
| p2p_material_plants | 4,640 |
| p2p_info_records | 6,730 |
| p2p_contracts | 504 |
| p2p_contract_items | 1,742 |
| p2p_contract_releases | 43,806 |
| p2p_purchase_requisitions | 229,391 |
| p2p_purchase_requisition_items | 607,010 |
| p2p_requisition_approvals | 662,350 |
| p2p_rfqs | 84,785 |
| p2p_rfq_items | 445,680 |
| p2p_rfq_invitations | 570,861 |
| p2p_quotations | 425,857 |
| p2p_quotation_items | 2,296,935 |
| p2p_quotation_scores | 425,857 |
| p2p_committee_reviews | 53,719 |
| p2p_awards | 514,701 |
| p2p_purchase_orders | 194,670 |
| p2p_purchase_order_items | 557,915 |
| p2p_purchase_order_conditions | 606,478 |
| p2p_purchase_order_approvals | 396,734 |
| p2p_schedule_lines | 613,034 |
| p2p_goods_receipts | 335,006 |
| p2p_goods_receipt_items | 530,297 |
| p2p_returns | 11,044 |
| p2p_service_entries | 63,865 |
| p2p_invoice_drafts | 97,100 |
| p2p_invoices | 97,100 |
| p2p_invoice_items | 592,904 |
| p2p_invoice_blocks | 5,463 |
| p2p_payment_proposals | 285 |
| p2p_payment_proposal_items | 95,724 |
| p2p_payments | 84,415 |
| p2p_payment_items | 95,724 |
| p2p_spend_monthly | 3,599 |
| p2p_vendor_scorecards | 11,770 |
| p2p_cycle_times | 210,312 |
| p2p_anomalies | 25,387 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| vendor_name | varchar(56) | Supplier name. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| country_name | varchar(24) | Country name in English. |
| order_currency | varchar(16) | Currency this vendor trades in. |
| main_phone | varchar(24) | Main phone for the p2p_vendors record. |
| main_email | varchar(56) | Main email for the p2p_vendors record. |
+20 more columns in p2p_vendors. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| contact_id | varchar(16) | Stable fictional identifier for contact; use it for declared joins. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| contact_function | varchar(16) | Contact function for the p2p_vendor_contacts record. |
| contact_function_name | varchar(24) | Human-readable contact function name. All people and organisations are fictional. |
| is_primary | boolean | True for the account payments default to. |
| first_name | varchar(16) | Human-readable first name. All people and organisations are fictional. |
| last_name | varchar(16) | Human-readable last name. All people and organisations are fictional. |
+10 more columns in p2p_vendor_contacts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| calendar_year | integer | The four digit year. |
| period_start | date | First calendar day of the period. |
| period_end | date | Last calendar day of the period. |
| volume_growth_pct | numeric(5,1) | Year on year change in purchased VOLUME, before any price effect. |
| commodity_price_index_2015_100 | numeric(6,1) | Raw material price index with 2015 as 100. Purchase prices follow it with a damped pass-through, because agreements reprice at review rather than on the spot market. |
| freight_cost_index_2015_100 | numeric(6,1) | Freight cost index with 2015 as 100, which drives the freight conditions on an order. |
+4 more columns in p2p_years. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| calendar_year | integer | The four digit year. |
| month_number | varchar(8) | Month within the year, 1 to 12. |
| month_name | varchar(16) | Month name in English. |
| period_start | date | First calendar day of the period. |
| period_end | date | Last calendar day of the period. |
+5 more columns in p2p_periods. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| company_code | varchar(8) | Legal entity that books the payable. |
| company_code_name | varchar(56) | Name of the legal entity. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| local_currency | varchar(16) | Currency the entity keeps its books in. |
| group_currency | varchar(16) | Currency the group consolidates in. |
| active_flag | boolean | False once the row is retired but kept for audit. |
| Column | Type | Description |
|---|---|---|
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
| plant_name | varchar(32) | Name of the plant. |
| company_code | varchar(8) | Legal entity that books the payable. |
| city | varchar(16) | City of the address. |
| state_province | varchar(16) | State or province. Populated for US and Canadian addresses; empty elsewhere. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| plant_type | varchar(16) | What the plant does: assembly, machining, fabrication, electronics or components. |
+2 more columns in p2p_plants. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| purchasing_org | varchar(16) | Purchasing organisation the vendor is released to trade with. |
| purchasing_org_name | varchar(40) | Name of the purchasing organisation. |
| company_code | varchar(8) | Legal entity that books the payable. |
| scope_type | varchar(16) | Which kind of spend the organisation or desk covers: direct, indirect, services, capex or mixed. |
| active_flag | boolean | False once the row is retired but kept for audit. |
| Column | Type | Description |
|---|---|---|
| purchasing_group | varchar(16) | Buyer desk responsible for the category. |
| purchasing_group_name | varchar(48) | Name of the buyer desk. |
| scope_type | varchar(16) | Which kind of spend the organisation or desk covers: direct, indirect, services, capex or mixed. |
| relative_cycle_time_index | numeric(5,2) | How long this desk takes relative to the average desk. Above 1 is slower. |
| evaluation_rigour_index | numeric(5,2) | How thoroughly this desk evaluates, 0 to 1. Higher desks tender more and score harder. |
| active_flag | boolean | False once the row is retired but kept for audit. |
| Column | Type | Description |
|---|---|---|
| currency | varchar(16) | ISO 4217 currency code the document is denominated in. |
| currency_name | varchar(32) | Currency name in English. |
| is_group_currency | boolean | True for the currency the group consolidates in. |
| annual_volatility_index | numeric(6,3) | How far this currency moves in a year, as a fraction. Zero for the group currency. |
| Column | Type | Description |
|---|---|---|
| exchange_rate_id | varchar(16) | Key of one currency and period combination. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| from_currency | varchar(16) | Currency being converted from. |
| to_currency | varchar(16) | Currency being converted to, always the group currency here. |
| rate_type | varchar(16) | Rate category. M is the monthly average rate used for postings. |
| units_per_usd | numeric(11,6) | How many units of the currency one US dollar buys in that period. |
| usd_per_unit | numeric(11,8) | How many US dollars one unit of the currency buys. The reciprocal, carried so a reader does not have to invert. |
+3 more columns in p2p_exchange_rates. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| payment_terms | varchar(16) | Payment terms key agreed with the vendor. |
| payment_terms_description | varchar(64) | The payment terms key in words, for example "2 percent discount if paid within 10 days, otherwise net 30". |
| net_days | integer | Days from the baseline date until the invoice is due. |
| discount_days | integer | Days within which an early settlement discount can still be taken. |
| discount_percentage | integer | Early settlement discount as a percentage of the invoice. |
| Column | Type | Description |
|---|---|---|
| incoterms | varchar(16) | Incoterms 2020 delivery term. |
| incoterms_description | varchar(40) | The Incoterms 2020 code in words, for example DAP is "Delivered At Place". |
| freight_borne_by_buyer_flag | boolean | True when the term leaves the freight cost with the buyer, which is when a freight condition appears on the order. |
| Column | Type | Description |
|---|---|---|
| document_type | varchar(16) | Type key of the document. |
| document_type_name | varchar(72) | What the document type means in words. |
| document_category | varchar(32) | Which document the type belongs to: requisition, order or outline agreement. |
| receipt_type | varchar(16) | Whether the order is settled by a goods receipt or by a service entry sheet. |
| creation_origin | varchar(16) | Whether documents of this type are raised by a person or by material requirements planning. |
| Column | Type | Description |
|---|---|---|
| condition_type | varchar(16) | Pricing condition key, for example RA01 for a percentage discount or FRA1 for freight. |
| condition_name | varchar(64) | What the condition does in words. |
| condition_class | varchar(16) | Whether the condition is a price, a discount, a freight charge, a surcharge or a free of charge marker. |
| sign_indicator | integer | Whether the condition adds to the value, subtracts from it, or is neutral. |
| applies_to | varchar(16) | Whether the condition attaches to the item or to the whole document. |
| Column | Type | Description |
|---|---|---|
| approval_level | varchar(8) | Step number on the release ladder, 1 nearest the requester. |
| approver_role | varchar(40) | Job the approver holds at that level. |
| value_limit_usd | integer | Largest value this level may release. Empty at the top level, which has no limit. |
| median_decision_hours | integer | Typical hours this level takes to decide. |
| Column | Type | Description |
|---|---|---|
| material_group | varchar(16) | Category the material belongs to. |
| material_group_name | varchar(56) | Name of the category. |
| unspsc_family | varchar(16) | UNSPSC family code describing the commodity area. |
| spend_type | varchar(16) | Whether the spend is direct, indirect, services or capex. It decides the account and the approval route. |
| base_unit_of_measure | varchar(16) | Unit the material is stocked and ordered in. |
| purchasing_group | varchar(16) | Buyer desk responsible for the category. |
| price_low_2015_usd | numeric(9,2) | Bottom of the 2015 price band for the category, in US dollars. |
+6 more columns in p2p_material_groups. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| gl_account | varchar(8) | General ledger account the spend posts to. |
| gl_account_name | varchar(48) | What the general ledger account is used for. |
| spend_type | varchar(16) | Whether the spend is direct, indirect, services or capex. It decides the account and the approval route. |
| account_class | varchar(24) | Whether the account sits in the profit and loss or on the balance sheet. |
| Column | Type | Description |
|---|---|---|
| cost_center_id | varchar(16) | Cost centre carrying the charge. |
| cost_center_name | varchar(48) | Name of the cost centre. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
| company_code | varchar(8) | Legal entity that books the payable. |
| function_area | varchar(24) | Functional area of the cost centre, for example Production or Maintenance. |
| responsible_user_id | varchar(8) | User accountable for the cost centre budget. |
| active_flag | boolean | False once the row is retired but kept for audit. |
+1 more columns in p2p_cost_centers. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| user_id | varchar(16) | Internal user number. Primary key of users and the foreign key wherever a person acted. |
| user_name | varchar(24) | Login name. |
| display_name | varchar(40) | Person name as it appears in the system. |
| role_type | varchar(24) | What the person does in this process: requisitioner, approver, buyer or committee member. |
| department | varchar(32) | Department the person belongs to. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
| company_code | varchar(8) | Legal entity that books the payable. |
+4 more columns in p2p_users. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| vendor_bank_id | varchar(16) | Key of one vendor bank account. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| bank_country_code | varchar(8) | Country of the bank account, which may differ from the vendor country. |
| bank_name | varchar(40) | Name of the bank. |
| account_holder | varchar(56) | Name the account is held in. |
| currency | varchar(16) | ISO 4217 currency code the document is denominated in. |
| payment_method | varchar(16) | How the vendor is paid. |
+4 more columns in p2p_vendor_bank_accounts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_description | varchar(80) | What the material is, in words. |
| material_group | varchar(16) | Category the material belongs to. |
| material_group_name | varchar(56) | Name of the category. |
| spend_type | varchar(16) | Whether the spend is direct, indirect, services or capex. It decides the account and the approval route. |
| base_unit_of_measure | varchar(16) | Unit the material is stocked and ordered in. |
| unspsc_family | varchar(16) | UNSPSC family code describing the commodity area. |
+11 more columns in p2p_materials. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| material_plant_id | varchar(24) | Key of one material and plant combination. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
| company_code | varchar(8) | Legal entity that books the payable. |
| reorder_point | integer | Stock level at which planning raises a replenishment requisition. |
| safety_stock | integer | Buffer held against demand and supply variability. |
| lot_size_key | varchar(16) | Lot sizing rule planning applies. |
+4 more columns in p2p_material_plants. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| info_record_id | varchar(16) | Key of one vendor and material price agreement. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| purchasing_org | varchar(16) | Purchasing organisation the vendor is released to trade with. |
| material_group | varchar(16) | Category the material belongs to. |
| net_price_2015 | numeric(14,4) | Agreed price in the VENDOR currency at 2015 levels. Later prices are this carried forward by the commodity index. |
| price_unit | integer | Number of units the price refers to. |
+9 more columns in p2p_info_records. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| contract_id | varchar(16) | Outline agreement number. |
| contract_type | varchar(16) | Whether the agreement commits a quantity or a value. |
| contract_type_name | varchar(64) | What the agreement type means in words. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| purchasing_org | varchar(16) | Purchasing organisation the vendor is released to trade with. |
| purchasing_group | varchar(16) | Buyer desk responsible for the category. |
| material_group | varchar(16) | Category the material belongs to. |
+15 more columns in p2p_contracts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| contract_item_id | varchar(24) | Key of one contract line. |
| contract_id | varchar(16) | Outline agreement number. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_description | varchar(80) | What the material is, in words. |
| material_group | varchar(16) | Category the material belongs to. |
| unit_of_measure | varchar(16) | Unit the quantity on this line is expressed in. |
+7 more columns in p2p_contract_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| release_id | varchar(16) | Key of one call off against an agreement. |
| contract_id | varchar(16) | Outline agreement number. |
| contract_item_id | varchar(24) | Key of one contract line. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| pr_item_id | varchar(24) | Key of one requisition line. |
| released_on | date | Date the call off or the release step happened. |
| released_quantity | integer | Quantity called off against the line so far. |
+5 more columns in p2p_contract_releases. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| requisition_type | varchar(16) | Requisition type key, which decides approval depth and sourcing route. |
| requisition_type_name | varchar(72) | What the requisition type means in words. |
| creation_source | varchar(40) | Whether a person raised the requisition or material requirements planning did. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| created_on | date | Date the document was created. |
+16 more columns in p2p_purchase_requisitions. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| pr_item_id | varchar(24) | Key of one requisition line. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_description | varchar(80) | What the material is, in words. |
| material_group | varchar(16) | Category the material belongs to. |
| spend_type | varchar(16) | Whether the spend is direct, indirect, services or capex. It decides the account and the approval route. |
+15 more columns in p2p_purchase_requisition_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| pr_approval_id | varchar(16) | Key of one approval step. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| approval_level | varchar(8) | Step number on the release ladder, 1 nearest the requester. |
| approver_role | varchar(40) | Job the approver holds at that level. |
| approver_user_id | varchar(8) | Person who decided this step. |
| submitted_on | date | Date the step was put in front of the approver. |
| decided_on | date | Date the approver decided. |
+5 more columns in p2p_requisition_approvals. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| pr_item_id | varchar(24) | Key of one requisition line. |
| material_group | varchar(16) | Category the material belongs to. |
| purchasing_group | varchar(16) | Buyer desk responsible for the category. |
| buyer_user_id | varchar(8) | Buyer who owns the order. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
+13 more columns in p2p_rfqs. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| rfq_item_id | varchar(24) | Key of one enquiry line. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| pr_item_id | varchar(24) | Key of one requisition line. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_description | varchar(80) | What the material is, in words. |
+6 more columns in p2p_rfq_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| rfq_invitation_id | varchar(24) | Key of one supplier invitation. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| invited_on | date | Date the supplier was invited. |
| response_status | varchar(16) | Whether the supplier quoted, declined, or never answered. |
| declined_reason | varchar(48) | Why the supplier declined. |
| responded_on | date | Date the supplier answered. |
+1 more columns in p2p_rfq_invitations. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| quotation_id | varchar(16) | Quotation number. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| submitted_on | date | Date the step was put in front of the approver. |
| valid_until | date | Date the quoted prices expire. |
| currency | varchar(16) | ISO 4217 currency code the document is denominated in. |
| payment_terms | varchar(16) | Payment terms key agreed with the vendor. |
+8 more columns in p2p_quotations. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| quotation_item_id | varchar(24) | Key of one priced quotation line. |
| quotation_id | varchar(16) | Quotation number. |
| rfq_item_id | varchar(24) | Key of one enquiry line. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| quoted_quantity | integer | Quantity the supplier quoted for. |
| unit_price | numeric(14,4) | Price per unit in the supplier currency. |
+7 more columns in p2p_quotation_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| quotation_score_id | varchar(16) | Key of one evaluation. |
| quotation_id | varchar(16) | Quotation number. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| technical_score | numeric(6,2) | Score for capability, reliability and quality history, out of 100. |
| commercial_score | numeric(7,2) | Score for price against the best bid on the table, out of 100. |
| weighted_total_score | numeric(6,2) | The two scores combined at the published weights. Highest wins. |
+7 more columns in p2p_quotation_scores. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| committee_review_id | varchar(16) | Key of one governance review. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| committee_body | varchar(32) | Which body reviewed it. A procurement committee sees mid sized awards, a tender committee the large ones. |
| meeting_date | date | Date the committee met. |
| members_present | integer | How many members attended. |
| chair_user_id | varchar(8) | Person who chaired. |
| recommended_vendor_id | varchar(16) | Supplier the evaluation put to the committee. |
+5 more columns in p2p_committee_reviews. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| award_id | varchar(16) | Key of one award decision. |
| sourcing_route | varchar(16) | How the line found its price: competitive tender, sole source, a release against an agreement, or consignment. |
| rfq_id | varchar(16) | Enquiry number. A buyer bundles a week of demand for a category into one. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| pr_item_id | varchar(24) | Key of one requisition line. |
| awarded_vendor_id | varchar(16) | Supplier that won. |
| awarded_price | numeric(14,4) | Price awarded, in the supplier currency. |
+8 more columns in p2p_awards. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| purchase_order_id | varchar(16) | Order number. |
| purchase_order_type | varchar(16) | Order type key, which decides whether receipt is goods or a service entry. |
| purchase_order_type_name | varchar(72) | What the order type means in words. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| vendor_name | varchar(56) | Supplier name. |
| company_code | varchar(8) | Legal entity that books the payable. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
+29 more columns in p2p_purchase_orders. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| po_item_id | varchar(24) | Key of one order line. |
| purchase_order_id | varchar(16) | Order number. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| pr_item_id | varchar(24) | Key of one requisition line. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_description | varchar(80) | What the material is, in words. |
+25 more columns in p2p_purchase_order_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| po_condition_id | varchar(24) | Key of one condition on an order. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| condition_type | varchar(16) | Pricing condition key, for example RA01 for a percentage discount or FRA1 for freight. |
| condition_name | varchar(64) | What the condition does in words. |
| condition_class | varchar(16) | Whether the condition is a price, a discount, a freight charge, a surcharge or a free of charge marker. |
+7 more columns in p2p_purchase_order_conditions. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| po_approval_id | varchar(24) | Key of one order release step. |
| purchase_order_id | varchar(16) | Order number. |
| release_level | integer | Step number on the order release ladder. |
| release_role | varchar(24) | Job of the person releasing. |
| approver_user_id | varchar(8) | Person who decided this step. |
| submitted_on | date | Date the step was put in front of the approver. |
| released_on | date | Date the call off or the release step happened. |
+3 more columns in p2p_purchase_order_approvals. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| schedule_line_id | varchar(24) | Key of one delivery schedule line. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| schedule_line_number | varchar(8) | Sequence of the delivery within the line. |
| scheduled_quantity | integer | Quantity due on this delivery. |
| scheduled_delivery_date | date | Date this delivery is due. |
+3 more columns in p2p_schedule_lines. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| goods_receipt_id | varchar(16) | Receipt number. |
| purchase_order_id | varchar(16) | Order number. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| plant_code | varchar(8) | Manufacturing site that raised the demand or received the goods. |
| company_code | varchar(8) | Legal entity that books the payable. |
| movement_type | integer | Inventory movement key. 101 is a receipt against an order, 122 a return to the vendor. |
| delivery_note_reference | varchar(16) | The supplier delivery note the receipt was booked against. |
+11 more columns in p2p_goods_receipts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| gr_item_id | varchar(24) | Key of one receipt line. |
| goods_receipt_id | varchar(16) | Receipt number. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| material_group | varchar(16) | Category the material belongs to. |
+15 more columns in p2p_goods_receipt_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| return_id | varchar(16) | Key of one return to the vendor. |
| goods_receipt_id | varchar(16) | Receipt number. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| material_id | varchar(16) | Material number. Primary key of materials and the foreign key wherever something is bought. |
| movement_type | integer | Inventory movement key. 101 is a receipt against an order, 122 a return to the vendor. |
+9 more columns in p2p_returns. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| service_entry_id | varchar(16) | Service entry sheet number, the service equivalent of a goods receipt. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| service_period_from | date | First day of the period the service covers. |
| service_period_to | date | Last day of that period. |
+14 more columns in p2p_service_entries. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| invoice_draft_id | varchar(16) | Key of an invoice as received, before it posts. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| vendor_invoice_number | varchar(24) | The number the supplier put on its own invoice. A repeat of one is what a duplicate check looks for. |
| received_on | date | Date the invoice reached accounts payable. |
| entry_channel | varchar(24) | How the invoice arrived: electronic data interchange, a portal, email or paper. |
| captured_by | varchar(40) | Whether a person keyed it or character recognition read it. |
| line_count | integer | Number of lines on the draft. |
+3 more columns in p2p_invoice_drafts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| invoice_id | varchar(16) | Posted invoice number. |
| invoice_draft_id | varchar(16) | Key of an invoice as received, before it posts. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| vendor_name | varchar(56) | Supplier name. |
| purchase_order_id | varchar(16) | Order number. |
| company_code | varchar(8) | Legal entity that books the payable. |
| vendor_invoice_number | varchar(24) | The number the supplier put on its own invoice. A repeat of one is what a duplicate check looks for. |
+26 more columns in p2p_invoices. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| invoice_item_id | varchar(24) | Key of one invoice line. |
| invoice_id | varchar(16) | Posted invoice number. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| purchase_order_id | varchar(16) | Order number. |
| po_item_id | varchar(24) | Key of one order line. |
| goods_receipt_id | varchar(16) | Receipt number. |
| service_entry_id | varchar(16) | Service entry sheet number, the service equivalent of a goods receipt. |
+13 more columns in p2p_invoice_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| invoice_block_id | varchar(32) | Key of one block. |
| invoice_id | varchar(16) | Posted invoice number. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| block_reason_code | varchar(8) | Why the invoice was blocked. |
| block_reason_name | varchar(88) | What the block reason means in words. |
| block_detail | varchar(88) | The specific discrepancy found. |
| raised_on | date | Date the block was raised. |
+5 more columns in p2p_invoice_blocks. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| payment_proposal_id | varchar(16) | Payment run number. |
| proposal_run_date | date | Date the run was executed. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| payment_strategy | varchar(16) | Rule the treasury team applied when selecting invoices for this run. |
| payment_strategy_name | varchar(80) | What the strategy means in words. |
| company_code | varchar(8) | Legal entity that books the payable. |
+8 more columns in p2p_payment_proposals. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| proposal_item_id | varchar(24) | Key of one invoice inside a run. |
| payment_proposal_id | varchar(16) | Payment run number. |
| invoice_id | varchar(16) | Posted invoice number. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| due_date | date | Date payment falls due, the baseline date plus the net days of the terms. |
| invoice_amount_usd | numeric(11,2) | Invoice value considered by the run. |
| discount_taken_usd | numeric(10,2) | Discount taken on this invoice. |
+3 more columns in p2p_payment_proposal_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| payment_id | varchar(16) | Outgoing payment number. One document clears several invoices for a supplier. |
| payment_proposal_id | varchar(16) | Payment run number. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| vendor_name | varchar(56) | Supplier name. |
| company_code | varchar(8) | Legal entity that books the payable. |
| payment_method | varchar(16) | How the vendor is paid. |
| payment_method_name | varchar(48) | What the payment method means in words. |
+16 more columns in p2p_payments. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| payment_item_id | varchar(32) | Key of one invoice cleared by a payment. |
| payment_id | varchar(16) | Outgoing payment number. One document clears several invoices for a supplier. |
| invoice_id | varchar(16) | Posted invoice number. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| cleared_amount_usd | numeric(11,2) | Amount applied against the invoice. |
| discount_taken_usd | numeric(10,2) | Discount taken on this invoice. |
| currency | varchar(16) | ISO 4217 currency code the document is denominated in. |
+6 more columns in p2p_payment_items. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| spend_month_id | varchar(24) | Key of one month, spend type, category and desk combination. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| calendar_year | integer | The four digit year. |
| month_number | varchar(8) | Month within the year, 1 to 12. |
| spend_type | varchar(16) | Whether the spend is direct, indirect, services or capex. It decides the account and the approval route. |
| material_group | varchar(16) | Category the material belongs to. |
+7 more columns in p2p_spend_monthly. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| vendor_scorecard_id | varchar(16) | Key of one vendor and year. |
| vendor_id | varchar(16) | Vendor number. Primary key of vendors and the foreign key wherever a supplier appears. |
| year_id | varchar(8) | Financial year key, FY followed by the calendar year. |
| calendar_year | integer | The four digit year. |
| purchase_order_count | integer | Distinct orders in the cell. |
| ordered_value_usd | numeric(12,2) | Value ordered in the cell, rolled up from the order lines themselves. |
| goods_receipt_count | integer | Receipts booked against the vendor that year. |
+7 more columns in p2p_vendor_scorecards. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| cycle_id | varchar(16) | Key of one requisition to payment chain. |
| purchase_requisition_id | varchar(16) | Requisition number. Where demand enters the process. |
| purchase_order_id | varchar(16) | Order number. |
| goods_receipt_id | varchar(16) | Receipt number. |
| invoice_id | varchar(16) | Posted invoice number. |
| payment_id | varchar(16) | Outgoing payment number. One document clears several invoices for a supplier. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
+18 more columns in p2p_cycle_times. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| anomaly_id | varchar(16) | Key of one labelled anomaly. |
| anomaly_class | varchar(24) | Which class it belongs to: late delivery, quality rejection, price variance, quantity variance or duplicate invoice. |
| document_type | varchar(24) | Type key of the document. |
| document_id | varchar(16) | The document the anomaly was found on. |
| item_number | varchar(8) | Line number within the document, in tens as an ERP numbers them. |
| period_id | varchar(16) | Monthly posting period key, FP followed by year and month. Every document posts into one. |
| detected_on | date | Date the anomaly is treated as detected. |
+5 more columns in p2p_anomalies. The full schema ships with the download.
Sample Data
A snapshot of real rows from the dataset (values are fully synthetic).
| purchase_order_id | purchase_order_type | vendor_name | sourcing_route | document_date | currency | net_order_value_usd | payment_terms | incoterms | item_count | order_status |
|---|---|---|---|---|---|---|---|---|---|---|
| PO04500001 | ZS | Rivet Premier Systems LLC | SOLE | 2015-01-07 | USD | 579.5 | NET45 | FCA | 1 | released |
| PO04500002 | NB | Cascade Components Ltd. | SOLE | 2015-01-08 | USD | 24465.31 | 1/15NET45 | DDP | 1 | released |
| PO04500003 | NB | Larkspur Standard Components Corp. | SOLE | 2015-01-13 | USD | 3160.08 | NET30 | DAP | 2 | released |
Version History
| v2.1.0 | 2026-08-16 | Goods receipts become material documents. A receipt is one delivery note covering every order line that arrived on it, so a ten line order can be received as two notes of five lines posted on different days, and a line can be received across two notes. Consolidation is decided when the vendor confirms rather than when the goods land, so lines that travel together are promised together and on time performance is measured against a promise the vendor actually made. Schedule lines are the consignment plan the receipts answer to, and the vendor scorecard measures on time against the confirmed date rather than the late delivery threshold. The vendor contact register from 2.0.0 is unchanged. |
Related Datasets
Automotive Manufacturing Sales (EU)
ManufacturingA European automotive sales dataset across the electric transition: 12 brands, 112 models, 20 markets, four channels and five customer segments, monthly from 2016 to mid 2026, in which eight legacy European brands peak, crash, and lose a fifth of the market to battery electric entrants while their net debt climbs.
EV Battery Passport Degradation and Circularity Analytics Set (EU)
ManufacturingEU EV battery passport data linking materials, manufacturing, vehicle use, degradation, safety, second life, recycling and circular recovery.
Heavy Equipment BOM Structure (WW)
ManufacturingA heavy-equipment service parts catalogue with real bill-of-materials mechanics: six machine families, 39 variants, trees four to six levels deep with materialised paths, over a million item rows across 124,337 parts, serial-number effectivity, supersession chains with one documented loop, and a derived where-used table that reconciles exactly.