Resolve a posting error
What each posting error code means and how to fix it.
When a payment posting fails, Drypowder records an error code that describes what went wrong. This guide covers each error code and what to do about it.
For a reference of all posting statuses, see Posting statuses.
Error codes
Invoice not found
Code: INVOICE_NOT_FOUND
Drypowder tried to post a payment against a specific invoice, but Spruce reported that the invoice does not exist.
What happened: The invoice was present in Drypowder when the customer paid, but it is no longer in Spruce at the time of posting. This can happen if the invoice was deleted, voided, or merged in Spruce after the payment was submitted.
What to do:
- Look up the invoice number in Spruce to confirm whether it still exists.
- If the invoice was voided or merged, the payment may need to be applied to a different document. Work with your AR manager to determine the correct application.
- If the invoice exists but Spruce is not returning it, contact Drypowder support.
Balance mismatch — before posting
Code: BALANCE_MISMATCH_PRE
Before sending the payment to Spruce, Drypowder checked the invoice balance and found it did not match what was expected.
What happened: Between the time the customer paid and the time posting ran, the balance on the invoice changed in Spruce. Another payment, a credit, a write-off, or a manual adjustment may have been applied to the same invoice in the meantime.
What to do:
- Check the invoice in Spruce to see its current balance and any recent activity.
- If the balance difference is explained by a separate adjustment, the payment may need to be posted manually in Spruce for the correct amount.
- Contact your AR manager before making changes so the application is recorded correctly.
Balance mismatch — after posting
Code: BALANCE_MISMATCH_POST
Drypowder sent the payment to Spruce and Spruce confirmed it, but when Drypowder checked the invoice balance afterward, it did not drop by the expected amount.
What happened: Spruce accepted the posting, but the resulting balance does not match what Drypowder calculated. This is uncommon and usually points to a configuration difference, such as a rounding rule or a finance charge that Spruce applied at posting time.
What to do:
- Verify the invoice balance in Spruce now to see what it actually shows.
- If the balance looks correct in Spruce, the payment may have posted successfully despite the mismatch flag. Review the Cashier's Report in Spruce to confirm.
- If the balance in Spruce does not reflect the payment, contact Drypowder support with the invoice number and payment amount.
Discount expired
Code: DISCOUNT_EXPIRED
A statement discount was included with the payment, but when Drypowder posted to Spruce, the discount date had passed and Spruce did not honor it.
What happened: The customer paid a statement balance that included a statement discount, but the discount expired between when the payment was submitted and when posting ran — or the discount date was already past when the payment arrived. Spruce requires the full balance to close the invoice net of the discount by the discount date; if that condition is not met, the invoice does not close.
What to do:
- Review the invoice in Spruce. It will show the original balance rather than the discounted amount.
- Post the payment manually in Spruce, applying it to the remaining balance without the discount.
- If the discount expiration was a timing issue on Drypowder's side, contact Drypowder support.
Spruce rejected the posting
Code: SPRUCE_REJECTED
Spruce received the posting request and explicitly rejected it.
What happened: Spruce returned an error message indicating it could not accept the payment as submitted. The error details in the posting record include the specific message from Spruce.
What to do:
- Read the error detail on the posting record, which includes the rejection message from Spruce.
- Common reasons include misconfigured GL accounts, a missing eCommerce cash drawer, or an inactive bankcard type. Match the error message against the GL account mapping to see whether something is misconfigured.
- If the GL configuration looks correct, contact Drypowder support with the full error message.
SOAP request error
Code: SOAP_REQUEST_ERROR
The underlying API call to Spruce failed due to a communication error.
What happened: Drypowder communicates with Spruce through a SOAP API. This error means the request failed at the transport level — the connection timed out, Spruce returned an unexpected response, or the network between Drypowder and Spruce was interrupted.
What to do:
- Wait a few minutes and try posting again. Network-level errors are often transient.
- If the error repeats across multiple postings, check whether Spruce is reachable from your network and whether any maintenance windows are in effect.
- If Spruce appears healthy and the error persists, contact Drypowder support.
Polling timeout
Code: POLLING_TIMEOUT
After submitting a payment to Spruce, Drypowder polls for confirmation that it posted. This error means Drypowder stopped waiting before Spruce confirmed.
What happened: Spruce accepted the request but did not return a status within the expected time window. The payment may or may not have posted in Spruce. This is the most ambiguous error because the payment may be in an indeterminate state.
What to do:
- Check the invoice in Spruce directly to see whether the payment appears on it.
- If the payment is visible in Spruce, the posting likely succeeded and the timeout was a confirmation delay rather than a failure. Record the posting as complete in Drypowder after confirming the Spruce record.
- If the payment does not appear in Spruce, retry posting from the settlement page.
- If the issue recurs, contact Drypowder support, as repeated polling timeouts may indicate a performance issue with the Spruce connection.
Connection error
Code: CONNECTION_ERROR
Drypowder could not reach Spruce at all when attempting to post.
What to do:
- Check that the Spruce instance is reachable.
- Verify the Spruce API endpoint configured in your Drypowder connection settings is correct.
- Contact Drypowder support if the connection appears healthy on your end.
Unknown error
Code: UNKNOWN
An unexpected error occurred that does not match a defined category.
What to do: Contact Drypowder support with the posting ID and the timestamp of the failure.
Related
- Posting statuses — All status values explained.
- How payments post to the general ledger — What a successful posting looks like.
- GL account mapping — Configuration that affects certain errors.