In today’s financial landscape, we witness an evident technological dichotomy: on one side, fintech platforms like TuttoSemplice.com offer responsive user interfaces and cloud-based microservices architectures; on the other, credit giants still rely on monolithic Core Banking infrastructures, often dating back to the 80s or 90s. Banking systems integration is therefore not just a matter of connecting two APIs, but represents a true challenge of cultural and technological translation between two distinct computing eras.
For a CTO or Solution Architect, the task is to bridge the gap between the modern user’s expectation of immediacy and the batch processing times of traditional banks. This article explores the architectural patterns necessary to build robust, secure, and scalable bridges, preventing the rigidity of legacy systems from compromising the agility of the fintech product.
The Protocol Paradox: REST vs SOAP and Mainframe
The first barrier in integration is the misalignment of communication protocols. While fintechs operate natively with RESTful architectures and lightweight JSON payloads, legacy banking systems often expose SOAP interfaces based on complex XML or, in extreme cases, require the exchange of positional files (flat files) via SFTP.
According to the principles of Domain-Driven Design (DDD), the correct approach to manage this friction is not to adapt the fintech domain model to that of the bank, but to implement an Anti-Corruption Layer (ACL). This intermediate layer acts as a bidirectional translator:
- Inbound: Receives clean JSON requests from the fintech frontend and converts them into SOAP envelopes or positional records compliant with banking specifications (e.g., CBI layouts).
- Outbound: Intercepts raw responses from the bank, filters cryptic mainframe error codes, and returns readable and normalized statuses to the modern system.
Using an ACL isolates the heart of the fintech platform from the idiosyncrasies of the banking system. If the bank changes a field in its XML layout, the modification impacts only the ACL, leaving the rest of the microservices architecture intact.
Latency Management and Eventual Consistency

A common mistake in banking systems integration is treating transactions as if they were atomic and synchronous. In reality, many banking operations (such as mortgage approval or an interbank transfer) are not instant. Core Banking Systems often process requests in batch mode during nightly windows.
In this distributed scenario, data consistency is not immediate (ACID), but eventual (BASE). To manage this asynchrony without blocking the user, it is necessary to decouple the request from the processing:
- The fintech sends the request and receives a technical ACK (Acknowledge) from the bank (e.g., HTTP 202 Accepted).
- The user sees a “Processing” status.
- The system must then reconcile the actual status at a later time.
Synchronization Strategies: Polling vs Webhooks


How do we know when the bank has actually completed the operation? There are two main approaches, the choice of which depends on the technological capabilities of the partner institution.
1. Intelligent Polling (Exponential Backoff)
If the bank does not support push notifications, the fintech must periodically query the status of the file. However, aggressive polling (e.g., every second) can be interpreted by banking firewalls as a DDoS attack or overload legacy systems. The best practice is to implement an Exponential Backoff algorithm: start checking after 1 minute, then 5, then 15, reducing the frequency as time passes without status changes.
2. Webhooks and Callbacks
The ideal solution, where available, is the use of Webhooks. The bank sends an HTTP POST notification to a secure fintech endpoint as soon as the status changes. This reduces network traffic and ensures near real-time updates. However, it is crucial to implement idempotency mechanisms: if the bank mistakenly sends the same “Transfer Executed” webhook twice, the fintech system must be able to discard the duplicate to avoid double charges.
Case Study: Mortgage Application Management
Let’s analyze a practical integration case for a mortgage application on TuttoSemplice.com. The flow involves transmitting personal data and PDF documents to a traditional credit institution.
The process follows these technical steps:
- Upload and Validation: The user uploads the documents. The fintech system validates the metadata.
- XML Marshalling: The ACL converts JSON data into an XML payload compliant with the bank’s standard (often based on very rigid XSD schemas). PDFs are converted into Base64 strings within the XML or sent as MTOM/XOP attachments.
- Asynchronous Sending: The request is placed in a queue (e.g., RabbitMQ or Kafka) to ensure resilience. If the bank’s SOAP service is down, the message is not lost but retried (Retry Pattern).
- Reconciliation: Since the mortgage investigation lasts days, the system queries a status endpoint every 24 hours or waits for a positional result file deposited on a secure SFTP server.
In this context, error management is critical. A “Generic” error from the mainframe must be mapped by the ACL into an actionable message for the support team (e.g., “Tax Code not aligned in Tax Registry”), preventing the application from remaining in a technical limbo.
In Brief (TL;DR)
Effective integration between fintech and banks requires bridging the gap between cloud architectures and legacy systems.
Adopting an Anti-Corruption Layer isolates modern microservices by translating the complex protocols of traditional banking infrastructures.
Managing asynchrony via polling or webhooks is fundamental to reconciling digital immediacy with batch processing times.
Conclusions

Banking systems integration requires a pragmatic approach that balances innovation with historical constraints. There is no single solution, but the rigorous application of patterns such as the Anti-Corruption Layer, asynchronous transaction management, and intelligent polling strategies allows for building modern fintech products even on top of legacy foundations. The key to success lies not in forcing the bank to modernize instantly, but in building a resilient architecture capable of absorbing complexity, offering the end user that fluid and transparent experience that the market demands today.
Frequently Asked Questions

Integration requires bridging the gap between modern RESTful architectures and Core Banking systems based on mainframes and SOAP protocols. The best strategy is to implement an Anti-Corruption Layer that acts as a bidirectional translator. This intermediate layer converts JSON requests into bank-compatible formats, such as XML or positional files, and normalizes outgoing responses, isolating the fintech business logic from the technical complexities of dated systems.
In the context of Domain-Driven Design, an ACL is fundamental to protect the domain model of a fintech platform from the rigidities of legacy systems. Its main function is to decouple the two environments: if the bank modifies a layout or a protocol, the impact is limited to this translation layer without compromising the microservices architecture. Furthermore, the ACL manages the cleaning of cryptic error codes coming from mainframes, returning readable statuses to the frontend.
Since many banking operations are not instant but follow nightly batch logic, it is necessary to adopt an eventual consistency model (BASE) rather than immediate (ACID). The technical solution involves decoupling the request from processing: the system sends an immediate technical acknowledgment to the user, displaying a waiting status, and reconciles the real status only later, ensuring that the interface remains responsive despite the long times of the banking backend.
The choice depends on the technological capabilities of the partner institution. Webhooks represent the ideal solution as the bank actively notifies the fintech upon status change, reducing network traffic and ensuring near real-time updates. If unavailable, one resorts to Polling, which must be implemented with Exponential Backoff algorithms to avoid overloading legacy systems, reducing the frequency of queries as time passes.
The main challenges concern protocol misalignment, such as the conversion between JSON and complex SOAP XML, and resilience management. It is crucial to implement retry mechanisms to handle banking service downtimes and ensure idempotency to avoid duplications, especially when receiving multiple payment confirmations. Additionally, managing binary files like PDFs requires specific conversions, for example in Base64 or via MTOM attachments, within often rigid flows.
Still have doubts about Banking Systems Integration: Fintech and Legacy Patterns?
Type your specific question here to instantly find the official reply from Google.





Did you find this article helpful? Is there another topic you’d like to see me cover?
Write it in the comments below! I take inspiration directly from your suggestions.