Airtel CMS Integration Guide
Cash Management System (CMS) Overview
What is CMS Service?
Cash Management System (CMS) is a suite of digital banking services designed to help businesses securely and efficiently manage cash collections, deposits, and settlements.
It simplifies complex financial operations by offering real-time visibility, faster reconciliations, and automated payment flows — ensuring optimized liquidity and smoother fund movement between customers, branches, and business partners.
How CMS Services Work
CMS operates through an integrated digital platform that connects collection points, payment gateways, and settlement accounts. The process typically follows these steps:
- Collection Setup – Businesses register their collection points, virtual accounts, or agents.
- Cash Deposit / Collection – Retailers or agents deposit cash at designated collection centers or partner banks.
- Instant Reconciliation – Each deposit is automatically mapped to the correct customer or transaction using unique reference IDs.
- Settlement Processing – Collected funds are transferred to the company’s main account.
- Reporting & Analytics – Businesses can access real-time dashboards for tracking collections, deposits, and settlements.
By integrating CMS APIs, companies can automate their entire cash management lifecycle, reducing manual errors and ensuring faster fund availability.
Key Features & Benefits
- Real-Time Reconciliation – Automatically map deposits and collections to specific customers or invoices.
- Multi-Channel Cash Collection – Accept deposits through retailers, collection points, and partner banks.
- Automated Settlements – Enable direct settlement into the business’s central account.
- Comprehensive Reporting – Access detailed reports on all cash transactions and settlements.
- Reduced Operational Risk – Minimize manual handling of funds through secure digital workflows.
- Scalable Architecture – Designed to handle large transaction volumes efficiently.
- Improved Liquidity Management – Ensure timely fund availability for business operations.
Why Choose NOBLE API’s for CMS Services?
- Rapid Deployment – Launch your CMS-enabled solutions quickly with plug-and-play APIs.
- Unified API Architecture – Standardized and consistent APIs simplify integration across systems.
- Smart Data Insights – Access detailed analytics to make informed business and treasury decisions.
- High Scalability – Handle growing transaction volumes with robust infrastructure support.
- Bank-Grade Security & Compliance – Adhering to strict financial standards ensures every transaction is safe and verified.
- Guaranteed Uptime & Reliability – Enjoy 24/7 uninterrupted operations backed by enterprise-grade stability.
AIRTEL CMS
Airtel CMS Overview
Airtel CMS (Cash Management System) is a service provided by Airtel Payments Bank that enables businesses and retailers to collect, deposit, and settle funds securely through an integrated online platform.
The Airtel CMS flow follows a 4-step transaction process, where each step must be executed in order to ensure successful payment collection and settlement:
┌─────────────────────────────────┐
│ Step 1: Start Transaction │
│ POST /api/v1/cms/airtel/start │
└────────────────┬────────────────┘
│ Returns redirectionUrl
▼
┌─────────────────────────────────┐
│ Step 2: Enter Details & OTP │
│ (Airtel Bank Redirection UI) │
└────────────────┬────────────────┘
│ Submits form & OTP
▼
┌─────────────────────────────────┐
│ Step 3: OTP Verification & │
│ Balance Check (Webhook 1 & 2) │
└────────────────┬────────────────┘
│ APB processes txn
▼
┌─────────────────────────────────┐
│ Step 4: Transaction Posting │
│ (Final Webhook Callback) │
└─────────────────────────────────┘
CMS 4-Step Process (Sequential Flow)
- Start Transaction – Initiate the cash collection process using the
/api/v1/cms/airtel/startendpoint. This API redirects the user to the official Airtel Bank payment page (redirectionUrl) for completing the transaction. - Enter Details & Generate OTP – On the Airtel page, the user enters Biller Name, Mobile Number, and Amount, then submits the form. The system responds with "OTP sent Successfully" to the provided mobile number.
- OTP Verification & Balance Check – The user enters the received OTP on the Airtel page.
Upon successful verification, the system validates the account and confirms "OTP verification successful". In the background, Airtel sends
balance_checkandbalance_check_debitwebhook callbacks. - Transaction Posting – Once verification is complete, the transaction is processed, and the posting activity is marked as completed (
transaction_post). A response is then sent back to the client via the provided callback URL.
Zero Surcharge & Retailer Commission Engine
- Zero Surcharge: Retailers and customers are NOT charged any extra surcharge on CMS collections.
- Retailer Commission: The retailer earns commission per successful collection (either flat ₹ or a percentage, configured in Admin Portal under CMS Management → CMS Settings). Commission is instantly credited to the user's primary wallet upon successful transaction posting.
- Instant Auto-Refund: If any transaction fails downstream with Airtel Bank after wallet debit, our auto-refund engine immediately restores 100% of the debited balance to the user's wallet with status
REFUNDED.
Errors and Response Codes
1. CMS API Error Codes (Client Side & API Authentication Errors)
| Status | StatusCode | Message | Description |
|---|---|---|---|
| 0 | IR0001 |
Invalid Request | Malformed or invalid request body. Check syntax and required fields. |
| 0 | PM0002 |
Parameter Missing | {Value} parameter is missing. |
| 0 | VF0003 |
Validation Failed | {Value} is required. |
| 0 | IE0004 |
Invalid Api Endpoint | Invalid Api Endpoint. |
| 0 | IC0007 |
Invalid Credentials | Authentication failed. |
| -1 | SE0006 |
Internal Server Error | Server is down. Please try again later. |
| 0 | AE0021 |
Invalid Header | Header validation failed. |
| 0 | AE0022 |
Authentication Error | Rate limit exceeded. Please try again later. |
| 0 | AE0023 |
Authentication Error | Required headers are missing. |
| 0 | AE0024 |
Authentication Error | Invalid timestamp format (must be yyyy-MM-ddTHH:mm:ss). |
| 0 | AE0025 |
Authentication Error | Unsupported content type in header. Only 'application/json' is allowed. |
| 0 | AE0026 |
Authentication Error | Header Token is invalid or inactive. |
| 0 | AE0027 |
Authentication Error | Header token has expired. |
| 0 | AE0028 |
Authentication Error | IP address not allowed. |
| 0 | AE0029 |
Authentication Error | This endpoint is not allowed for the client. |
| 0 | AE0030 |
Authentication Error | Request timed out or timestamp is invalid. |
2. CMS API Error Codes (CMS Transaction Errors)
| Status | StatusCode | Message | Description |
|---|---|---|---|
| 1 | AC0001 |
Success | Success Message |
| 0 | AC0002 |
Failed | Failed Message |
| -1 | AC0003 |
Error | Error Message |
2.1 System Defined Status Code for the Reason of Failure (APB Codes)
| Status Code | Description |
|---|---|
APB_000 |
It is the ideal success code in all scenarios. |
APB_001 |
Form Data not found (Biller is not configured in the system). |
APB_002 |
Insufficient balance in account, please add funds and try again. |
APB_004 |
Amount cannot be credited as account exceeds maximum balance limit. |
APB_005 |
Similar transaction has already been fired. |
APB_006 |
There is a credit freeze on the account, please ask beneficiary to contact the bank. |
APB_009 |
Sorry! Invalid Debit Account Details. |
APB_010 |
Either debit or credit account is closed. |
APB_011 |
Sorry! Transaction could not be processed as Credit account is blocked. |
APB_019 |
Sorry! Invalid Credit Account Details. |
APB_030 |
Session expired, please try again. |
APB_031 |
Request Type can't be null. |
APB_032 |
Request Type not supported. |
APB_033 |
Exception occurred while fetching fields details / No data found. |
APB_034 |
Next form mapping not found. |
APB_035 |
Exception occurred. |
APB_036 |
Something went wrong. Please try again in some time. |
APB_037 |
Please enter valid input for required fields. |
APB_038 |
Object cannot be converted into JSON, please check your request. |
APB_039 |
Input/output error while reading the request. |
APB_040 |
We are experiencing some technical issues. Please try again after some time. |
APB_041 |
Success. |
APB_042 |
Transaction not possible since your permissible daily transaction amount has exceeded. |
APB_043 |
Dear depositor, your transaction is pending. In case you have received a success message, deposited amount will be credited against your corresponding ID. |
APB_044 |
Sorry! We are experiencing some technical issues. Please try again. |
APB_111 |
This is the default error code defined in the system, with the proper description like Failure or Partner Not Found or Partner status is inactive. |
APB_112 |
Txn failed. Reason may be due to duplicate one, please change your request and retry. |
APB_113 |
Failure / Data issue. |
APB_121 |
No such transaction exists in our system, please retry. |
APB_122 |
Partner Not Found. |
APB_123 |
Partner status is inactive. |
APB_124 |
Partner ID is either missing or not same in URL and body. |
912 |
Invalid Request. |
APB_182 |
Balance not found for corresponding COD account. |
APB_183 |
Account details not found. |
2.2 Failed & Error Messages (AC0002 & AC0003)
- API balance is not enough to perform CMS
- Client authentication failed (CCN01/CCW01/CCT02)
- Duplicate request found
- Duplicate transaction
- Invalid authentication or account is disabled
- Message + (CCE03) (Client Side Error)
- Message + (NWE01) (DB Error)
- OTP was never sent for this transaction
- Request timed out or partner Transaction ID is invalid
- Request timed out or Transaction ID is invalid
- Service is down from corporate partner. Please contact admin.
- SMS service provider is not responding
- System unable to identify merchant or admin
- Transaction does not belong to NWS
- Transaction not found
- Transaction session expired
Airtel CMS – Client Callback Responses
During the Airtel CMS transaction process, the system sends three types of callback requests to the client’s callback URL:
POST https://api.vizodigital.com/api/v1/cms/airtel/callback
⚠️ Important Implementation Notes
- Valid Callback URL: A valid HTTPS Callback URL is required to receive and handle the final transaction response.
- POST Requests: The callback listener must accept incoming HTTP POST requests containing JSON payloads.
- Response Format: The client must respond in valid JSON format.
- Status Value: The
statusfield accepts only"0"(Fail) or"1"(Success). - String Format: In the JSON request and response, all fields must be strings.
- Timing: For the
transaction_post(Final Callback), callback data is received up to 15 minutes after the transaction. - Client Responsibility: The client is fully responsible for any successful (
status = "1") acknowledgment sent.
Callback 1. Balance Check (action: "balance_check")
Purpose: To verify whether the client/merchant has sufficient balance before initiating a transaction.
Client Receives (Incoming Request):
{
"action": "balance_check",
"merchantId": "123456789",
"amount": "100",
"transactionId": "DEMOTRAN123"
}
Client Response:
{
"status": "1",
"message": "Success"
}
Callback 2. Balance Check Debit (action: "balance_check_debit")
Purpose: Debit the merchant’s account with the specified transaction amount.
Client Receives (Incoming Request):
{
"action": "balance_check_debit",
"merchantId": "123456789",
"amount": "100",
"transactionId": "DEMOTRAN123",
"billerId": "011023",
"billerName": "TEST",
"mobile": "9829098290"
}
Client Response:
{
"status": "1",
"message": "Amount Debit Successful"
}
Callback 3. Transaction Post (Final Callback) (action: "transaction_post")
Purpose: Indicates that the final transaction posting process has been completed.
Client Receives (Incoming Request):
{
"action": "transaction_post",
"merchantId": "3123456789",
"amount": "100",
"transactionId": "DEMOTRAN123",
"billerId": "011023",
"billerName": "TEST",
"utr": "DEMO0101012",
"mobile": "9829098290",
"tranDateTime": "07-10-2024 04:47:01",
"commission": "0.1",
"otherFields": "",
"description": "DEMODEMODEMO 12132123",
"tranStatus": "Success"
}
Client Response:
{
"status": "1",
"message": "Transaction Posting Successful"
}
Note: For the Transaction Post, client callback data will be received within 15 minutes after the transaction completes.
API Endpoint Reference
1. Start Transaction
POST /api/v1/cms/airtel/start
Initiates the cash collection process and returns the secure Airtel Payments Bank redirection URL.
Request Headers
| Header | Required | Data Type | Description | Example |
|---|---|---|---|---|
Authorization |
YES | string |
Sanctum Bearer token | Bearer <Authtoken> |
X-Timestamp |
YES | string |
IST timestamp with 15-second skew (yyyy-MM-ddTHH:mm:ss) |
2024-10-20T21:27:09 |
Content-Type |
YES | string |
Request format | application/json |
Accept |
YES | string |
Response format | application/json |
Request Parameters (JSON Body)
| Parameter | Required | Data Type | Description | Example |
|---|---|---|---|---|
merchantId |
YES | string |
Numeric merchant phone or ID (up to 10 digits). | 9829098290 |
transactionId |
YES | string |
Unique transaction ID between 12 to 25 characters long. | NBSCMS1234567 |
curl --location 'https://api.vizodigital.com/api/v1/cms/airtel/start' \
--header 'Authorization: Bearer <Authtoken>' \
--header 'X-Timestamp: 2024-10-20T21:27:09' \
--header 'Content-Type: application/json' \
--data '{
"merchantId": "9829098290",
"transactionId": "NBSCMS1234567"
}'
Success Response (AC0001)
{
"status": 1,
"statusCode": "AC0001",
"message": "Success",
"description": "Success",
"responseData": [
{
"redirectionUrl": "https://api.airtelpayments.bank.in/RetailerPlugin?param=yy0149d7cb3ee4250c9169d76bd68ec6",
"transactionId": "NBSCMS1234567",
"merchantId": "9829098290"
}
]
}
2. Status Check
POST /api/v1/cms/airtel/status
Retrieves the real-time status of a transaction, bank UTR, and posting details.
Request Headers
| Header | Required | Data Type | Description | Example |
|---|---|---|---|---|
Authorization |
YES | string |
Sanctum Bearer token | Bearer <Authtoken> |
X-Timestamp |
YES | string |
IST timestamp with 15-second skew (yyyy-MM-ddTHH:mm:ss) |
2024-06-27T21:27:09 |
Content-Type |
YES | string |
Request format | application/json |
Accept |
YES | string |
Response format | application/json |
Request Parameters (JSON Body)
| Parameter | Required | Data Type | Description | Example |
|---|---|---|---|---|
transactionId |
YES | string |
Unique transaction identifier between 12 to 25 characters long. | NCMS428F49XXX |
curl --location 'https://api.vizodigital.com/api/v1/cms/airtel/status' \
--header 'Authorization: Bearer <Authtoken>' \
--header 'X-Timestamp: 2024-06-27T21:27:09' \
--header 'Content-Type: application/json' \
--data '{
"transactionId": "NCMS428F49XXX"
}'
Success Response (AC0001)
{
"status": 1,
"statusCode": "AC0001",
"message": "Success",
"description": "",
"responseData": [
{
"merchantId": "34654654",
"amount": "100",
"transactionId": "NCMS428F49XXX",
"billerId": "174540XXX",
"billerName": "Biller Name PRIVATE LIMITED_AGENT",
"mobile": "9829098290",
"tranDateTime": "07-10-2024 16:47:02",
"utr": "PH51007169752XXXX",
"commission": "0.10",
"otherFields": "",
"description": "",
"tranStatus": "Success"
}
]
}