A prospective client wanted a fixed price for a project that involved a genuinely novel integration with a vendor whose API documentation was, by their own admission, unreliable. We said no to fixed price and explained why, and it was not the answer they wanted to hear at the time.
Why fixed price fails on genuine unknowns
A fixed price is a bet on a known scope. Where the scope is well understood, that bet is reasonable and we quote it happily. Where a meaningful part of the work depends on how a third-party system actually behaves — not how it's documented to behave — nobody can honestly price it in advance, and a studio that does is pricing in a cushion for their own risk, which the client pays for either way.
What we offered instead
Time and materials for the integration specifically, ring-fenced with a hard cap and a checkpoint at 50% of that budget to report back on what we'd actually found. The rest of the project, which was ordinary and well understood, was quoted fixed as normal.
What the vendor's API actually did
Roughly a third of its documented endpoints behaved as described. The rest had undocumented rate limits, one returned success codes on requests that had silently failed, and a support ticket to the vendor took nine days to get a useful answer. None of this was discoverable without building against it.
A fixed price on an unknown isn't confidence. It's a guess wearing a suit.
What the checkpoint conversation looked like
At the 50% mark we showed the client exactly what we'd found, including the vendor's silent failures, and gave a revised estimate for the remaining work with the reasoning attached. It came in over the original estimate, which is normally an uncomfortable conversation, and it was not, because the client had been shown the evidence as it accumulated rather than presented with a number at the end.
Why we'd do this again
The alternative was quoting fixed and either eating the vendor's chaos ourselves or cutting corners to hit the number. Neither outcome is one we want attached to our name, and the client, once the frustration of an unfamiliar arrangement passed, told us afterwards that the visibility was worth more to them than the certainty of a single number would have been.
