Platform Evaluation
How to Evaluate Banking Software: A Pilot That Tests Real Operations
A practical banking software pilot: test payment failures, approvals, ledger integrity and recovery, with clear evidence for a buying decision.
On this page
A banking software pilot should leave the buying team able to explain how a transaction works, who controls it and what happens when it goes wrong.
That requires more than a tour of the interface. A useful evaluation follows a complete business operation through the customer application, staff decisions, external providers and financial records. It produces evidence that product, engineering, operations and finance can assess together.
The framework below is Bastion Research's proposed approach to a focused pilot. It uses controlled test data and deliberately introduced failures to answer a practical question: can this configuration support the operation we intend to launch?
Start with one decision
Define what the pilot will help you decide. For example: can a new customer application and payment workflow operate with the institution's existing core?
Keep the first scope narrow enough to investigate properly. One entity, one customer type, one currency and one payment provider can reveal more than a broad demonstration in which every module receives a few minutes of attention.
Write down the journey, the systems involved, the people who will assess it and the evidence required. Also record which connections use a provider sandbox, which use a simulator and which are unavailable. A simulated rejection is useful evidence of application behaviour; it does not establish that the live provider connection is ready.
Agree the outcome before implementation starts. The decision might be to proceed with the evaluated scope, resolve specific gaps or reconsider the architecture. Each outcome should follow from recorded results.
Make ownership explicit
If the existing core will remain in place, the pilot must show how the new layer respects its authority. A cached balance on a new screen should have a defined relationship to the balance used to approve spending.
Create a small ownership map:
| Question | What the pilot must identify |
|---|---|
| Which system decides whether funds are available? | The authoritative balance and reservation mechanism. |
| Which system records the financial movement? | The ledger responsible for the account and posting rules. |
| Which system manages the payment workflow? | The owner of approvals, submission attempts and status transitions. |
| Which evidence confirms the external result? | The provider response, status query or settlement record, as applicable. |
| Who resolves an exception? | The responsible team, permitted action and audit record. |
Where the core owns the balance, test reservation and posting through its supported interfaces. Where a new ledger is part of the scope, test that ledger directly. Avoid leaving both systems with independent authority to spend the same funds.
Follow one payment all the way through
Use a payment that needs an approval. Start with known account balances and an agreed fee rule, then create the beneficiary and payment instruction.
Follow the instruction through validation, any funds reservation, approval, provider submission, status updates and reconciliation. The precise sequence depends on the chosen product and provider. Record the expected sequence before running the test.
At each step, inspect what the customer sees, what the operator can do and what the financial records contain. A provider acknowledgement may confirm receipt without confirming settlement. Customer-facing labels should reflect that distinction.
Give the payment a traceable business reference. Connect it to approval events, provider references and accounting entries so that an operator can reconstruct the journey without asking a developer to search unrelated logs.
Finish by comparing the expected balance movement, fee and external result with the recorded outcome. Our article on ledger and reconciliation explains the relationship between these records in more detail.
Repeat the journey under failure conditions
Once the normal path is understood, introduce conditions that change the result or make it uncertain. The following matrix is a proposed acceptance test for an outgoing-payment pilot, adapted to the selected rail and provider contract.
| Test condition | Evidence to inspect |
|---|---|
| The customer submits the same instruction twice. | One business payment intent; no additional debit or fee caused by the duplicate request. |
| The provider accepts the instruction, but its response is lost. | An explicit unresolved state and a recovery path that avoids an uncontrolled second submission. |
| A provider notification arrives twice or an older update arrives late. | Duplicate processing has no repeated financial effect; the lifecycle remains consistent with authoritative evidence. |
| The amount or beneficiary changes after approval. | The prior approval cannot silently authorise the changed instruction. |
| The initiator attempts to approve their own payment when separation is required. | The server rejects the action and records the attempt. |
| Processing stops after an external submission. | On restart, the system identifies what is known and resolves uncertainty before taking another financial action. |
| Funds are returned after the original payment completed. | The return is linked to the original operation, with the correct financial effect and preserved history. |
| A provider report contains a missing movement or unexpected fee. | The discrepancy becomes an assigned, explainable reconciliation item. |
For retries, agree what identifies the original intent and how long the provider honours that identity. Reusing an identifier with changed payment parameters should not silently create a different operation. AWS describes the underlying request-identity and parameter-validation principles in its guidance on idempotent APIs.
For notifications, use the actual provider's delivery contract. Stripe, for example, documents duplicate delivery and does not guarantee event order. That is a concrete reason to test these behaviours, rather than assume every callback arrives once and in sequence. See Stripe's webhook documentation.
A timeout deserves particular attention. It means the caller lacks a response; the remote outcome may still be successful. The pilot should demonstrate how the team resolves that uncertainty through an appropriate query, a safe retry or an operational investigation.
Let the operating team handle an exception
Ask an operator to investigate a delayed payment using the normal staff interface. Give them the access they would have in production.
Can they see the last confirmed event, the source of the status, the amount reserved or posted, and the next permitted action? Can they distinguish a customer cancellation request from a confirmed provider cancellation? Can they hand the case to another team without losing its history?
Then ask someone without the required permission to attempt the same sensitive action. Test the API as well as the visible button. OWASP recommends permission checks on every request; hiding a control in the interface does not establish authorisation. See the OWASP Authorisation Cheat Sheet.
Record any step that requires direct database editing or undocumented developer intervention. Such a step is an implementation task with an owner, not a completed operational workflow.
Measure a complete result
Agree acceptance criteria before measuring. A few useful measures are:
| Measure | How to make the result meaningful |
|---|---|
| Financial correctness | Compare expected postings, fees and balances for every scenario. Every difference needs an explanation. |
| Traceability | Follow each test instruction across customer activity, approval, provider interaction and accounting. |
| Exception handling | Record the steps, permissions and elapsed staff time needed to resolve each seeded issue. |
| Performance | Specify workload, concurrency, data volume and environment. Separate application response time from provider processing time. |
| Recovery | Record what happened before interruption, what resumed and how the final financial state was verified. |
| Integration effort | Separate reusable configuration from new connector work, product changes and manual workarounds. |
Choose performance thresholds from the intended service and its operating conditions. A lightly loaded sandbox result does not establish production capacity. A low average response time can also hide slow requests, so include an agreed percentile, such as the 95th percentile, and the error rate.
Financial correctness, required permissions and safe handling of uncertain outcomes should be decision gates. A weighted feature score can then help compare usability, implementation effort and coverage among configurations that pass those gates.
End with a decision record
Produce a short evidence pack containing the evaluated configuration, ownership map, scenario results, representative transaction traces and unresolved gaps. For every gap, identify its impact, owner and next verification step.
Keep production readiness as a separate, explicit decision. Capacity, operational coverage, security review, recovery arrangements and live-provider readiness may require work beyond a focused pilot. List what remains so that the pilot result can become a credible implementation plan.
The most useful outcome is a clear statement: this configuration supports these operations, under these tested conditions, with these remaining dependencies.
Bastion platform capabilities
Evaluate Bastion around your workflow
Bastion provides modular banking software, including Core Banking & Ledger, Payments & FX and Bank Operations, Reporting & Audit.
Start a Bastion evaluation with the journey you want to improve and the systems you intend to keep. Identify the relevant modules, provider connections and operating roles, then agree a demonstration or pilot scope around that workflow.
Book a live demo and bring one operation you want to examine from beginning to end.