Collection Retry & BACS Re-presentation
Collection Retry & BACS Re-presentation
The Direct Debit service automatically handles failed collections in accordance with BACS re-presentation rules. This page describes the retry lifecycle, escalation behaviour, and how agents can intervene manually.
How It Works
1. Failure Detection
When a collection fails — for example due to insufficient funds or a closed account — the service detects the failure and immediately triggers a background job (via Inngest) to manage the retry process.
Common failure reasons include:
- Insufficient funds — the tenant's account did not have enough balance
- Account closed — the bank account linked to the mandate no longer exists
- Other standard BACS return codes
2. Re-presentation
BACE rules permit up to 2 re-presentation attempts for a failed collection. The service implements this automatically:
- Wait 5 working days — The service calculates a re-presentation date that is 5 UK banking working days after the failure, accounting for weekends and UK bank holidays.
- Re-submit the collection — The collection is re-submitted to Modulr for the same original amount. No partial or adjusted amounts are used.
- Track the attempt count — Each re-presentation increments the representation counter on the collection record. The counter is capped at 2.
Collection fails
│
▼
Wait 5 working days
│
▼
Re-present (attempt 1)
│
┌──┴──────────────┐
Fails again Succeeds → Done
│
Wait 5 working days
│
▼
Re-present (attempt 2)
│
┌──┴──────────────┐
Fails again Succeeds → Done
│
▼
Escalate
3. Escalation After 2 Failures
If both re-presentation attempts fail, the service escalates automatically:
- Mandate status →
failed— The mandate is transitioned to thefailedstate and can no longer be used for collections. - Webhook fired — A webhook event is dispatched so that consuming applications (such as agentOS) can react in real time (e.g. notify the agent, update their UI).
- Alert raised — An internal alert is created and sent to the configured recipients for the agent, flagging the mandate failure.
- Gatekeeping flag set — The mandate is flagged for gatekeeping. Consuming applications should check this flag and restrict tenant access (e.g. block portal login) until a new mandate is established.
Manual Retry
Agents are not limited to the automated retry cycle. A manual retry can be triggered at any point from the dashboard:
- The agent selects the failed collection and triggers a retry via the API.
- This bypasses the 5-working-day waiting period.
- Manual retries are useful when the agent has confirmed with the tenant that funds are now available, or after a bank account issue has been resolved.
Note: Manual retries still count towards the representation limit where applicable.
Representation Rules Summary
| Attempt | Trigger | Timing |
|---|---|---|
| 1st re-presentation | Automatic on failure | 5 working days after initial failure |
| 2nd re-presentation | Automatic on failure | 5 working days after 1st re-presentation failure |
| Manual retry | Agent-triggered | Immediate |
| Escalation | After 2 automatic failures | Immediate |
Mandate States
After exhausting re-presentation attempts, the mandate transitions to failed. This is a terminal state. To resume Direct Debit collection for the tenant, a new mandate must be created and a new mandate invitation sent.
Gatekeeping
The failed flag is surfaced on the mandate record via the API. Consuming applications should poll or listen for the webhook event and apply appropriate access restrictions. See the Gatekeeping documentation for details on how to check and respond to this flag.