Skip to main content
Question

Retainage Release Bill

  • May 15, 2026
  • 2 replies
  • 21 views

We have a workflow in which once a Subcontract has been fullly Billed, we create an invoice in our system to release the retainage.  There is usually no progress billing on that bill, and we are looking to release all retainage for that contract.

It appears that there is a way to release retainage for a single bill at a time, but if I have a scenario like this:

Subcontract total value: $10000

Bill 1: $5000, with $500 retainage

Bill 2: $2500, with $250 retainage

Bill 3: $2500, with $250 retainage

Once that last bill is out, we create a ‘Retainage Release’ of $1000.  Is there any way to do this efficiently in the Acumatica API, other than finding all the Bills against a subcontract and looping through, releasing against each Bill?

Or can I somehow release the full $1000 against the Subcontract in a single call?

2 replies

elijahr83
Jr Varsity I
Forum|alt.badge.img
  • Jr Varsity I
  • May 15, 2026

Hey ​@kwilson71 

In Acumatica, retainage is released against the original AP Bills, not directly against the Subcontract as a single retainage balance. The Subcontract is the source/commitment document, but the actual retained amounts live on the individual AP Bills that created the retainage.

So in your example:

  • Bill 1 retained $500
  • Bill 2 retained $250
  • Bill 3 retained $250

A $1,000 retainage release would still need to be tied back to those bill-level retainage balances. There is not typically a single API call to say “release all retainage for this Subcontract” unless you build custom logic around it.

The more practical approach would be:

  1. Query the AP Bills tied to the Subcontract.
  2. Identify bills with unreleased retainage.
  3. Create/process retainage release documents against each applicable bill.
  4. Release those documents.

So yeah, your integration would most likely need to loop through the bills and release retainage bill-by-bill.

That said, you can still make it efficient by treating the Subcontract as the driver: query all AP Bills where the Subcontract/order reference matches, filter to bills with open retainage, then process them in one integration routine. But the release itself still needs to respect the original bill-level retainage detail.


  • Author
  • Freshman II
  • May 15, 2026

That’s kind of what I was afraid of, but I’ll find a way!  Thanks for your input!