• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language
  • License
    Other
  • Created over 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A home for the data that powers the PhonePe Pulse website.

PhonePe Pulse - Data

The Indian digital payments story has truly captured the worldโ€™s imagination. From the largest towns to the remotest villages, there is a payments revolution being driven by the penetration of mobile phones, mobile internet and state-of-art payments infrastructure built as Public Goods championed by the central bank and the government. PhonePe started in 2016 and has been a strong beneficiary of the API driven digitisation of payments in India. When we started , we were constantly looking for definitive data sources on digital payments in India without much success. As a way of giving back to the data and developer community, we decided to open the anonymised aggregate data sets that demystify the what, why and how of digital payments in India. Licensed under the CDLA-Permissive-2.0 open data license, the PhonePe Pulse Dataset API is a first of its kind open data initiative in the payments space.

Announcements

๐ŸŒŸ Data for Q4(October, November, December) of 2022 has been added and is available for consumption.

Table of Contents

Goal

Our goal is to share this data with everyone (license below), so that you can build your own understanding, insights and visualization on how digital payments have evolved over the years in India.

Guide

This data has been structured to provide details of following two sections with data cuts on Transactions and Users of PhonePe Pulse - Explore tab.

  1. Aggregated - Aggregated values of various payment categories as shown under Categories section
  2. Map - Total values at the State and District levels.
  3. Top - Totals of top States / Districts /Pin Codes

All the data provided in these folders is of JSON format. For more details on the structure/syntax you can refer to the JSON Structure / Syntax section of the documentation.

Documentation

Folder Structure

Head to the data folder to the find below shown structure. Overall, above mentioned sections data can be found at top level folder structure.

Under each of these sections there are folders for Transactions and Users respectively.

Data for Transactions and Users is grouped under country level within India folder which further grouped the data into each year(for country level data) and there is one folder with name state which groups data for all the available states of India respectively.

Similar to country level data, state level data too grouped into each year. All of these year folders(both at country and state level) have a maximum of four files with names starting from 1 to 4. These numbers represent each quarter in the selected year.

Example: 2021 > 1.json represents data for quarter 1 (Jan, Feb and Mar 2021)

For details on syntax of each of these files, refer to JSON Structure / Syntax.

data
|___ aggregated
    |___ transactions
        |___ country
            |___ india
                |___ 2018
                |    1.json
                |    2.json
                |    3.json
                |    4.json
                
                |___ 2019
                |    ...
                |___ 2019
                |___ state 
                    |___ andaman-&-nicobar-islands
                        |___2018
                        |   1.json
                        |   2.json
                        |   3.json
                        |   4.json

                    |___ andhra-pradesh
                    |    ...
                    |    ...

JSON Structure / Syntax

1. Aggregated

1.1 data/aggregated/transaction/country/india/2018/1.json

Transaction data broken down by type of payment at country level.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for state level too. Ex: data/aggregated/transaction/country/india/state/delhi/2018/1.json

{
    "success": true, //Ignore. For internal use only
    "code": "SUCCESS", //Ignore. For internal use only
    "data": {
        "from": 1514745000000, //Data duration
        "to": 1522175400000,
        "transactionData": [
            {
                "name": "Recharge & bill payments", //Type of payment category
                "paymentInstruments": [
                    {
                        "type": "TOTAL",
                        "count": 72550406, //Total number of transactions for the above payment category
                        "amount": 1.4472713558652578E10 //Total value
                    }
                ]
            },
            
            ...,

            ...,
                        
            {
                "name": "Others",
                "paymentInstruments": [
                    {
                        "type": "TOTAL",
                        "count": 5761576,
                        "amount": 4.643217301269438E9
                    }
                ]
            }
        ]
    },
    "responseTimestamp": 1630346628866 //Ignore. For internal use only.
}
1.2 data/aggregated/user/country/india/2021/1.json

Users data broken down by devices at country level.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for state level too. Ex: data/aggregated/user/country/india/state/delhi/2021/1.json

{
    "success": true, //Ignore. For internal use only.
    "code": "SUCCESS", //Ignore. For internal use only.
    "data": {
        "aggregated": {
            "registeredUsers": 284985430, //Total number of registered users for the selected quarter.
            "appOpens": 8635508502 //Number of app opens by users for the selected quarter
        },
        "usersByDevice": [ //Users by individual device
            {
                "brand": "Xiaomi", //Brand name of the device
                "count": 71553154, //Number of registered users by this brand.
                "percentage": 0.2510765339828075 //Percentage of share of current device type compared to all devices.
            },
            
            ...,

            ...,

            {
                "brand": "Others", //All unrecognized device types grouped here. 
                "count": 23564639, //Number of registered users by all unrecognized device types.
                "percentage": 0.08268717105993804 //Percentage of share of all unrecognized device types compared to overall devices that users are registered with.
            }
        ]
    },
    "responseTimestamp": 1630346630074 //Ignore. For internal use only.
}

2. Map

2.1 data/map/transaction/hover/country/india/2021/1.json

Total number of transactions and total value of all transactions at the state level.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for district level too. Ex: data/map/transaction/hover/country/india/state/delhi/2021/1.json

{
    "success": true, //Ignore. For internal use only.
    "code": "SUCCESS", //Ignore. For internal use only.
    "data": {
        "hoverDataList": [ //Internally, this being used to show state/district level data whenever a user hovers on a particular state/district.
            {
                "name": "puducherry", //State / district name
                "metric": [
                    {
                        "type": "TOTAL", 
                        "count": 3309432, //Total number of transactions done within the selected year-quarter for the current state/district.
                        "amount": 5.899309571743641E9 //Total transaction value within the selected year-quarter for the current state/district.
                    }
                ]
            },

            ...,

            ...,

            {
                "name": "tamil nadu",
                "metric": [
                    {
                        "type": "TOTAL",
                        "count": 136556674,
                        "amount": 2.4866814387365314E11
                    }
                ]
            }            
        ]
    },
    "responseTimestamp": 1630346628834 //Ignore. For internal use only.
}
2.2 data/map/user/hover/country/india/2021/1.json

Total number of registered users and number of app opens by these registered users at the state level.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for district level too. Ex: data/map/user/hover/country/india/state/delhi/2021/1.json

{
    "success": true, //Ignore. For internal use only.
    "code": "SUCCESS", //Ignore. For internal use only.
    "data": {
        "hoverData": { //Internally, this being used to show state/district level data whenever a user hovers on a particular state/district.
            "puducherry": {
                "registeredUsers": 346279, //Total number of registered users for the selected state/district
                "appOpens": 7914507 //Total number of app opens by the registered users for the selected state/district
            },

            ...,

            ...,

            "tamil nadu": {
                "registeredUsers": 16632608,
                "appOpens": 348801714
            }
        }
    },
    "responseTimestamp": 1630346628866 //Ignore. For internal use only.
}

3. Top

3.1 data/top/transaction/country/india/2021/1.json

Top 10 states / districts / pin codes where the most number of the transactions happened for a selected year-quarter combination.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for state level too. The only exception is, it won't have data for states. Ex: data/top/transaction/country/india/state/delhi/2021/1.json

{
    "success": true, //Ignore. For internal use only.
    "code": "SUCCESS", //Ignore. For internal use only.
    "data": {
        "states": [ //List of states where most number of transactions happened along with total value for a selected year-quarter combination.
            {
                "entityName": "karnataka", // State name
                "metric": {
                    "type": "TOTAL",
                    "count": 523797492, //Total number of transactions
                    "amount": 7.549953574123948E11 //Total value of all transactions
                }
            },
            
            ...,
        ],
        "districts": [ //List of districts where most number of transactions happened along with total value for a selected year-quarter combination.
            {
                "entityName": "bengaluru urban", //District name
                "metric": {
                    "type": "TOTAL",
                    "count": 348712787, //Total number of transactions
                    "amount": 4.324013412317671E11 //Total value of all transactions
                }
            },
            
            ...,
        ],
        "pincodes": [ //List of pin codes where most number of transactions happened along with total value for a selected year-quarter combination.
            {
                "entityName": "560001", //Pin code
                "metric": {
                    "type": "TOTAL",
                    "count": 111898471, //Total number of transactions
                    "amount": 1.5427512629157785E11 //Total value of all transactions
                }
            },
            
            ...,
        ]
    },
    "responseTimestamp": 1630346629360 //Ignore. For internal use only.
}
3.2 data/top/user/country/india/2021/1.json

Top 10 states / districts / pin codes where most number of users registered from, for a selected year-quarter combination.

For complete details on syntax find the comments in below code

NOTE: Similar syntax is followed for state level too. The only exception is, it won't have data for states. Ex: data/top/user/country/india/state/delhi/2021/1.json

{
    "success": true, //Ignore. For internal use only.
    "code": "SUCCESS", //Ignore. For internal use only.
    "data": {
        "states": [ //List of states where the most number of users registered from, for a selected year-quarter combination.
            {
                "name": "maharashtra", //State name
                "registeredUsers": 37077537 //Number of registered users
            },
            
            ...,
        ],
        "districts": [ //List of districts where the most number of users registered from, for a selected year-quarter combination.
            {
                "name": "bengaluru urban", //State name
                "registeredUsers": 9955387 //Number of registered users
            },
            
            ...,
        ],
        "pincodes": [ //List of pin codes where most number of users registered from, for a selected year-quarter combination.
            {
                "name": "201301", //Pin code
                "registeredUsers": 541127 //Number of registered users
            },
            
            ...,
        ]
    },
    "responseTimestamp": 1630346630074 //Ignore. For internal use only.
}

FAQs

  1. How frequently data gets updated?
    A: The frequency is once in three months.
  2. How to report a bug or raise a query?
    A: Use GitHub issues to raise a query.

LICENSE

Community Data License Agreement โ€“ Permissive โ€“ Version 2.0

More Repositories

1

mantis

Mantis is a security framework that automates the workflow of discovery, reconnaissance, and vulnerability scanning.
Python
842
star
2

BetterMappable

Better Mappable through Property Wrappers using ObjectMapper
Swift
47
star
3

BGTasks

A wrapper over iOS provided BackgroundTasks framework to ensure smooth onboarding of usecases and handle all the complex functionalities of BackgroundTasks within it.
Swift
40
star
4

Permit

Permit framework provides a universal API for querying the permission status of different kinds of permissions, in an abstracted format with only what the user needs to know.
Swift
34
star
5

drove-orchestrator

Distributed container orchestration system
28
star
6

phonepe-pg-sdk-flutter

Dart
11
star
7

pg-sdk-react-native-sample

Sample App to demonstrate integration of PhonePe PG SDK React Native package.
TypeScript
9
star
8

phonepe-php

PhonePe PHP Merchant Client Library
PHP
9
star
9

babe

Management script for marathon. Named after the lead character in Marathon Man
Python
8
star
10

mustang

Search engine for Rules - Indexing boolean expressions at scale
Java
7
star
11

Batching

An iOS batching library for analytics events.
Swift
6
star
12

drove-cli

Command line client for the Drove Container Orchestrator
Python
4
star
13

phonepe-js-sdk

PhonePe's Your Store Public JS SDK
3
star
14

phonepe-pg-sdk-ionic

A Ionic Sample App to integrate PhonePe PG SDK in your project
TypeScript
3
star
15

PhonePePayment

PhonePe Intent SDK for iOS provides a simple integration that you can use in your iOS application to process your Transactions through the PhonePe ecosystem.
Objective-C
3
star
16

PPDrawableArrow

This library allows you to draw an arrow from a start point to end point with animation
Swift
3
star
17

swift-json

An idiomatic Swift framework for manipulating JSON
Swift
2
star
18

PPAlertViewController

A modern implementation of a highly customizable alert view using UIStackViews
Swift
2
star
19

drove-gateway

A fork of Nixy that helps manage NGinx endpoints to route traffic to Drove clusters
Go
2
star
20

drove

Distributed container orchestrator
Java
2
star
21

mockAppIos

Swift
1
star
22

epoch

A time based container job scheduler for Drove
Java
1
star