---
title: "Changes to Uploads a purchase order document"
method: POST
path: "/api/v1/purchase_orders/{id}/upload"
---

# Changes to Uploads a purchase order document

`POST /api/v1/purchase_orders/{id}/upload`

> Every recorded change to this operation, newest first.
> 110 revisions in range; 1 not diffed.

## Timeline

Changed in 17 of 110 revisions.

- **2026-09-08** `bcda1f823746`: 1 info
- **2026-08-21** `a8b7a375e4ed`: 1 info
- **2026-04-20** `69a36036d334`: 1 info
- **2025-11-22** `00ad5cc89fad`: 14 info
- **2025-09-26** `536b69720520`: 1 breaking, 3 warning
- **2025-05-24** `93bb427f804b`: 1 warning
- **2024-11-17** `99be70714dc9`: 2 breaking, 32 warning, 2 info
- **2024-10-06** `b4c604539739`: 1 breaking, 11 warning, 3 info
- **2024-06-06** `8e82a2bd77e0`: 2 breaking, 211 info
- **2024-06-05** `e61df65649e2`: 1 breaking, 2 warning
- **2024-06-05** `4ca478d85068`: 2 breaking, 208 warning
- **2024-03-07** `71171a40d629`: 6 breaking, 57 info
- **2024-02-18** `88bbc1f38ff7`: 6 breaking, 58 warning
- **2024-02-10** `4ad0fff44c6c`: 5 info
- **2024-01-24** `9dab078a46b5`: 1 info
- **2024-01-20** `70cd94370516`: 1 breaking
- **2023-11-23** `704e6113e7db`: 1 info

## Changes

- **2026-09-08** `bcda1f823746`: 1 info
  - added the optional property `quote_id` to the response with the `200` status
- **2026-08-21** `a8b7a375e4ed`: 1 info
  - added the optional property `line_items/items/tags` to the response with the `200` status
- **2026-04-20** `69a36036d334`: 1 info
  - the response optional property `id` became read-only for the status `200`
- **2025-11-22** `00ad5cc89fad`: 14 info
  - added the optional property `backup` to the response with the `200` status
  - added the optional property `client_id` to the response with the `200` status
  - added the optional property `currency_id` to the response with the `200` status
  - added the optional property `design_id` to the response with the `200` status
  - added the optional property `exchange_rate` to the response with the `200` status
  - added the optional property `invoice_id` to the response with the `200` status
  - added the optional property `location_id` to the response with the `200` status
  - added the optional property `po_number` to the response with the `200` status
  - added the optional property `project_id` to the response with the `200` status
  - added the optional property `recurring_id` to the response with the `200` status
  - added the optional property `reminder1_sent` to the response with the `200` status
  - added the optional property `reminder2_sent` to the response with the `200` status
  - added the optional property `reminder3_sent` to the response with the `200` status
  - added the optional property `reminder_last_sent` to the response with the `200` status
- **2025-09-26** `536b69720520`: 1 breaking, 3 warning
  - the `settings/show_all_tasks_client_portal` response's property type changed from `boolean` to `string` for status `200`
  - added the new `all` enum value to the `settings/show_all_tasks_client_portal` response property for the response status `200`
  - added the new `invoiced` enum value to the `settings/show_all_tasks_client_portal` response property for the response status `200`
  - added the new `uninvoiced` enum value to the `settings/show_all_tasks_client_portal` response property for the response status `200`
- **2025-05-24** `93bb427f804b`: 1 warning
  - removed the optional property `line_items/items/date` from the response with the `200` status
- **2024-11-17** `99be70714dc9`: 2 breaking, 32 warning, 2 info
  - the `settings/company_logo` response's property type changed from `object` to `string` for status `200`
  - the `settings/lock_invoices` response's property type changed from `enum` to `string` for status `200`
  - added the new `after_due_date` enum value to the `settings/schedule_reminder1` response property for the response status `200`
  - added the new `after_due_date` enum value to the `settings/schedule_reminder2` response property for the response status `200`
  - added the new `after_due_date` enum value to the `settings/schedule_reminder3` response property for the response status `200`
  - added the new `after_invoice_date` enum value to the `settings/schedule_reminder1` response property for the response status `200`
  - added the new `after_invoice_date` enum value to the `settings/schedule_reminder2` response property for the response status `200`
  - added the new `after_invoice_date` enum value to the `settings/schedule_reminder3` response property for the response status `200`
  - added the new `always` enum value to the `settings/auto_bill` response property for the response status `200`
  - added the new `api.eu.mailgun.net` enum value to the `settings/mailgun_endpoint` response property for the response status `200`
  - added the new `api.mailgun.net` enum value to the `settings/mailgun_endpoint` response property for the response status `200`
  - added the new `before_due_date` enum value to the `settings/schedule_reminder1` response property for the response status `200`
  - added the new `before_due_date` enum value to the `settings/schedule_reminder2` response property for the response status `200`
  - added the new `before_due_date` enum value to the `settings/schedule_reminder3` response property for the response status `200`
  - added the new `center` enum value to the `settings/email_alignment` response property for the response status `200`
  - added the new `center` enum value to the `settings/page_numbering_alignment` response property for the response status `200`
  - added the new `custom` enum value to the `settings/email_style` response property for the response status `200`
  - added the new `dark` enum value to the `settings/email_style` response property for the response status `200`
  - added the new `left` enum value to the `settings/email_alignment` response property for the response status `200`
  - added the new `left` enum value to the `settings/page_numbering_alignment` response property for the response status `200`
  - added the new `light` enum value to the `settings/email_style` response property for the response status `200`
  - added the new `off` enum value to the `settings/auto_bill` response property for the response status `200`
  - added the new `on_due_date` enum value to the `settings/auto_bill_date` response property for the response status `200`
  - added the new `on_send_date` enum value to the `settings/auto_bill_date` response property for the response status `200`
  - added the new `optin` enum value to the `settings/auto_bill` response property for the response status `200`
  - added the new `optout` enum value to the `settings/auto_bill` response property for the response status `200`
  - added the new `plain` enum value to the `settings/email_style` response property for the response status `200`
  - added the new `right` enum value to the `settings/email_alignment` response property for the response status `200`
  - added the new `right` enum value to the `settings/page_numbering_alignment` response property for the response status `200`
  - added the new `when_paid` enum value to the `settings/counter_number_applied` response property for the response status `200`
  - added the new `when_saved` enum value to the `settings/counter_number_applied` response property for the response status `200`
  - added the new `when_saved` enum value to the `settings/quote_number_applied` response property for the response status `200`
  - added the new `when_sent` enum value to the `settings/counter_number_applied` response property for the response status `200`
  - added the new `when_sent` enum value to the `settings/quote_number_applied` response property for the response status `200`
  - the `settings/primary_color` response's property pattern `^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$` was added for the status `200`
  - the `settings/secondary_color` response's property pattern `^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$` was added for the status `200`
- **2024-10-06** `b4c604539739`: 1 breaking, 11 warning, 3 info
  - the `settings/lock_invoices` response's property type changed from `boolean` to `enum` for status `200`
  - added the new `client_brevo` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `client_mailgun` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `client_postmark` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `default` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `end_of_month` enum value to the `settings/lock_invoices` response property for the response status `200`
  - added the new `gmail` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `mailgun` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `off` enum value to the `settings/lock_invoices` response property for the response status `200`
  - added the new `office365` enum value to the `settings/email_sending_method` response property for the response status `200`
  - added the new `when_paid` enum value to the `settings/lock_invoices` response property for the response status `200`
  - added the new `when_sent` enum value to the `settings/lock_invoices` response property for the response status `200`
  - added the optional property `settings/credit_footer` to the response with the `200` status
  - added the optional property `settings/credit_terms` to the response with the `200` status
  - added the optional property `settings/valid_until` to the response with the `200` status
- **2024-06-06** `8e82a2bd77e0`: 2 breaking, 211 info
  - the response's body type changed from no type to `object` for status `default`
  - the `settings` response's property type changed from no type to `object` for status `200`
  - added the optional property `code` to the response with the `default` status
  - added the optional property `message` to the response with the `default` status
  - added the optional property `settings/accept_client_input_quote_approval` to the response with the `200` status
  - added the optional property `settings/address1` to the response with the `200` status
  - added the optional property `settings/address2` to the response with the `200` status
  - added the optional property `settings/all_pages_footer` to the response with the `200` status
  - added the optional property `settings/all_pages_header` to the response with the `200` status
  - added the optional property `settings/allow_billable_task_items` to the response with the `200` status
  - added the optional property `settings/auto_archive_invoice` to the response with the `200` status
  - added the optional property `settings/auto_archive_invoice_cancelled` to the response with the `200` status
  - added the optional property `settings/auto_archive_quote` to the response with the `200` status
  - added the optional property `settings/auto_bill` to the response with the `200` status
  - added the optional property `settings/auto_bill_date` to the response with the `200` status
  - added the optional property `settings/auto_bill_standard_invoices` to the response with the `200` status
  - added the optional property `settings/auto_convert_quote` to the response with the `200` status
  - added the optional property `settings/auto_email_invoice` to the response with the `200` status
  - added the optional property `settings/bcc_email` to the response with the `200` status
  - added the optional property `settings/besr_id` to the response with the `200` status
  - added the optional property `settings/city` to the response with the `200` status
  - added the optional property `settings/classification` to the response with the `200` status
  - added the optional property `settings/client_can_register` to the response with the `200` status
  - added the optional property `settings/client_initiated_payments` to the response with the `200` status
  - added the optional property `settings/client_initiated_payments_minimum` to the response with the `200` status
  - added the optional property `settings/client_manual_payment_notification` to the response with the `200` status
  - added the optional property `settings/client_number_counter` to the response with the `200` status
  - added the optional property `settings/client_number_pattern` to the response with the `200` status
  - added the optional property `settings/client_online_payment_notification` to the response with the `200` status
  - added the optional property `settings/client_portal_allow_over_payment` to the response with the `200` status
  - added the optional property `settings/client_portal_allow_under_payment` to the response with the `200` status
  - added the optional property `settings/client_portal_privacy_policy` to the response with the `200` status
  - added the optional property `settings/client_portal_terms` to the response with the `200` status
  - added the optional property `settings/client_portal_under_payment_minimum` to the response with the `200` status
  - added the optional property `settings/company_gateway_ids` to the response with the `200` status
  - added the optional property `settings/company_logo` to the response with the `200` status
  - added the optional property `settings/company_logo_size` to the response with the `200` status
  - added the optional property `settings/convert_products` to the response with the `200` status
  - added the optional property `settings/counter_number_applied` to the response with the `200` status
  - added the optional property `settings/counter_padding` to the response with the `200` status
  - …173 more
- **2024-06-05** `e61df65649e2`: 1 breaking, 2 warning
  - the response's body type changed from `object` to no type for status `default`
  - removed the optional property `code` from the response with the `default` status
  - removed the optional property `message` from the response with the `default` status
- **2024-06-05** `4ca478d85068`: 2 breaking, 208 warning
  - the `settings` response's property type changed from `object` to no type for status `200`
  - removed the required property `settings/currency_id` from the response with the `200` status
  - removed the optional property `settings/accept_client_input_quote_approval` from the response with the `200` status
  - removed the optional property `settings/address1` from the response with the `200` status
  - removed the optional property `settings/address2` from the response with the `200` status
  - removed the optional property `settings/all_pages_footer` from the response with the `200` status
  - removed the optional property `settings/all_pages_header` from the response with the `200` status
  - removed the optional property `settings/allow_billable_task_items` from the response with the `200` status
  - removed the optional property `settings/auto_archive_invoice` from the response with the `200` status
  - removed the optional property `settings/auto_archive_invoice_cancelled` from the response with the `200` status
  - removed the optional property `settings/auto_archive_quote` from the response with the `200` status
  - removed the optional property `settings/auto_bill` from the response with the `200` status
  - removed the optional property `settings/auto_bill_date` from the response with the `200` status
  - removed the optional property `settings/auto_bill_standard_invoices` from the response with the `200` status
  - removed the optional property `settings/auto_convert_quote` from the response with the `200` status
  - removed the optional property `settings/auto_email_invoice` from the response with the `200` status
  - removed the optional property `settings/bcc_email` from the response with the `200` status
  - removed the optional property `settings/besr_id` from the response with the `200` status
  - removed the optional property `settings/city` from the response with the `200` status
  - removed the optional property `settings/classification` from the response with the `200` status
  - removed the optional property `settings/client_can_register` from the response with the `200` status
  - removed the optional property `settings/client_initiated_payments` from the response with the `200` status
  - removed the optional property `settings/client_initiated_payments_minimum` from the response with the `200` status
  - removed the optional property `settings/client_manual_payment_notification` from the response with the `200` status
  - removed the optional property `settings/client_number_counter` from the response with the `200` status
  - removed the optional property `settings/client_number_pattern` from the response with the `200` status
  - removed the optional property `settings/client_online_payment_notification` from the response with the `200` status
  - removed the optional property `settings/client_portal_allow_over_payment` from the response with the `200` status
  - removed the optional property `settings/client_portal_allow_under_payment` from the response with the `200` status
  - removed the optional property `settings/client_portal_privacy_policy` from the response with the `200` status
  - removed the optional property `settings/client_portal_terms` from the response with the `200` status
  - removed the optional property `settings/client_portal_under_payment_minimum` from the response with the `200` status
  - removed the optional property `settings/company_gateway_ids` from the response with the `200` status
  - removed the optional property `settings/company_logo` from the response with the `200` status
  - removed the optional property `settings/company_logo_size` from the response with the `200` status
  - removed the optional property `settings/convert_products` from the response with the `200` status
  - removed the optional property `settings/counter_number_applied` from the response with the `200` status
  - removed the optional property `settings/counter_padding` from the response with the `200` status
  - removed the optional property `settings/country_id` from the response with the `200` status
  - removed the optional property `settings/credit_number_counter` from the response with the `200` status
  - …170 more
- **2024-03-07** `71171a40d629`: 6 breaking, 57 info
  - the response's body type changed from no type to `object` for status `200`
  - the response's body type changed from no type to `object` for status `401`
  - the response's body type changed from no type to `object` for status `403`
  - the response's body type changed from no type to `object` for status `422`
  - the response's body type changed from no type to `object` for status `429`
  - the response's body type changed from no type to `object` for status `default`
  - added the optional property `amount` to the response with the `200` status
  - added the optional property `archived_at` to the response with the `200` status
  - added the optional property `assigned_user_id` to the response with the `200` status
  - added the optional property `balance` to the response with the `200` status
  - added the optional property `code` to the response with the `default` status
  - added the optional property `custom_surcharge1` to the response with the `200` status
  - added the optional property `custom_surcharge2` to the response with the `200` status
  - added the optional property `custom_surcharge3` to the response with the `200` status
  - added the optional property `custom_surcharge4` to the response with the `200` status
  - added the optional property `custom_surcharge_tax1` to the response with the `200` status
  - added the optional property `custom_surcharge_tax2` to the response with the `200` status
  - added the optional property `custom_surcharge_tax3` to the response with the `200` status
  - added the optional property `custom_surcharge_tax4` to the response with the `200` status
  - added the optional property `custom_value1` to the response with the `200` status
  - added the optional property `custom_value2` to the response with the `200` status
  - added the optional property `custom_value3` to the response with the `200` status
  - added the optional property `custom_value4` to the response with the `200` status
  - added the optional property `date` to the response with the `200` status
  - added the optional property `discount` to the response with the `200` status
  - added the optional property `due_date` to the response with the `200` status
  - added the optional property `errors` to the response with the `403` status
  - added the optional property `errors` to the response with the `422` status
  - added the optional property `errors` to the response with the `429` status
  - added the optional property `footer` to the response with the `200` status
  - added the optional property `id` to the response with the `200` status
  - added the optional property `is_amount_discount` to the response with the `200` status
  - added the optional property `is_deleted` to the response with the `200` status
  - added the optional property `last_sent_date` to the response with the `200` status
  - added the optional property `last_viewed` to the response with the `200` status
  - added the optional property `line_items` to the response with the `200` status
  - added the optional property `message` to the response with the `401` status
  - added the optional property `message` to the response with the `403` status
  - added the optional property `message` to the response with the `422` status
  - added the optional property `message` to the response with the `429` status
  - …23 more
- **2024-02-18** `88bbc1f38ff7`: 6 breaking, 58 warning
  - the response's body type changed from `object` to no type for status `200`
  - the response's body type changed from `object` to no type for status `401`
  - the response's body type changed from `object` to no type for status `403`
  - the response's body type changed from `object` to no type for status `422`
  - the response's body type changed from `object` to no type for status `429`
  - the response's body type changed from `object` to no type for status `default`
  - removed the optional property `amount` from the response with the `200` status
  - removed the optional property `archived_at` from the response with the `200` status
  - removed the optional property `assigned_user_id` from the response with the `200` status
  - removed the optional property `balance` from the response with the `200` status
  - removed the optional property `code` from the response with the `default` status
  - removed the optional property `company_id` from the response with the `200` status
  - removed the optional property `custom_surcharge1` from the response with the `200` status
  - removed the optional property `custom_surcharge2` from the response with the `200` status
  - removed the optional property `custom_surcharge3` from the response with the `200` status
  - removed the optional property `custom_surcharge4` from the response with the `200` status
  - removed the optional property `custom_surcharge_tax1` from the response with the `200` status
  - removed the optional property `custom_surcharge_tax2` from the response with the `200` status
  - removed the optional property `custom_surcharge_tax3` from the response with the `200` status
  - removed the optional property `custom_surcharge_tax4` from the response with the `200` status
  - removed the optional property `custom_value1` from the response with the `200` status
  - removed the optional property `custom_value2` from the response with the `200` status
  - removed the optional property `custom_value3` from the response with the `200` status
  - removed the optional property `custom_value4` from the response with the `200` status
  - removed the optional property `date` from the response with the `200` status
  - removed the optional property `discount` from the response with the `200` status
  - removed the optional property `due_date` from the response with the `200` status
  - removed the optional property `errors` from the response with the `403` status
  - removed the optional property `errors` from the response with the `422` status
  - removed the optional property `errors` from the response with the `429` status
  - removed the optional property `footer` from the response with the `200` status
  - removed the optional property `id` from the response with the `200` status
  - removed the optional property `is_amount_discount` from the response with the `200` status
  - removed the optional property `is_deleted` from the response with the `200` status
  - removed the optional property `last_sent_date` from the response with the `200` status
  - removed the optional property `last_viewed` from the response with the `200` status
  - removed the optional property `line_items` from the response with the `200` status
  - removed the optional property `message` from the response with the `401` status
  - removed the optional property `message` from the response with the `403` status
  - removed the optional property `message` from the response with the `422` status
  - …24 more
- **2024-02-10** `4ad0fff44c6c`: 5 info
  - added the media type `application/json` for the response with the status `401`
  - added the media type `application/json` for the response with the status `403`
  - added the media type `application/json` for the response with the status `422`
  - added the media type `application/json` for the response with the status `429`
  - added the media type `application/json` for the response with the status `default`
- **2024-01-24** `9dab078a46b5`: 1 info
  - endpoint added
- **2024-01-20** `70cd94370516`: 1 breaking
  - api path removed without deprecation
- **2023-11-23** `704e6113e7db`: 1 info
  - endpoint added

---

[Operation](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/docs/api/v1/purchase_orders/:id/upload/post.md) - [API](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference.md) - [Page](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/changes/api/v1/purchase_orders/:id/upload/post)
