---
updatedAt: 2026-10-06T16:12:28.000Z
agentTools:
  projectIndex: https://developer.candis.io/llms.txt
---

# Update Purchase Orders

Update purchase orders. This operation updates existing purchase orders with the provided data.

<br />

<Callout icon="🚧" theme="warn">
  ### Beta

  This API is a beta feature and is subject to possible changes. The API response and functionality will be updated in the future.
</Callout>

<br />

| Request limit                                                              | Record limit                                                                                        | Batch size                      |
| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------- |
| 500 requests per minute per organization<br />2,500 per minute per holding | 120 records per minute per organization (burst 1,000)<br />150 per minute per holding (burst 1,500) | Maximum 100 records per request |

Both limits are evaluated on every request. A request is rejected when either is exceeded.

For requests containing the maximum of 100 records:

* Following an idle period, 10 consecutive requests are accepted without delay. This corresponds to the 1,000-record burst allowance.
* Sustained submission is subsequently paced at one request per 50 seconds, approximately 1.2 per minute.
* The allowance is restored to its ceiling after approximately 8 minutes without submissions.

[Rate Limiting Policy](/docs/rate-limiting-policy)

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "paths": {
    "/v1/organizations/{organizationId}/imports/purchase-orders": {
      "put": {
        "description": "Update purchase orders. This operation updates existing purchase orders with the provided data.",
        "operationId": "updatePurchaseOrders",
        "parameters": [
          {
            "name": "organizationId",
            "required": true,
            "in": "path",
            "description": "The organization ID.",
            "schema": {
              "example": "alpha-organization",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Purchase orders to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "amount": {
                      "description": "Order amount",
                      "nullable": true,
                      "type": "object",
                      "allOf": [
                        {
                          "type": "object",
                          "properties": {
                            "value": {
                              "type": "string",
                              "description": "Amount value",
                              "example": "100.258"
                            },
                            "currency": {
                              "type": "string",
                              "description": "Currency code",
                              "example": "EUR"
                            }
                          },
                          "required": [
                            "value",
                            "currency"
                          ]
                        }
                      ]
                    },
                    "documentDate": {
                      "type": "string",
                      "description": "Document date",
                      "example": "2024-06-15T00:00:00Z",
                      "nullable": true
                    },
                    "postingDate": {
                      "type": "string",
                      "description": "Posting date",
                      "example": "2024-06-15T00:00:00Z",
                      "nullable": true
                    },
                    "dueDate": {
                      "type": "string",
                      "description": "Due date",
                      "example": "2024-07-15T00:00:00Z",
                      "nullable": true
                    },
                    "accountsPayableNumber": {
                      "type": "string",
                      "description": "Accounts payable number",
                      "example": "102344",
                      "nullable": true
                    },
                    "contactName": {
                      "type": "string",
                      "description": "Contact name",
                      "example": "VENDOR-001",
                      "nullable": true
                    },
                    "purchaseOrderType": {
                      "type": "string",
                      "description": "Goods receipt type",
                      "example": "GOODS",
                      "enum": [
                        "GOODS",
                        "SERVICE"
                      ],
                      "nullable": true
                    },
                    "status": {
                      "type": "string",
                      "description": "Goods receipt status",
                      "example": "OPEN",
                      "enum": [
                        "OPEN",
                        "PAID",
                        "DELIVERED",
                        "CLOSED"
                      ],
                      "nullable": true
                    },
                    "vendorReferenceNumber": {
                      "type": "string",
                      "description": "Vendor reference number",
                      "example": "REF-2024-001",
                      "nullable": true
                    },
                    "erpData": {
                      "description": "ERP data",
                      "nullable": true,
                      "type": "object",
                      "allOf": [
                        {
                          "type": "object",
                          "properties": {
                            "system": {
                              "type": "string",
                              "description": "ERP system"
                            },
                            "externalId": {
                              "type": "string",
                              "description": "External ID of the purchase order in the ERP system. A generated ID from your system is fine.",
                              "example": "67890-223421-21312-123214"
                            },
                            "createdAt": {
                              "type": "string",
                              "description": "Creation timestamp in the ERP system",
                              "example": "2024-01-15T09:30:00Z",
                              "nullable": true
                            },
                            "updatedAt": {
                              "type": "string",
                              "description": "Last update timestamp in the ERP system",
                              "example": "2024-06-20T14:45:00Z",
                              "nullable": true
                            }
                          },
                          "required": [
                            "system",
                            "externalId"
                          ]
                        }
                      ]
                    },
                    "lineItems": {
                      "description": "Line items. Maximum 1000 per purchase order.",
                      "nullable": true,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "lineNumber": {
                            "type": "number",
                            "description": "Line number or sequence number from your system. A generated sequence from your system is fine.",
                            "example": 1
                          },
                          "itemNumber": {
                            "type": "string",
                            "description": "Item number or code from your system. For an ADDITIONAL_DELIVERY_COST (expense) line, the item code should be the expense code in the ERP or a similar unique identifier of that expense.",
                            "example": "PROD-001"
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of the line item (ITEM, SERVICE, or ADDITIONAL_DELIVERY_COST). For SERVICE and ADDITIONAL_DELIVERY_COST, quantity, openQuantity, and unitPrice are optional; when omitted they are stored as quantity/openQuantity 1 and unitPrice = netAmount.",
                            "example": "ITEM",
                            "enum": [
                              "ITEM",
                              "SERVICE",
                              "ADDITIONAL_DELIVERY_COST"
                            ]
                          },
                          "description": {
                            "type": "string",
                            "description": "Item description",
                            "example": "Screw"
                          },
                          "additionalDescription": {
                            "type": "string",
                            "description": "Additional description",
                            "example": "Type 123",
                            "nullable": true
                          },
                          "generalLedgerAccount": {
                            "type": "string",
                            "description": "General ledger account code",
                            "example": "5000",
                            "nullable": true
                          },
                          "taxCode": {
                            "type": "string",
                            "description": "Tax code",
                            "example": "VAT19"
                          },
                          "quantity": {
                            "type": "string",
                            "description": "Quantity. Required for ITEM lines. Optional for SERVICE and ADDITIONAL_DELIVERY_COST; when omitted, stored as 1 (with unitPrice = netAmount).",
                            "example": "10"
                          },
                          "openQuantity": {
                            "type": "string",
                            "description": "Open (remaining) quantity. Required for ITEM lines. Optional for SERVICE and ADDITIONAL_DELIVERY_COST; when omitted, stored as the resolved quantity (1 if quantity is also omitted).",
                            "example": "10"
                          },
                          "unitPrice": {
                            "type": "string",
                            "description": "Unit price with up to 9 decimals. Required for ITEM lines. Optional for SERVICE and ADDITIONAL_DELIVERY_COST; when omitted, stored as netAmount (with quantity 1).",
                            "example": "0.5445"
                          },
                          "netAmount": {
                            "type": "string",
                            "description": "Net amount (without tax) with 2 decimals",
                            "example": "54.45"
                          },
                          "taxAmount": {
                            "type": "string",
                            "description": "Tax amount with 2 decimals",
                            "example": "10.34"
                          },
                          "grossAmount": {
                            "type": "string",
                            "description": "Gross amount with 2 decimals",
                            "example": "64.79"
                          },
                          "costCenter": {
                            "type": "string",
                            "description": "Cost center (DIM 1 code)",
                            "example": "CC-001",
                            "nullable": true
                          },
                          "costObject": {
                            "type": "string",
                            "description": "Cost object (DIM 2 code)",
                            "example": "OBJ200",
                            "nullable": true
                          },
                          "customCostDimension": {
                            "type": "string",
                            "description": "Custom cost dimension (DIM 3 code)",
                            "example": "Berlin",
                            "nullable": true
                          },
                          "projectCode": {
                            "type": "string",
                            "description": "Project code",
                            "example": "PROJ-2024",
                            "nullable": true
                          },
                          "locationCode": {
                            "type": "string",
                            "description": "Location code",
                            "example": "LOC-001",
                            "nullable": true
                          },
                          "externalId": {
                            "type": "string",
                            "description": "External ID of the purchase order line item from your system. A generated ID from your system is fine.",
                            "example": "EXT-LI-001",
                            "nullable": true
                          },
                          "goodsReceiptsMetadata": {
                            "description": "Goods receipt metadata. Maximum 1000 per line item.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "receiptNumber": {
                                  "type": "string",
                                  "description": "Goods receipt number from your system. A generated ID from your system is fine.",
                                  "example": "GR-123"
                                },
                                "lineNumber": {
                                  "type": "number",
                                  "description": "Goods receipt line number from your system. A generated sequence from your system is fine.",
                                  "example": 1
                                },
                                "lineId": {
                                  "type": "string",
                                  "description": "Goods receipt line ID from your system. A generated ID from your system is fine.",
                                  "example": "zzzz-zzzzz-zzzz"
                                }
                              },
                              "required": [
                                "receiptNumber"
                              ]
                            }
                          }
                        },
                        "required": [
                          "lineNumber",
                          "itemNumber",
                          "type",
                          "description",
                          "taxCode",
                          "netAmount",
                          "taxAmount",
                          "grossAmount",
                          "goodsReceiptsMetadata"
                        ]
                      }
                    },
                    "orderNumber": {
                      "type": "string",
                      "description": "Order number from your system. A generated ID from your system is fine.",
                      "example": "12312"
                    }
                  },
                  "required": [
                    "orderNumber"
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "processId": {
                      "type": "string",
                      "description": "The unique identifier of the import request.",
                      "example": "9924bb4a-7ee9-4b6a-ac7b-30fdbe6b0031"
                    }
                  },
                  "required": [
                    "processId"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errorCode": {
                      "type": "string",
                      "description": "The Error Code assigned to the issue encountered",
                      "enum": [
                        "UNAUTHORIZED",
                        "FORBIDDEN",
                        "BAD_REQUEST",
                        "SERVICE_UNAVAILABLE",
                        "INTERNAL_SERVER_ERROR",
                        "MISSING_REQUESTER_ID",
                        "BAD_INPUT",
                        "NOT_FOUND",
                        "EXPORTABLE_POSTINGS_NOT_FOUND",
                        "TOO_MANY_REQUEST",
                        "FAILED_TO_FETCH_DOWNLOAD_URL",
                        "FILE_NOT_FOUND"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "Description about the issue encountered"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "This is the unique identifier for the request."
                    },
                    "errors": {
                      "description": "This is an optional output that can provide more details about the input parameters that may have caused an issue.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "index": {
                            "type": "string",
                            "description": "This identifies the index of the payload that has an issue."
                          },
                          "property": {
                            "type": "string",
                            "description": "This identifies the parameter that has an issue."
                          },
                          "messages": {
                            "description": "This provides more details about the parameter that has an issue.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "property",
                          "messages"
                        ]
                      }
                    }
                  },
                  "required": [
                    "errorCode",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "The request limit or the per-record limit for this endpoint has been exceeded. No records were imported, so the same request body can be resubmitted unchanged once the wait has elapsed.\n\nSee the [Rate Limiting Policy](https://developer.candis.io/docs/rate-limiting-policy) for the limits, response headers and retry guidance.",
            "headers": {
              "Retry-After": {
                "description": "Whole seconds to wait before retrying. See the Rate Limiting Policy for how the value is derived.",
                "schema": {
                  "type": "integer",
                  "example": 10
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errorCode": {
                      "type": "string",
                      "description": "The Error Code assigned to the issue encountered",
                      "enum": [
                        "UNAUTHORIZED",
                        "FORBIDDEN",
                        "BAD_REQUEST",
                        "SERVICE_UNAVAILABLE",
                        "INTERNAL_SERVER_ERROR",
                        "MISSING_REQUESTER_ID",
                        "BAD_INPUT",
                        "NOT_FOUND",
                        "EXPORTABLE_POSTINGS_NOT_FOUND",
                        "TOO_MANY_REQUEST",
                        "FAILED_TO_FETCH_DOWNLOAD_URL",
                        "FILE_NOT_FOUND"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "Description about the issue encountered"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "This is the unique identifier for the request."
                    },
                    "limit": {
                      "type": "string",
                      "description": "Which limit rejected the request: the request limit, which counts requests, or the record limit, which meters the records in the request body.",
                      "enum": [
                        "request",
                        "record"
                      ]
                    },
                    "scope": {
                      "type": "string",
                      "description": "Whose allowance was exhausted: the organization’s own, or the shared allowance of the holding it belongs to.",
                      "enum": [
                        "organization",
                        "holding"
                      ]
                    }
                  },
                  "required": [
                    "errorCode",
                    "message"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errorCode": {
                      "type": "string",
                      "description": "The Error Code assigned to the issue encountered",
                      "enum": [
                        "UNAUTHORIZED",
                        "FORBIDDEN",
                        "BAD_REQUEST",
                        "SERVICE_UNAVAILABLE",
                        "INTERNAL_SERVER_ERROR",
                        "MISSING_REQUESTER_ID",
                        "BAD_INPUT",
                        "NOT_FOUND",
                        "EXPORTABLE_POSTINGS_NOT_FOUND",
                        "TOO_MANY_REQUEST",
                        "FAILED_TO_FETCH_DOWNLOAD_URL",
                        "FILE_NOT_FOUND"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "Description about the issue encountered"
                    },
                    "requestId": {
                      "type": "string",
                      "description": "This is the unique identifier for the request."
                    }
                  },
                  "required": [
                    "errorCode",
                    "message"
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update Purchase Orders",
        "tags": [
          "Core Data"
        ]
      }
    }
  },
  "info": {
    "title": "Candis API",
    "version": "1.0",
    "description": "",
    "contact": {},
    "x-logo": {
      "url": "https://www.candis.io/img/candis-logo-black.svg",
      "altText": "Candis GmbH"
    }
  },
  "servers": [
    {
      "url": "https://api.candis.io"
    },
    {
      "description": "Candis API Authorization Server.",
      "url": "https://id.my.candis.io/auth/realms/candis/protocol/openid-connect"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      }
    }
  }
}
```