Showcase · Banking — "User story: interbank transfer"
Prompt: “Viết user story kèm acceptance criteria cho chức năng chuyển tiền liên ngân hàng trên mobile banking.”
Illustrative, lightly edited outputs. Values in
[… — confirm]are deliberately left for the bank to decide.
❌ Without a domain pack (typical generic output)
As a customer I want to transfer money to another bank so that I can pay people.
Scenario: Successful transfer
Given I am logged in
When I enter account number, bank, amount and confirm with OTP
Then the money is transferred
And I see a success message
Scenario: Insufficient balance
Given my balance is lower than the amount
When I confirm
Then I see "Insufficient balance"
2 scenarios. Happy path + one error. Nothing about timeouts, limits, authentication thresholds, fees or reconciliation.
✅ With user-story-writer + domain-banking
US-TRF-01 · Instant interbank transfer (24/7) Trace: Capability 3. Payments & Transfers · BR patterns: Limits, Threshold-based authentication, Transaction status & timeout, Fees
As a retail customer I want to transfer money instantly to an account at another bank so that the beneficiary receives it immediately, any time of day.
Scenario: Successful instant transfer
Given my payment account is Active with sufficient available balance
When I enter a beneficiary account at another bank
Then the system performs a name inquiry and shows the beneficiary name
When I enter an amount within my limits and confirm
And I authenticate with the method required for this amount
Then my account is debited amount + fee
And the transaction status is "Success"
And I receive a notification with the masked account number
Scenario: Beneficiary name inquiry fails
Given the beneficiary account does not exist or is closed
When the name inquiry is performed
Then I see "Không tìm thấy tài khoản người thụ hưởng"
And I cannot continue
Scenario: Amount exceeds per-transaction or daily limit
Given my daily used amount + this amount > my daily limit [confirm]
When I confirm
Then the transfer is rejected with the remaining daily limit shown
Scenario: Stronger authentication above threshold
Given the amount or my daily cumulative total exceeds the biometric threshold [confirm with Compliance]
When I confirm
Then I must complete biometric authentication instead of OTP
Scenario: Switch timeout — transaction pending
Given the interbank switch does not respond within [N seconds — confirm]
When the timeout occurs
Then the transaction status is "Pending" (not "Failed")
And I see "Giao dịch đang được xử lý, chúng tôi sẽ thông báo kết quả"
And the transaction is resolved by reconciliation within [SLA — confirm]
And if it is finally failed, my account is refunded automatically and I am notified
Scenario: Duplicate submission
Given I tapped "Confirm" twice or the app retried after a network error
When the second request arrives with the same idempotency key
Then only one debit is made
Scenario: Fee not covered by balance
Given my balance covers the amount but not amount + fee
When I confirm
Then the transfer is rejected with a message showing the fee
Open questions [domain]
- Limit values per segment/channel and who can change them?
- Authentication thresholds — confirmed by Compliance against the current regulation?
- Fee schedule and waivers?
- Reconciliation SLA and customer notification for pending transactions?
- Is AML/fraud screening synchronous (blocks) or asynchronous (alerts)?
What the domain pack added: name inquiry · limits · threshold-based authentication · timeout → pending → reconciliation · idempotency · fee handling · masking · compliance questions.