Within one pull: one payment covers the whole image. The paywall issues a realm-scoped macaroon (realm blossom-read, ~10 min, reusable), so payblob pays the first 402, caches the token in memory, and reuses it for the manifest, config and every layer. One settlement, not one per blob.
Across separate pulls (two CI runs, or the same digest twice) it re-pays today: the token isn't persisted to disk yet, so each process starts cold.
The server already supports what you want though. The macaroon is realm-scoped and valid for the whole window, so persisting it (plus a local sha256 cache) makes a repeat pull settle once, or zero if the blobs are already cached. That's the next step.