Skip to content

Changes and deprecations

Open .md

v1 and v2 are part of each operation’s path. They aren’t two versions of the whole API, and both are current. The v2 operations cover sales orders, quotes, their lines, jobs, shipments, invoices and payments. The v1 operations cover customers, products, settings, webhooks, exports and reports. One key calls both. See Base URL and versions.

There’s no version header and nothing to pin. An operation changes in place, at its own path.

  • Additions come without notice. YoPrint adds operations, fields in answers, optional fields in requests and error codes as it builds features. Write your code to ignore fields and codes it doesn’t know.
  • Replacements are marked first. When a newer operation or field replaces an older one, the reference marks the old one Legacy or deprecated and names the new one. Deprecated operations also say so in every answer (see below).
  • Nothing deprecated has a removal date yet. Each deprecated operation and field keeps working for now. When one gets a date, it’s added on this page.

Every answer from a deprecated operation carries two headers:

Deprecation: @1794009600
X-YoPrint-Successor: POST /v2/api/store/{team_slug}/v2/invoice/filter
  • Deprecation is when the operation was deprecated, in seconds since 1970 (RFC 9745). @1794009600 is November 7, 2026.
  • X-YoPrint-Successor is the method and path of the operation to use instead.

There’s no Sunset header yet. To find the calls you still need to move, log any answer that has a Deprecation header, with its successor.

These 18 operations send the headers. Some of them no longer work at all, as their reference pages say. Move each one to its successor.

Invoices

Sales orders and quotes

Jobs and shipments

Card payments

Some answers still carry an older copy of a newer field, such as an order’s calc_total. The reference marks each one deprecated. See Deprecated fields for each field and the one to read instead.

  • This site. The API reference, guides and concepts are public at developer.yoprint.com, with a Markdown copy of every page and the OpenAPI file.
  • Bearer keys. Send your key as Authorization: Bearer YOUR_API_KEY. The older ways (the key alone in Authorization, or user_api_key in the query string or body) keep working. See Authentication.
  • Plan check. Requests for a team without API access answer 403 api_access_not_in_plan, and its webhooks stop delivering until the team is back on a plan with it.
  • Deprecation headers. The 18 operations above send Deprecation and X-YoPrint-Successor.
  • A key can’t manage itself. Reading, creating or resetting your key through the API answers 403 self_credential. Manage it in Profile.
  • Purchase orders for Zapier. GET Get a purchase order /v1/api/store/{team_slug}/purchase_order/{hash_id} and PUT Change a purchase order's status /v1/api/store/{team_slug}/purchase_order/{hash_id}/status work again at their v1 paths.
  • Payments and credit. An amount with decimals on a payment, a refund or any customer credit call answers 422 validation_failed instead of 500. Nothing is recorded.
  • Customers and contacts. Creating, updating or upserting a customer or a contact ignores is_external and external_type, so a value read back and sent again can’t make a record read-only.
  • Customer assignment. Assigning a user who isn’t a member of the team answers 422 (error.fields.user_id). Unassigning someone who isn’t assigned changes nothing and answers 200 with the list.
  • Customer export. The customer CSV export leaves out deleted contacts.
  • Profile. The API Access card shows when your key was last used, and a first request to copy.