← Back to project catalogue
GP-CS-0QJ6D29Computer ScienceReady

Spring Boot UPI failure and reconciliation simulator

A deterministic Indian payment-failure laboratory for studying idempotency, uncertain outcomes, RBI T+1 and T+5 reversal rules, and reconciliation without moving real money.

Spring Boot UPI failure and reconciliation simulator project visual
GP-CS-0QJ6D29 · Computer Science
  • Java 25
  • Spring Boot 4.1
  • Vue 3.5
  • TypeScript 6
  • PostgreSQL 18
  • RabbitMQ 4.3
  • Nginx 1.31
  • Docker

Project definition

Problem statement

A digital payment request can be accepted by one participant while another response is delayed or lost. Retrying carelessly can create duplicate effects, while treating every timeout as a failure can leave a debit and displayed status inconsistent.

The engineering problem is to represent payer, beneficiary, response, and settlement evidence independently, suppress duplicate financial effects, apply the correct deadline class, and explain why a prepared case succeeds, requires reversal, remains uncertain, or needs manual review.

Project objectives

  • Model selected Indian payment-failure states with synthetic records and integer paise.
  • Prevent a duplicate operation identifier from applying the same debit or credit twice.
  • Preserve delayed, missing, duplicate, contradictory, and out-of-order evidence in a readable timeline.
  • Apply the prepared RBI T+1 transfer and T+5 merchant-payment deadline rules.
  • Compare expected and observed state and finding sets across repeated deterministic trials.

Project structure

Project components

01

Scenario catalogue

Defines ten immutable synthetic scenarios with payment class, amount, ordered actions, expected state, and expected findings.

02

Simulation engine

Applies debit, credit, response, decline, reversal, settlement, merchant, duplicate, and time-advance actions to a fresh run context.

03

Reconciliation engine

Compares participant effects, response evidence, duplicate suppression, logical day, and settlement amount to produce named findings and a decision.

04

Run store

Persists complete synthetic results and timeline JSON in PostgreSQL through parameterised JDBC operations.

05

Audit path

Publishes a simulation-completed event to RabbitMQ and records receipt through a local consumer.

06

Evidence interface

Vue presents the catalogue, prepared sequence, returned event trace, record deltas, findings, and repeated evaluation.

Methodology

Project workflow

  1. 01
    Select a prepared scenario

    The student chooses one of ten documented transaction paths and reviews its ordered event sequence.

  2. 02
    Execute the events

    The engine applies each action once per operation identifier and records whether the attempt changed state.

  3. 03
    Reconcile the records

    The project evaluates payer and beneficiary deltas, response state, elapsed logical day, duplicate count, and settlement amount.

  4. 04
    Store and publish

    The completed result is stored in PostgreSQL and an audit event is sent through RabbitMQ.

  5. 05
    Evaluate the oracle

    Observed state and findings are compared exactly with the scenario declaration across thirty trials.

Demonstration scenario

A synthetic Rs 500.00 transfer debits the payer and credits the beneficiary, but the payer-facing success response is absent. A duplicate operation attempt is retained as suppressed rather than applying a second financial effect. The final view distinguishes response uncertainty from the participant balance effects and shows the complete event trace.

Engineering

Tools and method

Application core
Java records and services separate immutable scenario definitions, mutable run context, event application, reconciliation, and evaluation.
HTTP boundary
Spring Boot exposes a small versioned API with validation, bounded bodies, and no arbitrary event-program input.
Persistence and audit
PostgreSQL retains complete run evidence while RabbitMQ demonstrates an asynchronous completion-audit path.
Interface
Vue and TypeScript present a three-column engineering laboratory behind an unprivileged Nginx reverse proxy.
Reproducibility
Digest-pinned containers, locked packages, tests, retained JSON and CSV, and a documentation builder support repeatable study.
Isolation
All published service ports bind to localhost and no component connects to NPCI, a bank, a merchant, or a live payment endpoint.

Testing

Evaluation

Evaluation measures

  • Exact expected-state and finding-set agreement across ten prepared scenarios
  • Thirty deterministic trials per scenario and 300 trials in total
  • 300 correct classifications and prepared classification accuracy of 1.0
  • Separate median and P95 in-process timing for every scenario
  • Unit, API, persistence, messaging, Vue build, container, and security checks
  • Explicit exclusion of HTTP, storage, broker, browser, network, and real UPI performance from timing claims

Project boundaries

  • The project is a classroom simulator and does not connect to UPI, NPCI, banks, or real accounts.
  • It stores only synthetic run evidence and does not collect UPI PINs, account details, customer data, buyer details, or student information.
  • The T+1 and T+5 logic uses simplified whole logical days and a public RBI source.
  • The 300-run result evaluates only the deterministic prepared model and does not certify a production payment system or describe real UPI performance.

Included

  1. 01Deterministic transaction state and reconciliation engines
  2. 02Ten prepared success, timeout, duplicate, reversal, ordering, merchant, and settlement scenarios
  3. 03PostgreSQL run history and RabbitMQ audit-event integration
  4. 04Vue evidence interface with scenario, timeline, record, finding, and evaluation views
  5. 05300-run retained evaluation with exact expected-result comparison
  6. 06Complete source code in a private GitHub repository
  7. 0782-page project documentation in PDF and editable Word formats
  8. 0811-page setup and usage guide in PDF and editable Word formats

Project record

No information is collected on this page.

Permanent project ID
GP-CS-0QJ6D29
Catalogued
21 Aug 2026
Completed
23 Aug 2026
Verified
23 Aug 2026
Demonstration
Included in repository

Handover

After purchase

  1. 01
    Payment is confirmed

    The project is marked unavailable and cannot be purchased again.

  2. 02
    Repository access is granted

    The buyer's submitted GitHub account receives access to the private repository.

  3. 03
    The purchase record is delivered

    The certification sheet is prepared from the reviewed buyer details and sent privately by email.