The GIRO network return reason taxonomy — and why it matters for retry logic
GIRO network provides a return reason code for every failed GIRO / Direct Debit debit. The codes are not all the same — and treating them all identically with a single retry schedule wastes retries on accounts where a retry will certainly fail, and fails to use the right resolution path for each bounce type. A insufficient funds (insufficient funds) is resolved by waiting for the borrower's next salary credit and retrying. A return code 05 (do not honour) is a broad decline that may indicate a fraud flag on the account — retrying immediately will fail again and may create additional bank charges for the borrower. A return code 10 (account closed) cannot be retried on this account at all — the mandate needs to be modified to the new account number. Each return reason requires a different response.
The return reason codes and the Repayment AI's response to each
| GIRO network Code | Reason | Frequency | Repayment AI Response | Retry? |
|---|---|---|---|---|
| 01 | Insufficient funds | Most common · ~55% of all bounces | WhatsApp + SMS notification to borrower · Retry on Day 3 (after typical salary date) · Second retry on Day 7 if first fails | Yes · Day 3 + Day 7 |
| 02 | Account frozen / dormant | ~8% | Borrower notified to activate account · Retry on Day 5 · If second failure: escalate to tele-collections for alternate payment method | Yes · Day 5 only |
| 05 | Do not honour (generic decline) | ~12% | No immediate retry · Borrower contacted for explanation · Tele-collections team assigned Day 2 · Retry only after borrower confirms account issue resolved | After confirmation only |
| 10 | Account closed | ~6% | No retry on this account · Borrower contacted to provide new account details · Mandate modification request submitted once new account verified · Bridge payment via PayNow / PromptPay / DuitNow requested immediately | No retry · Mandate modification |
| 11 | Account number incorrect / invalid | ~3% | Mandate data review triggered · If bank code / SWIFT BIC changed (bank merger or branch migration): auto-update bank code / SWIFT BIC and retry · If account number wrong: contact borrower for correction · Mandate modification required | After correction only |
| 17 | Debit not permitted by user (borrower instructed bank to block debit) | ~5% | Escalate immediately — borrower has actively blocked the mandate · Tele-collections priority contact Day 1 · Legal team notified if pattern repeats · No retry until mandate reinstated | No retry · Legal alert |
| 21 | Technical failure (bank or GIRO network system issue) | ~8% | Automatic retry next working day · No borrower notification required (technical failure, not borrower issue) · If second attempt also fails with code 21: GIRO network sponsor bank support ticket raised | Auto-retry next day |
| 25 | Mandate not registered / eGIRO reference invalid | ~3% | Mandate status check triggered · If mandate pending: collection via bridge method, retry once mandate activates · If mandate cancelled: new mandate registration initiated | After mandate check |
The bounce resolution sequence: 7-day playbook for insufficient funds (insufficient funds)
Nov 5
Bounce received and classified — WhatsApp and SMS notifications sent
GIRO network insufficient funds received at 14:32. instalment marked as unpaid in CBS. Penal charge SGD500 accrued per the loan agreement. Borrower notified immediately via WhatsApp: "Your instalment of SGD9,200 due on November 5 could not be debited from your account — it looks like the account balance may have been insufficient. We'll try again in a few days. If you'd like to pay now, tap here: [PayNow / PromptPay / DuitNow link]." SMS sent as backup.
→ Notification: WhatsApp + SMS · PayNow / PromptPay / DuitNow self-payment link provided · DPD clock starts Day 1Nov 6–7
Self-payment window — borrower can pay via PayNow / PromptPay / DuitNow link · No collection call yet
For insufficient funds, the first 48 hours are a self-resolution window. Many borrowers pay voluntarily via the PayNow / PromptPay / DuitNow link before any tele-collection is made — salary credits typically arrive in the first few days of the month for salaried borrowers. The Repayment Agent AI monitors for any incoming PayNow / PromptPay / DuitNow credit against this loan account. If payment received: instalment marked paid, penal waiver assessed per the institution's policy (first bounce = penal waived on same-month payment), DPD counter reset.
→ 28% of insufficient funds bounces self-resolve in this 48-hour window via PayNow / PromptPay / DuitNowNov 8
Retry 1 submitted — Day 3 after bounce, after typical salary credit window
Day 3 is the optimal first retry date for insufficient funds bounces: most salaried borrowers have received their November salary by this point, and the account balance is most likely to be sufficient. The Repayment Agent AI submits the GIRO / Direct Debit debit presentation for SGD9,200 (the instalment only — penal charge is not included in the GIRO / Direct Debit debit; it is accrued separately and collected in the next instalment or on prepayment). A "heads up" WhatsApp is sent the previous evening: "We'll try your instalment again tomorrow — please ensure your account has SGD9,200 available."
→ 54% of insufficient funds retries succeed on Day 3 · Pre-debit WhatsApp sent Day 2 eveningNov 9–10
If Retry 1 succeeds: instalment posted, DPD reset. If fails: tele-collections assigned, Retry 2 scheduled.
If Retry 1 succeeds: instalment posted to CBS, DPD counter reset, penal charge waived per first-bounce policy (if account is in good standing). Case closed. If Retry 1 fails with insufficient funds again: the borrower's account does not have funds on Day 3. Tele-collections is assigned the case with the bounce history. A tele-collections call is made to understand when funds will be available. Retry 2 is scheduled for Day 7 (or for the date the borrower commits to having funds available, whichever is earlier).
→ Retry 1 fail: tele-collections assigned · Borrower call Day 4 · Retry 2 scheduled per borrower commitmentNov 12
Retry 2 — final GIRO / Direct Debit retry · If fails, alternate payment method required
Retry 2 is the final automated GIRO / Direct Debit retry for a insufficient funds bounce. If Retry 2 also fails, the GIRO / Direct Debit track for this month's instalment is exhausted. The Repayment Agent AI triggers the Early Bucket Caller AI: the account enters the DPD 7 bucket with two failed GIRO / Direct Debit attempts and one unsuccessful tele-collections call. The Early Bucket Caller initiates the standard early-bucket contact sequence, with the outstanding instalment + penal charge flagged as the priority collection target.
→ Retry 2 fail: case passed to Early Bucket Caller AI · DPD 7 · Two GIRO / Direct Debit failures logged · Penal: SGD500 accruedEscalation
Early Bucket Caller takes over — GIRO / Direct Debit suspended until borrower confirms account availability
From Day 8, the repayment track shifts from automated GIRO / Direct Debit collection to the collections AI agents. A third GIRO / Direct Debit debit attempt is not made until the borrower explicitly confirms (via a call or WhatsApp response) that their account has sufficient funds. An unsolicited third retry that fails would add unnecessary bounce charges, worsen the borrower relationship, and provide no collection benefit. The Repayment Agent AI suspends further GIRO / Direct Debit presentations until the Early Bucket team secures a specific payment commitment.
→ No further GIRO / Direct Debit until borrower commitment confirmed · Early Bucket Caller owns the case from Day 8A bounce is a signal — and different signals require different responses
An institution that retries every bounce on the same schedule — Day 3 and Day 7, regardless of the reason code — is treating insufficient funds (insufficient funds, likely temporary) the same as code 17 (borrower blocked the mandate, likely intentional) and code 10 (account closed, definitely unresolvable by retry). The insufficient funds retry may succeed. The code 17 retry will fail and alert the borrower that the institution is not reading their signal. The code 10 retry will fail three times and generate three sets of bank charges on a closed account. The Repayment Agent AI reads the return code, selects the response protocol matched to that specific signal, and routes cases that cannot be resolved by GIRO / Direct Debit to the collections teams that can resolve them — rather than exhausting GIRO / Direct Debit attempts on accounts where a different approach is needed.
