Skip to content
Portrait of Alonso Sandoval Alonso Sandoval
2025 Highest Honors (10/10)

SEPA Request-to-Pay prototype (Bachelor’s thesis)

SRTP vs SEPA Direct Debit — end-to-end flow simulation with real-time UI

Bachelor’s final project (capstone) designing and implementing an event-driven SRTP prototype: payment-request creation, routing, payer decision, execution, and closure with live notifications.

Built to make SRTP tangible: a Flask API + WebSocket events + a live web UI that demonstrates the full Request-to-Pay lifecycle and the operational differences versus Direct Debit.

Context

In Europe, SEPA Direct Debit (SDD) remains a common choice for recurring collections, but it is not always ideal for modern digital flows: transparency, payer control, and real-time interaction are limited.

SEPA Request-to-Pay (SRTP) introduces a digital request layer: the beneficiary sends a payment request, and the payer can accept, reject, or defer it in real time—typically leveraging SEPA Instant Credit Transfer (SCT Inst) rails for execution.

SEPA Request-to-Pay (SRTP) scheme flow between payer, payee, and RTP service providers.

High-level SRTP message flow between payer, payee, and their RTP service providers.

What I built

I designed and implemented a functional prototype that simulates the SRTP ecosystem and its core actors:

  • Beneficiary and payer
  • Beneficiary PSP and payer PSP
  • A full request lifecycle: create → validate → route → validate payer → payer decision → close

The backend is structured as an event-driven flow: each state transition emits real-time notifications so every party sees updates immediately.

System overview

  • Backend API (Flask): REST endpoints for each SRTP step plus persistence for actors, requests, and logs.
  • Real-time layer (Socket.IO): room-based notifications per actor/role to model how PSPs and customers receive state changes.
  • Web UI (static frontend): a live interface to log in as different actors and execute the SRTP flow end-to-end.

Why it matters

This project is a hands-on way to understand the operational differences between Direct Debit and Request-to-Pay:

  • clearer payer intent and decision points
  • improved traceability across actors
  • better UX alignment with instant payment rails