TPAP Module - Third Party Application Providers
Overview
The TPAP (Third Party Application Provider) module contains consumer-facing UPI applications that provide payment interfaces to end users. These applications are sponsored by PSP banks and facilitate digital payments through user-friendly interfaces.
Applications
1. BazzarPe (Port: 6001)
Sponsor PSP: Paisa Vasool Bank
PSP URL:
http://paisa-vasool-bank-service:3000/api/v1Focus: Merchant payments & marketplace solutions
VPA Suffix:
@pvb
2. ChillarPay (Port: 6002)
Sponsor PSP: Chinta Mat Karo Bank
PSP URL:
http://chinta-mat-karo-service:3000/api/v1Focus: P2P transfers & micro-payments
VPA Suffix:
@cmk
Architecture
Technology Stack
Runtime: Bun
Framework: Express.js + TypeScript
Database: PostgreSQL with Prisma ORM
Integration: REST API calls to sponsor PSP
Service Dependencies
Dedicated PostgreSQL database
Sponsor PSP bank service
Docker containerization
API Endpoints
Both TPAP applications implement similar REST API structures:
User Management
Create User
Response:
Account Management
Add Bank Account
Response:
Transaction Management
Get All Transactions
Response:
Send Money (Push Transaction)
Response:
Data Models
User Model
Account Model
Transaction Model
Database Configuration
Each TPAP has its own PostgreSQL database:
BazzarPe Database
Host:
bazzar-pe-dbDatabase:
bazzar_pe_dbUser:
bazzar_pe_userPassword:
bazzar_pe_password
ChillarPay Database
Host:
chillar-pay-dbDatabase:
chillar_pay_dbUser:
chillar_pay_userPassword:
chillar_pay_password
Environment Variables
VPA (Virtual Payment Address) System
VPA Format
BazzarPe:
{phone_number}@pvbChillarPay:
{phone_number}@cmk
VPA Resolution
TPAPs resolve VPAs to bank account details through their sponsor PSP banks.
Payment Flow
UPI Transaction Process
User Initiation: User enters recipient VPA and amount
Account Verification: TPAP verifies user's linked bank account
PSP Communication: TPAP sends transaction request to sponsor PSP
NTH Routing: PSP routes transaction through NTH
Destination Processing: Destination PSP processes the transaction
Status Update: Transaction status propagated back to TPAP
User Notification: TPAP notifies user of transaction completion
Transaction States
INITIATED: Transaction request receivedPENDING: Being processed through payment networkCOMPLETE: Successfully completedFAILED: Transaction failed
Integration with PSP Banks
API Communication
TPAPs communicate with sponsor PSPs using REST APIs:
Account Verification
Transaction Processing
Development Setup
Individual TPAP Development
Navigate to TPAP directory:
Install dependencies:
Set up environment:
Run database migrations:
Start development server:
Docker Development
Start specific TPAP service:
View logs:
Testing
Each TPAP includes test suites:
Security Features
Input Validation
Phone number format validation
Email format validation
Amount range validation
VPA format validation
Transaction Security
Duplicate transaction prevention
Rate limiting
Request sanitization
Secure headers
Authentication
User session management
API key validation
Request signing
Error Handling
Standardized error responses:
Common Error Codes
INVALID_VPA: Invalid Virtual Payment AddressINSUFFICIENT_BALANCE: Insufficient account balanceTRANSACTION_FAILED: Transaction processing failedUSER_NOT_FOUND: User account not foundACCOUNT_NOT_LINKED: No linked bank account
Monitoring & Analytics
Transaction Metrics
Daily transaction volume
Success/failure rates
Average transaction amount
User engagement metrics
Performance Monitoring
API response times
Database query performance
Error rates
System resource usage
User Experience Features
Real-time Updates
Transaction status notifications
Balance updates
Payment confirmations
Transaction History
Chronological transaction list
Search and filter capabilities
Export functionality
Account Management
Multiple bank account linking
Account balance display
Profile management
Last updated

