Skip to main content

What breaks when a Sage Intacct AP payment run fails partway through?

A Sage Intacct APPAYMENT run can pay several bills in one call. If a bad record key or a wrong amount on one line makes the whole run error, it's tempting to assume no bills were paid. That assumption is often wrong — the run can fail overall after already applying against some of the valid bills.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Last reviewed Editorial policy

Part of the finance integrations guide.

SymptomA multi-bill payment run errors out, but some of its bills now show as paid anyway
Root causeOne payment-item entry in the run was invalid (bad record key, amount mismatch) while others were valid
What's actually trueSage Intacct's own AP Payments API takes an array of payment items per run — it does not document all-or-nothing atomicity across that array
Where to checkThe vendor's bill status directly in Sage Intacct, not just the workflow's own success/failure log

Why a multi-bill payment run is riskier than it looks

The same feature that makes a Sage Intacct AP payment run efficient — covering several bills for one vendor in a single APPAYMENT call — is also what makes a partial failure hard to reason about. Sage Intacct's own developer documentation describes the payment-items array as a list of bill/amount pairs applied within one run, but doesn't document the array as all-or-nothing. A single bad entry (a bill record key that no longer matches, an amount that doesn't match what's actually owed) can cause the overall call to error, without a guarantee that Sage Intacct rolled back whatever it had already applied to the other, valid entries before hitting the bad one.

What a workflow's own error log can't tell you

A workflow that logs "payment run failed" and stops there is reporting the HTTP-level outcome, not the accounting outcome. The two aren't guaranteed to match on a multi-bill run: the call itself returning an error tells you the run wasn't fully successful, not that nothing happened. Treating a failed run as a clean no-op — and simply retrying the whole batch — risks double-paying whichever bills did apply the first time.

How to check what actually happened

After any payment run that errors, pull the current status of every bill that was included in the run directly from Sage Intacct rather than trusting the run's own success flag. Any bill that now shows paid should be removed from the retry batch before resubmitting the rest — retrying the full original batch is exactly the scenario that risks a duplicate payment on the bills that already went through.

Next step

Map the finance workflow with the most exposure and prove the automation path.

Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.

Book a workflow review

Worked example

A 3-bill payment run where one bad record key strands two good payments

A workflow submits one APPAYMENT run covering three bills for the same vendor: Bill A ($1,200), Bill B ($850), and Bill C ($2,400). Bill C's record key is stale — it was regenerated after a correction to the original bill — so the run errors. The workflow's log shows a single failed call and nothing else. Two weeks later, the vendor calls asking why Bills A and B still show open on their end when Sage Intacct's own bill list shows them paid: the run had, in fact, applied against A and B before erroring on C. The fix going forward: after any payment-run failure, check each covered bill's live status in Sage Intacct before deciding what to retry, and only resubmit the bill (here, just Bill C) that's actually still open.

Frequently Asked Questions

Their published AP Payments documentation doesn't state that guarantee for the payment-items array — treat a failed multi-bill run as unknown state until you've checked each bill directly, not as a clean rollback.

It removes this specific failure mode, at the cost of losing the efficiency of batching a vendor's bills into one run — a real tradeoff depending on payment volume, not a universally correct answer.

Sage Intacct's error response identifies the failing record; cross-reference that against your submitted payment-items array rather than assuming it was the last (or first) entry.

Sources

Related