DIGIT Public Finance Management
PlatformDomainsAcademyDesign SystemFeedback
v2.2
v2.2
  • Introducing Public Finance Management (iFIX)
  • Platform
    • Release Notes
      • iFIX Core Release Notes
        • iFIX Core Build Updates
        • iFIX Core Test Cases
      • iFIX Adaptor Release Notes
        • iFIX Adaptor Build Updates
        • iFIX Adaptor Test Cases
    • Specification
      • Functional Specifications
      • Technical Specification
        • Information Model
        • APIs
    • Architecture
      • Technology
    • Services
    • Setup
      • iFIX Service Setup
      • Infrastructure Setup
        • Quickstart/Local Setup
        • On AWS
        • On Azure
      • Deploy Services
        • Deploy from your local machine
        • CI/CD
      • API Access Key
    • Configuration
      • Core Service Documents
        • Master Data Setup
          • Domain Services
            • iFIX Core Master Data Service
            • iFIX Core Fiscal Event Service
            • iFIX Core Fiscal Event Post-Processor
        • iFIX Core Data Cleanup
        • iFix Department Entity Service
        • iFix Client Management Service
          • Keycloak Setup
      • Configuring Master Data
      • Promotion Docs
        • Master Data Service Promotion Doc
        • mGramSeva iFIX Adapter
        • Department Entity Service Promotion
        • Fiscal Event And Fiscal Event Post-processor Service Promotion
        • MongoDB Migration
  • Products
    • mGramSeva
      • Functionalities
        • Login and Forgot Password
        • User Roles and Home Screen
        • Create Consumer
        • Search Consumer
        • Edit Consumer
        • View Consumer
        • Billing - Bulk Demand Generation
        • Billing - Metered Connection
        • Revenue Collection - Offline
        • Expenditure - Add Expense
        • Expenditure - Modify Expense
        • User Onboarding - Bulk Upload
        • User Onboarding/Walkthrough
        • Feedback - Post Payment
        • SMS Notifications
        • Home Page Notifications
        • Edit User Profile
        • Bill and Receipt PDF
        • Update Expense Search
        • Bulk Demand Generation for Non Metered
        • Demand/Bill Generation for Metered Connection
        • Household Register
        • Tabular Dashboard - Expense
        • Tabular Dashboard - Collection
        • Download Bills and Receipt
      • Architecture
        • Technology
      • Source Code
      • Documents
        • User Manual
        • Demo video
        • UI Mockups
        • mGramSeva UI
          • Application Permissions & Dependencies
        • Tech User Manual
          • Language Selection
          • Login
          • Update Password FTL
          • Forgot Password
          • Home
          • Edit Profile
          • Change Password
          • Generate Bill
          • Search Connection
          • Consumer Details
            • Create Consumer
            • Update Consumer
          • Expenses
            • Add Expenses
            • Search Expense Bills
            • Modify Expenses
          • Dashboard
            • Monthly Dashboard
            • Collections Dashboard
            • Expenditure Dashboard
          • Collect Payment
          • Consumer Feedback
          • Household Register
          • Bluetooth Thermal Printer Integration
          • Application Structure
        • Application Structure
        • Integration Testing
        • Integration Testing With Github Actions
        • Firebase Analytics Integration
        • Backend Services
          • mGramSeva - Water Services
          • mGramSeva - Water Service Calculator
          • mGramSeva e-Challan Service
          • mGramSeva - User Service
          • mGramSeva - Billing Service
          • mGramSeva - User OTP
          • iFix Adapter Integration Service
          • mGramSeva - Rollout Dashboard
          • mGramSeva Scheduler
          • mGramSeva- Services Re-Indexing
          • mGramSeva Dashboard
    • iFIX Adapter
      • Adapter Service Documents
        • iFIX Adapter Master Data Setup
        • mGramSeva iFIX Adapter Service
        • iFIX Adapter Master Data Service
        • iFix Adapter Services
      • Source Code
      • Installation
        • Local Setup
        • CI/CD
    • iFIX Dashboard
      • Features
      • Architecture
        • Technology
      • Source Code
      • Installation
        • Local Setup
        • CI/CD
      • Documents
        • iFIX Reference Dashboard
          • iFIX Fiscal Event Aggregator
  • Community
    • Ecosystem
      • News and Events
    • Roadmap
    • PFM Blogs
      • Why PFM Needs Fiscal Information Exchange Standards
    • Source Code
    • Discussions
    • Issues
Powered by GitBook

All content on this page by eGov Foundation is licensed under a Creative Commons Attribution 4.0 International License.

On this page
  • Overview
  • Pre-requisites
  • Key Functionalities
  • Deployment Details
  • Configuration Details
  • MDMS
  • Integration
  • Integration Scope
  • Integration Benefits
  • Steps to Integration
  • Interaction Diagram
  • Reference Docs
  • Doc Links
  • API List
  • Apportioning
  • What is apportioning?
  • Types of apportioning V1.1:
  • Types of apportioning V1.2: (TBD)
  • Principle of Apportioning

Was this helpful?

  1. Products
  2. mGramSeva
  3. Documents
  4. Backend Services

mGramSeva - Billing Service

Overview

The main objective of the billing module is to serve the Bill for all revenue Business services. To serve the Bill, Billing-Service requires demand. Demands will be prepared by Revenue modules and stored by billing based on which it will generate the Bill.

Pre-requisites

  • Prior Knowledge of Java/J2EE.

  • Prior Knowledge of Spring Boot.

  • Prior Knowledge of KAFKA

  • Prior Knowledge of REST APIs and related concepts like path parameters, headers, JSON, etc.

  • Prior knowledge of the demand-based systems.

  • Following services should be up and running:

    • user

    • MDMS

    • Id-Gen

    • URL-Shortening

    • notification-sms

Key Functionalities

  • eGov billing service creates and maintains demands.

  • Generates bills based on demands.

  • push created and updated bill/demand to Kafka on specified topics

  • Updates the demands from payment when the collection service takes a payment.

Deployment Details

  • Deploy the latest image of the billing service available.

Configuration Details

In the MDMS data configuration, the following master data is needed for the functionality of the billing

MDMS

Business Service JSON

{
  "tenantId": "pb",
  "moduleName": "BillingService",
  "BusinessService": [
    {
      "businessService": "EXPENSE.ELECTRICITY_BILL",
      "code": "EXPENSE.ELECTRICITY_BILL",
      "collectionModesNotAllowed": [
        "DD"
      ],
      "partPaymentAllowed": true,
      "isAdvanceAllowed": false,
      "isVoucherCreationEnabled": true,
      "isActive": true,
      "type": "Adhoc"
    },
     {
      "businessService": "EXPENSE.SALARY",
      "code": "EXPENSE.SALARY",
      "collectionModesNotAllowed": [
        "DD"
      ],
      "partPaymentAllowed": true,
      "isAdvanceAllowed": false,
      "isVoucherCreationEnabled": true,
      "isActive": true,
      "type": "Adhoc"
    },
    {
      "businessService": "EXPENSE.OM",
      "code": "EXPENSE.OM",
      "collectionModesNotAllowed": [
        "DD"
      ],
      "partPaymentAllowed": true,
      "isAdvanceAllowed": false,
      "isVoucherCreationEnabled": true,
      "isActive": true,
      "type": "Adhoc"
    },
    {
      "businessService": "EXPENSE.MISC",
      "code": "EXPENSE.MISC",
      "collectionModesNotAllowed": [
        "DD"
      ],
      "partPaymentAllowed": true,
      "isAdvanceAllowed": false,
      "isVoucherCreationEnabled": true,
      "isActive": true,
      "type": "Adhoc"
    },
    {
      "businessService": "ws-services-calculation",
      "code": "WS",
      "collectionModesNotAllowed": [
        "DD",
        "CHEQUE",
        "CARD",
        "OFFLINE_NEFT",
        "OFFLINE_RTGS",
        "POSTAL_ORDER",
        "ONLINE"
      ],
      "partPaymentAllowed": true,
      "isAdvanceAllowed": false,
      "demandUpdateTime": 86400000,
      "isVoucherCreationEnabled": false,
      "billGineiURL" : "egov-searcher/bill-genie/waterbills/_get",
      "isBillAmendmentEnabled":true
    }
  ]
}

TAX-Head JSON

{
  "tenantId": "pb",
  "moduleName": "BillingService",
  "TaxHeadMaster": [
    {
      "category": "CHARGES",
      "service": "EXPENSE.ADVANCE",
      "name": "EXPENSE.ADVANCE_TAX",
      "code": "EXPENSE.ADVANCE_TAX",
      "isDebit": true,
      "isActualDemand": false,
      "order": "1",
      "isRequired": true
    },
    {
      "category": "CHARGES",
      "service": "EXPENSE.ELECTRICITY_BILL",
      "name": "EXPENSE.ELECTRICITY_BILL_TAX",
      "code": "20101",
      "isDebit": true,
      "isActualDemand": false,
      "order": "1",
      "isRequired": true
    },
    {
      "category": "CHARGES",
      "service": "EXPENSE.SALARY",
      "name": "Salary",
      "code": "20201",
      "isDebit": true,
      "isActualDemand": false,
      "order": "1",
      "isRequired": true
    },
    {
      "category": "CHARGES",
      "service": "EXPENSE.OM",
      "name": "O&M",
      "code": "20301",
      "isDebit": true,
      "isActualDemand": false,
      "order": "1",
      "isRequired": true
    },
    {
      "category": "CHARGES",
      "service": "EXPENSE.MISC",
      "name": "MISC",
      "code": "20401",
      "isDebit": true,
      "isActualDemand": false,
      "order": "1",
      "isRequired": true
    },
    {
      "category": "CHARGES",
      "service": "WS",
      "name": "Water Charges",
      "code": "10101",
      "isDebit": true,
      "isActualDemand": false,
      "order": "0",
      "isRequired": false,
      "IsBillamend": true
    },
    {
      "category": "CHARGES",
      "service": "WS",
      "name": "Water Charges - Arrears",
      "code": "10102",
      "isDebit": true,
      "isActualDemand": false,
      "order": "0",
      "isRequired": false,
      "IsBillamend": true
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Rebate",
      "code": "WS_TIME_REBATE",
      "isDebit": true,
      "isActualDemand": false,
      "order": "0",
      "isRequired": false,
      "IsBillamend": false
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Interest",
      "code": "WS_TIME_INTEREST",
      "isDebit": false,
      "isActualDemand": true,
      "order": "1",
      "isRequired": false,
      "IsBillamend": true
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Water Cess",
      "code": "WS_WATER_CESS",
      "isDebit": false,
      "isActualDemand": true,
      "order": "2",
      "isRequired": false,
      "IsBillamend": true
    },
    {
      "category": "PENALTY",
      "service": "WS",
      "name": "Penalty",
      "code": "10201",
      "isDebit": false,
      "isActualDemand": true,
      "order": "3",
      "isRequired": false,
      "IsBillamend": true
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Round Off",
      "code": "WS_Round_Off",
      "isDebit": false,
      "isActualDemand": true,
      "order": "4",
      "isRequired": false,
      "IsBillamend": false
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Water adhoc rebate",
      "code": "WS_TIME_ADHOC_REBATE",
      "isDebit": false,
      "isActualDemand": true,
      "order": "5",
      "isRequired": false,
      "IsBillamend": false
    },
    {
      "category": "TAX",
      "service": "WS",
      "name": "Water adhoc penalty",
      "code": "WS_TIME_ADHOC_PENALTY",
      "isDebit": false,
      "isActualDemand": true,
      "order": "6",
      "isRequired": false,
      "IsBillamend": false
    },
    {
      "category": "ADVANCE_COLLECTION",
      "service": "WS",
      "name": "Ws advance carry forward",
      "code": "WS_ADVANCE_CARRYFORWARD",
      "isDebit": true,
      "isActualDemand": false,
      "order": "0",
      "isRequired": false,
      "IsBillamend": false
    },
    {
      "category": "CHARGES",
      "service": "WS",
      "name": "Water Amendment Charges",
      "code": "WS_AMENDMENT_CHARGES",
      "isDebit": true,
      "isActualDemand": false,
      "order": "3",
      "isRequired": false,
      "IsBillamend": true
    }
  ]
}

Tax-Period JSON

{
  "tenantId": "pb",
  "moduleName": "BillingService",
  "TaxPeriod": [
    {
      "fromDate": 1554076799000,
      "toDate": 1585679399000,
      "periodCycle": "ANNUAL",
      "service": "PT",
      "code": "PTAN2019",
      "financialYear": "2019-20"
    },
    {
      "fromDate": 1522540800000,
      "toDate": 1554076799000,
      "periodCycle": "ANNUAL",
      "service": "PT",
      "code": "PTAN2018",
      "financialYear": "2018-19"
    },
    {
      "fromDate": 1491004800000,
      "toDate": 1522540798000,
      "periodCycle": "ANNUAL",
      "service": "PT",
      "code": "PTAN2017",
      "financialYear": "2017-18"
    },
    {
      "fromDate": 1459468800000,
      "toDate": 1491004799000,
      "periodCycle": "ANNUAL",
      "service": "PT",
      "code": "PTAN2016",
      "financialYear": "2016-17"
    },
    {
      "fromDate": 1522540800000,
      "toDate": 1554076799000,
      "periodCycle": "ANNUAL",
      "service": "TL",
      "code": "TLAN2018",
      "financialYear": "2018-19"
    }
  ]
}

bs.businesscode.demand.updateurl

{

Each module’s application calculator should provide its own update URL. if not present then new bill will be generated without making any changes to the demand.

bs.bill.billnumber.format

BILLNO-{module}-[SEQ_egbs_billnumber{tenantid}]

IdGen format for bill number

bs.amendment.idbs.bill.billnumber.format

BILLNO-{module}-[SEQ_egbs_billnumber{tenantid}]

is.amendment.workflow.enabled

true/false

enable disable workflow of bill amendment

kafka.mgramseva.create.demand

mgramseva-create-demand

topic name to push demand created, to be consumed by mgramseva adaptor

kafka.mgramseva.update.demand

mgramseva-update-demand

topic name to push demand updated, to be consumed mgram sevaadaptor

kafka.mgramseva.create.bill

mgramseva-create-bill

topic name to push bill created, to be consumed mgram seva

kafka.mgramseva.update.bill

mgramseva-update-bill

topic name to push bill updated, to be consumed mgram seva

Integration

Integration Scope

Billing service can be integrated with any organization or system that wants a demand-based payment system.

Integration Benefits

  • Easy to create and simple process of generating bills from demands

  • The amalgamation of bills period-wise for a single entity like Water connection.

  • Amendment of bills in case of legal requirements.

Steps to Integration

  1. Customers can create a demand using the /demand/_create

  2. Organizations or Systems can search the demand using /demand/_searchendpoint

  3. Once the demand is raised the system can call /demand/_update endpoint to update the demand as per need.

  4. Bills can be generated using, which is a self-managing API that generates a new bill only when the old one expires /bill/_fetchbill.

  5. Bills can be searched using /bill/_search.

  6. Amendment facility can be used in case of a legal issue to add values to existing demands using /amendment/_create and /amendment/_update can be used to cancel the created ones or update workflow if configured.

Interaction Diagram

Interaction Diagram V1.1

Reference Docs

Doc Links

Title

Link

Id-Gen service

url-shortening

MDMS

API List

Title

Link

/demand/_create, _update, _search

/bill/_fetchbill, _search

/amendment/_create, _update

Apportioning

What is apportioning?

Adjusting the receivable amount with the individual tax head.

Types of apportioning V1.1:

Default order based apportioning(Based on apportioning order adjust the received amount with each tax head).V1.1

Types of apportioning V1.2: (TBD)

  • Proportionate based apportioning (Adjust total receivable with all the tax head equally)

  • Order & Percentage based apportioning(Adjust total receivable based on order and the percentage which is defined for each tax head).

Principle of Apportioning

The basic principle of apportioning is, if the full amount is paid for any bill then each individual tax head should get nullify with their corresponding adjusted amount.

Example: Case 1: When there are no arrears all tax heads belong to their current purpose:

TaxHead

Amount

Order

Full Payment(2000)

Partial Payment1(1500)

Partial payment2(750)

Partial payment2 with rebate(500)

WS_CHARGE

1000

6

1000

1000

750

750

AdjustedAmt

1000

-250

-750

-750

RemainingAMTfromPayableAMT

0

0

0

0

Penality

500

5

500

500

AdjustedAmt

500

-500

RemainingAMTfromPayableAMT

1000

250

Interest

500

4

500

500

AdjustedAmt

500

-500

RemainingAMTfromPayableAMT

1500

750

Cess

500

3

500

500

AdjustedAmt

500

-500

RemainingAMTfromPayableAMT

2000

1250

Exm

-250

1

-250

-250

AdjustedAmt

-250

250

RemainingAMTfromPayableAMT

2250

1750

Rebate

-250

2

-250

-250

AdjustedAmt

-250

250

RemainingAMTfromPayableAMT

2500

750

Case 2: Apportioning with two years of arrear: If the current financial year is 2014-15. Below are the demands

TaxHead

Amount

TaxPeriodFrom

TaxPeriodTo

Order

Purpose

WS_CHARGE

1000

2014

2015

6

Current

AdjustedAmt

0

Penality

500

2014

2015

5

Current

AdjustedAmt

0

Interest

500

2014

2015

4

Current

AdjustedAmt

0

Cess

500

2014

2015

3

Current

AdjustedAmt

0

Exm

-250

2014

2015

1

Current

AdjustedAmt

0

if any payment is not done, and we generating demand in 2015-16 then the demand structure will as follows:

TaxHead

Amount

TaxPeriodFrom

TaxPeriodTo

Order

Purpose

WS_CHARGE

1000

2014

2015

6

Arrear

AdjustedAmt

0

WS_CHARGE

1500

2015

2016

6

Current

AdjustedAmt

0

Penality

600

2014

2015

5

Arrear

AdjustedAmt

0

Penalty

500

2015

2016

5

Current

AdjustedAmt

0

Interest

500

2014

4

Arrear

AdjustedAmt

0

Cess

500

2014

3

Arrear

AdjustedAmt

0

Exm

-250

2014

1

Arrear

AdjustedAmt

0

PreviousmGramSeva - User ServiceNextmGramSeva - User OTP

Last updated 2 years ago

Was this helpful?

"WS":"

All content on this page by is licensed under a .

http://ws-calculator:8080/ws-calculator/waterCalculator/_updatedemand",
"TL":""
}
https://www.getpostman.com/collections/900d99a85d083fb2d377
https://www.getpostman.com/collections/900d99a85d083fb2d377
https://www.getpostman.com/collections/b195d3b1d354c767b6bd
​
eGov Foundation
Creative Commons Attribution 4.0 International License
Creative Commons License