# A blanket purchase order is a limit, not an order: how to track releases against it in Pipedrive

https://salesbond.app/blog/blanket-purchase-order-releases-pipedrive/
Published: 2026-10-20 · Updated: 2026-10-20

A blanket purchase order is a customer’s agreement to buy from you repeatedly, up to a limit and until a date. The limit is not won revenue. Each release the customer calls off against it is. In Pipedrive that means one frame deal that holds the PO number, the limit and the end date, a separate deal for every release, and a forecast that contains only the releases you can actually expect, not the whole frame.

That is the short version. The rest is how to set it up so the numbers stay honest for as long as the blanket PO runs.

## What a blanket PO looks like from the supplier’s chair

A blanket PO is one purchase order, with one number, that sets the price and terms for repeated purchases from a single supplier over a fixed period, usually with a spending limit. A release (also called a call-off order) is the individual order the buyer places against it: it references the blanket PO number and says what to ship, how much and when. Nothing ships on the blanket PO alone ( [Precoro: Blanket PO](https://precoro.com/blog/blanket-po)).

Almost everything written about blanket purchase orders is written for the buyer, by procurement software. Their concern is fewer separate POs and controlled spend. Fair enough but it is not your problem.

Your problem starts when the document arrives. It has a number, a ceiling, a validity period, usually a price list, and no commitment to buy any particular quantity on any particular date. That is also the downside for a supplier: you have agreed the price for the whole term, and the customer has agreed to nothing in volume. They have bought the right to order from you quickly. They have not bought anything yet.

So the first decision is what the document is in your CRM. It is not a won deal, because nothing has shipped or been invoiced. It is not a lost deal. It is not nothing either. A signed blanket PO is the strongest signal of future revenue you will get from that account, and it belongs somewhere a manager can see it. (For the wider setup, see [a quote pipeline for manufacturers and distributors](https://salesbond.app/blog/crm-for-manufacturing-quote-pipeline-distributors/).)

We treat it as a frame: a container with a limit, a clock, and a list of releases inside it.

## The limit is not revenue, so what goes in the forecast

Only the releases. Take an illustrative frame of 240,000 over a year. It is not 240,000 of pipeline, and it is definitely not 240,000 won in the month it was signed.

Pipedrive’s forecast view sorts deals into date columns by expected close date, and once a deal is won it uses the won date instead. Each column header sums the projected revenue in it, weighted if you use custom probabilities ( [Pipedrive: the forecast view](https://support.pipedrive.com/en/article/the-forecast-view-revenue-projection)). Put the whole frame in as one open deal worth 240,000 with a close date next month, and that is exactly what the forecast will show you. Nobody lied. The setup did.

What belongs in the forecast is each release you have reason to expect, with its own value and its own date. If the customer told you they call off roughly every six weeks, create the next release deal when the current one ships, with an expected close date six weeks out. If they call off irregularly, create the release when they ask for it and forecast nothing in between. A forecast that shows zero from an account that has not ordered is more useful than one that shows a number somebody guessed in January.

The frame deal itself stays out of the forecast. The cleanest way is a value of zero on the frame and the real money on the releases.

## One frame deal, one deal per release against the blanket PO

![Scheme: one frame deal with the PO number and limit, and below it a separate deal for each release, two won, one expected, one not yet called off](https://salesbond.app/wp-content/uploads/2026/10/blanket-purchase-order-releases-pipedrive-2.png)

The tempting shortcut is one deal for the whole blanket PO: mark it won when the PO lands, bump the value as orders come in. It breaks in a predictable way. The won date is the signing date, so every later shipment reports as revenue from months ago. The deal value is either the limit (overstated) or the running total (a moving target). And the history of who called off what and when lives in email, not in the CRM.

The opposite shortcut, releases with no frame, loses the ceiling and the end date.

So: two kinds of deals.

The **frame deal** is created once, when the blanket PO arrives. Title it with the customer and the PO number. It carries the limit, the valid-until date and the remaining balance. It stays open for the life of the PO and is closed won when the frame is used up or expires with releases behind it, or closed lost if the customer never called off anything. A label like `Frame` on the deal is enough to pick it out in the list view.

The **release deal** is one per call-off. Value is the release amount, and the expected close date is the delivery or invoice date, whichever your finance team treats as the revenue date. It carries the same PO number in a text field, so a filter on that number returns the frame and every release under it. Win it when it ships. Otherwise these are ordinary repeat-order deals, handled the way we describe in [one deal per repeat order in Pipedrive](https://salesbond.app/blog/repeat-orders-pipedrive-new-deal-per-order/).

Why a text field and not a link? A Pipedrive deal is linked to a person, an organization or a project ( [Pipedrive: deals](https://support.pipedrive.com/en/article/deals-what-they-are-and-how-to-add-them)), and we have not found a way to link one deal directly to another deal. So the PO number is the join, a manual one. It works because there is one frame and the number comes from the customer’s paper, not from you.

## Four fields, and which one Pipedrive will not fill for you

All four are custom deal fields, added under Data fields ( [Pipedrive: custom fields](https://support.pipedrive.com/en/article/custom-fields); field types are listed in [Pipedrive: types of custom fields](https://support.pipedrive.com/en/article/what-types-of-custom-fields-are-there)).

- **PO number**, type Text. On the frame and on every release. If your deals already have a PO number field from the [purchase order before invoice](https://salesbond.app/blog/purchase-order-number-before-invoice-pipedrive/) routine, reuse it; the blanket PO number is the same field with a longer life.
- **PO limit**, type Monetary. Frame only, in the currency of the customer’s document.
- **Valid until**, type Date. Frame only. The expiry date on the PO, not the date you hope to renew.
- **Remaining balance**, type Monetary. Frame only. Limit minus the value of every release won so far.

The fourth one is the catch. Pipedrive’s formula fields calculate from the numeric and monetary fields of the deal itself ( [Pipedrive: formula fields](https://support.pipedrive.com/en/article/custom-fields-formula-fields)), and the releases are other deals, so nothing on the frame will subtract them for you. Someone updates the remaining balance by hand when a release is won. We make it part of winning a release: mark it won, open the frame, subtract. Thirty seconds, and its the only manual step in the whole scheme.

Skip it and the report in the next section will show you: a balance that has not moved in four months while releases were won stands out.

One more setting. Make PO limit and Valid until required, or at least important, so a frame cannot be saved half-empty. Required fields block saving a deal until they are filled; important fields only highlight the gap. Both depend on your Pipedrive plan, so check [the custom fields page](https://support.pipedrive.com/en/article/custom-fields) for your account rather than taking our word for it.

## The report: frames nearly used up, frames about to expire

Two saved filters do the work of a renewal pipeline. Pipedrive filters combine conditions in an ALL group and an ANY group, up to 16 conditions, and a shared filter is visible to everyone in the company account ( [Pipedrive: filtering](https://support.pipedrive.com/en/article/filtering)).

**Frames more than 80 percent used.** Conditions: label is `Frame`, status is open, and remaining balance is below a threshold. A filter condition, as far as we can see, compares a field with a value you type, not with another field, so the threshold is a number you pick: on the 240,000 example, remaining balance less than 48,000. If your frames vary a lot in size and your plan has formula fields, add a numerical formula field `Percent used` on the frame that calculates from PO limit and Remaining balance, and filter on that instead.

**Frames ending within 60 days.** Conditions: label is `Frame`, status is open, Valid until falls in the next two months. If the date condition in your account offers a relative period, use it so the filter moves with the calendar; otherwise check the date when you open the list.

Both lists are a renewal conversation, not an alarm. A frame at 85 percent with four months left means the customer is ordering faster than they planned, and the question is whether they want a bigger frame. A frame at 30 percent with six weeks left means the opposite, and the question is what changed. Either way the rep knows before the customer’s procurement team does, which is the whole point of holding the frame in the CRM. The renewal itself follows the same steps as any contract: [the customer renewal process in Pipedrive](https://salesbond.app/blog/customer-renewal-process-pipedrive/).

We look at both filters on the first working day of the month. Weekly is too often for documents that run a year.

## What finance needs from each release

An invoice per release that references the blanket PO number, because that is what the customer’s accounts payable matches against. The release deal gives them that: value, date and PO number on one record. What finance does not need is an invoice against the frame, ever.

Where this gets argued is deposits and prepayments. Some blanket POs come with a prepaid portion. That money is real, but it is still not a release. Record it as its own release deal with a clear title, won on the day it is paid, and reduce the remaining balance by it. Then teh frame’s balance means the same thing whether or not there was a deposit.

## Two mistakes we keep seeing

The first is counting the whole limit as won. It happens with good intentions: the rep who landed a big frame wants it on the board, and the manager wants it in the quarter. Three months later the board shows revenue that has not shipped, the forecast for the next three quarters is empty because the money was booked already, and finance is reconciling a won deal against invoices that add up to a third of it. The fix is the frame deal at zero and a release deal for every call-off. It feels like underselling the win. It is not. The win is in the frame, and the revenue arrives when it arrives.

The second is losing the PO number. A release created from a phone call gets a title like “Acme reorder May” and no number, and the customer’s AP rejects the invoice. The fix is one field, copied onto every release; the full routine is in [the purchase order number before invoice](https://salesbond.app/blog/purchase-order-number-before-invoice-pipedrive/).

If you do one thing this week, open your largest live blanket PO and check where it sits in the CRM right now. Is the limit on a record, or only in the PDF? If it’s in the PDF, create the frame deal, fill the four fields, and move the next expected release onto its own deal.

A disclosure, since we are at that point: we build SalesBond, a sales management layer on top of the CRM a team already uses; we started with Pipedrive. It reads deal data from the CRM, so a frame with a date, a limit and a balance on the the record is a frame it can read. A limit buried in a PDF is invisible to it and to everyone else. If you want to see how your open deals hold up on that kind of basic hygiene, [check your CRM with SalesBond](https://salesbond.app/).
