Skip to content

Charging Architecture

Overview

The Charging architecture in TelcoAPI implements both online and offline charging according to 3GPP standards. This document outlines the charging system components and their interactions.

Components

OCS (Online Charging System)

  • Real-time credit control
  • Account balance management
  • Rating and charging
  • Session management

OFCS (Offline Charging System)

  • CDR generation and processing
  • Batch processing
  • Post-processing and aggregation
  • Billing system integration

CTF (Charging Trigger Function)

  • Detects chargeable events
  • Generates charging information
  • Interfaces with OCS/OFCS

Interfaces

Ro Interface

  • Online charging interface
  • Credit control requests/answers
  • Real-time balance updates

Rf Interface

  • Offline charging interface
  • CDR transfer
  • Accounting records

Implementation

interface ChargingSession {
  id: string;
  subscriberId: string;
  sessionType: 'VOICE' | 'DATA' | 'SMS' | 'MMS';
  ratingGroup: number;
  serviceIdentifier: number;
  quotaType: 'TIME' | 'VOLUME' | 'EVENT';
  grantedUnits: number;
  usedUnits: number;
  timestamp: string;
  status: 'ACTIVE' | 'TERMINATED' | 'SUSPENDED';
}

interface CDR {
  id: string;
  recordType: string;
  subscriberId: string;
  chargingId: string;
  nodeId: string;
  recordOpeningTime: string;
  recordClosingTime: string;
  duration: number;
  causeForRecordClosing: string;
  diagnostics?: string;
  serviceSpecificInfo?: Record<string, unknown>;
  recordSequenceNumber: number;
  localSequenceNumber: number;
}

Charging Flows

Online Charging

  1. Initial credit request
  2. Quota reservation
  3. Usage monitoring
  4. Final reporting

Offline Charging

  1. CDR generation
  2. Intermediate storage
  3. CDR aggregation
  4. File transfer to billing

Rating and Tariff

interface RatingRule {
  id: string;
  ratingGroup: number;
  serviceIdentifier: number;
  tariffType: 'PEAK' | 'OFF_PEAK' | 'SPECIAL';
  unitPrice: number;
  currency: string;
  validFrom: string;
  validTo: string;
  priority: number;
}

Error Handling

enum ChargingError {
  QUOTA_EXHAUSTED = 'QUOTA_EXHAUSTED',
  INVALID_RATING = 'INVALID_RATING',
  SYSTEM_ERROR = 'SYSTEM_ERROR',
  ACCOUNT_DISABLED = 'ACCOUNT_DISABLED'
}

interface ChargingErrorResponse {
  error: ChargingError;
  message: string;
  sessionId?: string;
  timestamp: string;
  remainingBalance?: number;
}

Monitoring

Key metrics to monitor: - Credit control success rate - CDR generation rate - Processing latency - Error rates by type - System throughput

Best Practices

  1. Session Management
  2. Implement session recovery
  3. Handle timeouts gracefully
  4. Monitor session state

  5. CDR Handling

  6. Ensure CDR integrity
  7. Implement retry mechanisms
  8. Monitor file transfers

  9. Performance

  10. Cache rating data
  11. Optimize database queries
  12. Monitor system resources

References

  1. 3GPP TS 32.240: Charging architecture and principles
  2. 3GPP TS 32.299: Diameter charging applications
  3. 3GPP TS 32.297: Charging Data Record (CDR) file format and transfer