Managing End User DDA Funds for Routine Creation
Last updated: July 9, 2026
Overview
This guide explains what clients should do to make sure an end user's DDA (checking) account is ready before submitting a routine creation request to Astra. In this pattern, each end user has their own DDA account owned and directly managed by the client. This account will be used as the source of funds when submitting routines to Astra. When the client submits a routine creation request to Astra, this results in a transfer that moves money out of that account through an ACH debit. If the account isn't ready, the debit can fail and return.
Since the client owns and manages the end User's DDA, that means they're the only one who knows, in real time, whether a given account has enough money and whether it can accept a debit. Astra can't see this information ahead of time, so this responsibility sits with the client.
Why this matters
When you submit a routine creation request to Astra, you're initiating an ACH debit against the end user's DDA account for the amount in the routine payload. Astra creates the routine and the resulting debit on its side, but the request originates from you, and the DDA account's readiness to support that debit is your responsibility. If the debit can't complete, the ACH network returns it. The return codes most relevant to this pattern are:
R01 (Insufficient Funds): The account doesn't have enough available balance to cover the debit.
R02 (Account Closed): The account was closed after being previously active.
R08 (Payment Stopped): A stop payment instruction is in place on the account, blocking the debit.
R09 (Uncollected Funds): The account has enough ledger balance, but some of it isn't yet available (for example, a recent deposit that hasn't cleared).
R16 (Account Frozen): The account can't accept debits, for example due to a freeze, legal hold, or similar restriction.
R20 (Non-Transaction Account): The account isn't set up to accept ACH debits, or the debit type attempted isn't one the account supports.
Astra auto-debits the losses from these returns on a daily basis, from an account you fund for this purpose. That account must stay adequately funded to cover the returns you experience day to day. If it doesn't, your program is at risk of being paused until any negative balance resulting from returns is resolved.
What you should check before creating a routine
Before you submit a routine creation request to Astra, confirm the following about the source DDA account:
Available balance. The balance should be equal to or greater than the routine amount. Check the available balance, not just the ledger balance, since holds or pending transactions can reduce what's actually available.
Account status. The account should be open and in good standing. Verify it isn't closed, frozen, or subject to a legal or compliance hold that would block a debit.
Debit eligibility. Some accounts can accept credits but not debits, depending on their configuration or standing. Confirm the account can accept an ACH debit specifically, and that it isn't set up as a non-transaction (deposit-only) account.
Debit blocks or filters. Confirm there isn't a debit block, ACH filter, or similar restriction configured on the account that would reject incoming debits.
Stop payment instructions. Confirm there's no active stop payment order on the account that would apply to this debit.
Account type. Confirm the account type on file supports ACH debits as configured. Some account types have restrictions or limits that can cause a debit to be rejected.
If any of these checks fail, you should hold off on submitting the routine until the underlying issue is resolved.
Recommended workflow
A simple pre-submission check goes a long way:
Look up the DDA account's current available balance and status immediately before creating the routine.
Compare the available balance to the routine amount.
Confirm the account status shows it's open and able to accept debits.
Only submit the routine creation request to Astra if both checks pass.
This workflow should run every time and account for multiple routines being created, even for accounts you've checked recently. Balances and statuses can change quickly.
Passing these checks at submission time isn't enough on its own. The DDA account must remain open, able to accept debits, and adequately funded for the entire time the routine and its resulting transfer are processing, not just at the moment you submit the request. For example, if the account is open and able to accept debits when you create the routine, but its status changes to closed or unable to accept debits an hour later, the ACH debit that's already in flight will still fail and come back as a return. The account properties that allow the debit to succeed, including balance and status, need to hold steady until the ACH debit has fully completed processing.
Required: automatic ACH return auto-debiting
Even with these controls in place, returns can still happen. Bank-side issues, timing differences, and edge cases outside your visibility can all produce a return that the pre-submission checks wouldn't have caught.
Because of this, this implementation pattern requires that you're configured for automatic ACH return auto-debiting with Astra, funded and maintained as described above. This isn't a substitute for the pre-submission checks and the lifecycle monitoring described earlier. It's what accounts for the returns that occur despite them.
Summary checklist
Before submitting a routine creation request, confirm:
[ ] Available balance covers the routine amount
[ ] DDA account is open and in good standing
[ ] DDA account can accept ACH debits
Following this checklist should reduce returns like R01, R02, R08, R09, R16, and R20, and help routines complete smoothly on the first attempt.