UPI Transaction Parser
A lightweight Dart package for parsing UPI transaction SMS messages into structured transaction objects.
The package extracts transaction amount, merchant information, transaction type (income/expense), and spending category from raw UPI SMS messages using pattern matching and keyword detection.
Perfect for expense trackers, personal finance applications, transaction analyzers, and financial dashboards.
Features
Transaction amount extraction
Income / Expense detection
Merchant identification
Automatic spending categorization
UPI ID fallback detection
JSON serialization support
Pure Dart implementation
Getting Started
1. Add the dependency
dependencies:
upi_transaction_parser: ^0.0.1
2. Install dependencies
flutter pub get
Usage
Import the package
import 'package:upi_transaction_parser/upi_transaction_parser.dart';
Parse a transaction message
final transaction = UpiParser.parse(
'Paid Rs. 250 to Swiggy via UPI',
DateTime.now(),
);
print(transaction);
Output
UpiTransaction(
amount: 250.0,
merchant: Swiggy,
type: expense,
category: Food & Dining
)
Expense Transaction Example
final transaction = UpiParser.parse(
'Paid Rs. 499 to Amazon via UPI',
DateTime.now(),
);
print(transaction?.merchant);
print(transaction?.category);
Output:
Amazon
Shopping
Income Transaction Example
final transaction = UpiParser.parse(
'Received Rs. 5000 from Rahul',
DateTime.now(),
);
print(transaction?.type);
print(transaction?.category);
Output:
TransactionType.income
Income
Supported Message Formats
The parser supports common UPI and banking transaction formats such as:
Paid Rs. 250 to Swiggy via UPI
Received Rs. 500 from Rahul
INR 1,200 debited from account
₹999 transferred to Amazon
Rs. 350 credited to your account
Sent Rs. 150 to abc@ybl
Transaction Model
The parser returns a structured UpiTransaction object.
class UpiTransaction {
final double amount;
final String merchant;
final TransactionType type;
final DateTime date;
final String category;
final String rawMessage;
}
Transaction Type
enum TransactionType {
income,
expense,
}
JSON Serialization
Convert transaction to JSON
final json = transaction.toJson();
Example Output:
{
"amount": 250.0,
"merchant": "Swiggy",
"type": "expense",
"date": "2025-06-06T12:00:00.000",
"category": "Food & Dining",
"rawMessage": "Paid Rs. 250 to Swiggy via UPI"
}
Restore transaction from JSON
final transaction =
UpiTransaction.fromJson(json);
Components
UpiParser
Main parser engine responsible for:
- Amount extraction
- Merchant extraction
- Transaction type detection
- Category detection
UpiTransaction
Structured model representing a parsed transaction.
TransactionType
Enum representing transaction type.
TransactionType.income
TransactionType.expense
Package Structure
lib/
├── upi_transaction_parser.dart
└── src/
├── parser_engine.dart
├── transaction_model.dart
└── transaction_type.dart
License
MIT License