API Documentation
Purchase Orders ¶
Purchase Orders ¶
In Productive purchase orders are documents that serve as a buyer’s request to a seller to order goods or services. You can find out more about purchase orders in our Help documentation: Purchase Orders
Purchase Orders always belong to a budget and a vendor (seller). They can have multiple expenses, bills and bill items.
Following diagram shows services in our data hierarchy:
The enumeration status_id
can be:
-
1 (Draft)
-
2 (Finalized)
The enumeration payment_status_id
can be:
-
1 (Not received)
-
2 (Partially received)
-
3 (Fully received)
Supported filter params
-
deal_id (array)
-
vendor_id (array)
-
id
-
deal_id
-
vendor_id
-
status_id
-
issued_on
-
delivery_on
-
sent_on
-
received_on
-
created_at
-
total_cost
-
total_cost_with_tax
-
total_received
Supported sort params
-
deal_id
-
vendor_id
-
deal_id
-
vendor_id
-
status_id
-
issued_on
-
delivery_on
-
sent_on
-
received_on
-
created_at
-
total_cost
-
total_cost_with_tax
-
total_received
GET /api/v2/purchase_orders/22
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "22",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:07.060+02:00",
"number": "1",
"note": null,
"note_interpolated": null,
"email_key": "81a3861964f2a50fa9430c407ca00ba4",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1040"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
Gets a purchase orderGET/api/v2/purchase_orders/{id}
- id
number
(required) Example: 1purchase order id
POST /api/v2/purchase_orders
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"currency": "EUR",
"issued_on": "2025-08-02"
},
"relationships": {
"deal": {
"data": {
"type": "quotes",
"id": "673"
}
},
"vendor": {
"data": {
"type": "clients",
"id": "2781"
}
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "24",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:07.188+02:00",
"number": "2",
"note": null,
"note_interpolated": null,
"email_key": "91e71a7bb0567be9c7a67e52ac7c89b1",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1041"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
POST /api/v2/purchase_orders
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"currency": "EUR",
"issued_on": "2025-08-02"
},
"relationships": {
"deal": {
"data": {
"type": "quotes",
"id": "0"
}
},
"vendor": {
"data": {
"type": "clients",
"id": "2784"
}
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "attribute is invalid",
"source": {
"pointer": "data/attributes/deal"
}
}
]
}
Create a purchase orderPOST/api/v2/purchase_orders
PATCH /api/v2/purchase_orders/28
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"currency": "EUR",
"issued_on": "2025-08-02"
},
"relationships": {
"deal": {
"data": {
"type": "quotes",
"id": "678"
}
},
"vendor": {
"data": {
"type": "clients",
"id": "2796"
}
},
"subscribers": {
"data": [
{
"type": "people",
"id": "3862"
},
{
"type": "people",
"id": "3863"
}
]
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "28",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:07.662+02:00",
"number": "1",
"note": null,
"note_interpolated": null,
"email_key": "efe6d2bb8459dde0c2a1b00f405079d3",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1045"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
PATCH /api/v2/purchase_orders/29
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_order",
"attributes": {
"currency": "EUR",
"issued_on": "2025-08-02"
},
"relationships": {
"deal": {
"data": {
"type": "quotes",
"id": "0"
}
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "attribute is invalid",
"source": {
"pointer": "data/attributes/deal"
}
}
]
}
PATCH /api/v2/purchase_orders/30
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_order",
"attributes": {},
"relationships": {
"deal": {
"vendor": {
"type": "clients",
"id": "0"
}
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "can't be blank",
"source": {
"pointer": "data/attributes/deal"
}
}
]
}
Update a purchase orderPATCH/api/v2/purchase_orders/{id}
- id
number
(required) Example: 1purchase order id
DELETE /api/v2/purchase_orders/31
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Deletes a purchase orderDELETE/api/v2/purchase_orders/{id}
- id
number
(required) Example: 1purchase order id
POST /api/v2/purchase_orders/copy
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_order",
"attributes": {
"template_id": 32,
"deal_id": 682
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "33",
"type": "purchase_orders",
"attributes": {
"subject": "template",
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:08.280+02:00",
"number": "2",
"note": null,
"note_interpolated": null,
"email_key": "bc0dfcbc0218725afd0a8087548d3476",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1049"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
POST /api/v2/purchase_orders/copy
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_order",
"attributes": {
"template_id": 34,
"deal_id": 684
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "35",
"type": "purchase_orders",
"attributes": {
"subject": "template",
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:08.453+02:00",
"number": "2",
"note": null,
"note_interpolated": null,
"email_key": "b781e1528a04ab96a53c6abf5d1d55a3",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1050"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
POST /api/v2/purchase_orders/copy
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_order",
"attributes": {
"template_id": 36,
"deal_id": 686
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "37",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": null,
"received_on": null,
"created_at": "2025-08-02T02:09:08.748+02:00",
"number": "2",
"note": null,
"note_interpolated": null,
"email_key": "3ffc70a76dd260e0258c04b38acc8e86",
"payment_status_id": 1,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 10000,
"total_cost_default": 12500,
"total_cost_normalized": 10000,
"total_cost_with_tax": 10000,
"total_cost_with_tax_default": 12500,
"total_cost_with_tax_normalized": 10000,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1051"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
Copies a purchase orderPOST/api/v2/purchase_orders/copy
- id
number
(required) Example: 1purchase order id
PATCH /api/v2/purchase_orders/38/send
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"to": [
"test@email.com"
],
"cc": [
"test@productive.io",
"test-2@productive.io"
],
"bcc": [
"mail@something.com"
],
"subject": "Mail title",
"body": "Lorem ipsum dolor si amet"
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "38",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": "2025-08-02",
"received_on": null,
"created_at": "2025-08-02T02:09:08.884+02:00",
"number": "1",
"note": null,
"note_interpolated": null,
"email_key": "b209ef951ec874612cf18dd83a9925d6",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1052"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
PATCH /api/v2/purchase_orders/42/send
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"to": [
"invalid mail"
]
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "invalid mail is not an email",
"source": {
"pointer": "data/attributes/to"
}
},
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "can't be blank",
"source": {
"pointer": "data/attributes/subject"
}
},
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "can't be blank",
"source": {
"pointer": "data/attributes/body"
}
},
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "When in trial you can send emails only to yourself",
"source": {
"pointer": "data/attributes/to"
}
}
]
}
PATCH /api/v2/purchase_orders/43/send
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "purchase_orders",
"attributes": {
"to": [
"test@email.com"
],
"cc": [
"test@productive.io",
"test-2@productive.io"
],
"bcc": [
"mail@something.com"
],
"subject": "Mail title",
"body": "Lorem ipsum dolor si amet"
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "43",
"type": "purchase_orders",
"attributes": {
"subject": null,
"status_id": null,
"issued_on": "2025-08-02",
"delivery_on": null,
"sent_on": "2025-08-02",
"received_on": null,
"created_at": "2025-08-02T02:09:09.942+02:00",
"number": "1",
"note": null,
"note_interpolated": null,
"email_key": "9e92cb0618ebc337ac15b4914acc987a",
"payment_status_id": 3,
"exchange_rate": "1.25",
"exchange_date": "2025-08-02",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"total_cost": 0,
"total_cost_default": 0,
"total_cost_normalized": 0,
"total_cost_with_tax": 0,
"total_cost_with_tax_default": 0,
"total_cost_with_tax_normalized": 0,
"total_received": 0,
"total_received_default": 0,
"total_received_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "1057"
}
},
"vendor": {
"meta": {
"included": false
}
},
"deal": {
"meta": {
"included": false
}
},
"creator": {
"meta": {
"included": false
}
},
"document_type": {
"meta": {
"included": false
}
},
"attachment": {
"meta": {
"included": false
}
},
"bill_to": {
"meta": {
"included": false
}
},
"bill_from": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
Sends a purchase orderPATCH/api/v2/purchase_orders/{id}/send
- id
number
(required) Example: 1purchase order id
Generated by aglio on 02 Aug 2025