Airtel DMT · Airtel DMT Services
Transaction OTP (Step 6)
Generate an OTP to authorize a money transfer.
POST request
URL: https://uat-api.vizodigital.com/api/v1/dmt/airtel/transfers/send-otp
Body
{
"mobileNumber": "9680976136",
"latitude": "12.9715",
"longitude": "77.5945",
"amount": "1000",
"transactionId": "TRF_TXN_999901"
}
Include a valid Bearer token with every request
Code sample
curl --location 'https://api.vizodigital.com/api/v1/dmt/airtel/transfers/send-otp' \
--header 'Authorization: Bearer <YOUR_API_TOKEN>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"mobileNumber": "9680976136",
"latitude": "12.9715",
"longitude": "77.5945",
"amount": "1000",
"transactionId": "TRF_TXN_999901"
}'
Success response
{
"status": 1,
"statusCode": "SS0011",
"message": "Success",
"description": "Success",
"responseData": [
{
"token": "1729df34-256c-4d6d-bce8-a66aa20b62c8",
"tokenType": "VERIFICATION",
"expiresIn": "3600",
"authChallengeURI": "/auth/otp/verify"
}
]
}
Failure response
{
"status": "error",
"message": "Request failed. Check credentials, wallet balance, or validation errors."
}
Overview
Sends an OTP to the customer's mobile number before transfer execution. Returns a verification token needed for Step 7.
Headers
-
Authorization · string required
Sanctum Bearer Token from /api/v1/auth/token
Example: Bearer <YOUR_API_TOKEN>
-
Content-Type · string required
Must be application/json
Example: application/json
-
Accept · string required
Must be application/json
Example: application/json
Body
JSON payload for Transaction OTP (Step 6)
Schema
{
"type": "object",
"required": [
"mobileNumber",
"latitude",
"longitude",
"amount",
"transactionId"
],
"properties": {
"mobileNumber": {
"type": "string",
"description": "Customer 10-digit mobile number."
},
"latitude": {
"type": "string",
"description": "Customer latitude coordinate."
},
"longitude": {
"type": "string",
"description": "Customer longitude coordinate."
},
"amount": {
"type": "string",
"description": "Transfer amount between 100 and 5000."
},
"transactionId": {
"type": "string",
"description": "Unique transaction ID (12 to 25 chars)."
}
}
}
Example
{
"mobileNumber": "9680976136",
"latitude": "12.9715",
"longitude": "77.5945",
"amount": "1000",
"transactionId": "TRF_TXN_999901"
}
Responses
-
200 · application/json default
Transfer OTP sent successfully.
Example
{ "status": 1, "statusCode": "SS0011", "message": "Success", "description": "Success", "responseData": [ { "token": "1729df34-256c-4d6d-bce8-a66aa20b62c8", "tokenType": "VERIFICATION", "expiresIn": "3600", "authChallengeURI": "/auth/otp/verify" } ] }
Errors
-
service_not_enabled · HTTP 403
Airtel DMT service is not activated for your account.
Airtel DMT service is not activated for your account.
{ "status": "error", "code": "service_not_enabled", "message": "Airtel DMT service is not activated for your account." } -
Unauthenticated · HTTP 401
Missing or invalid Bearer API token.
Missing or invalid Bearer API token.
{ "status": "error", "code": "Unauthenticated", "message": "Missing or invalid Bearer API token." } -
validation_error · HTTP 422
Missing or invalid required parameters.
Missing or invalid required parameters.
{ "status": "error", "code": "validation_error", "message": "Missing or invalid required parameters." }
Notes
⏱️ 15-Minute Sequential Flow Window
All requests from Step 1 to Step 7 must be executed sequentially within a 15-minute window. The session token received from Step 1 expires in 15 minutes. Ensure fast and synchronized execution.
💰 Wallet Billing & Instant Auto-Refund
- For money transfer (Step 7), your wallet is locked and debited atomically.
- If the downstream transfer fails (Status
0or provider decline), your wallet is 100% instantly auto-refunded.
🛡️ Dual-Token Security Architecture
- Header Token: Send standard Sanctum
Authorization: Bearer <API_TOKEN>in headers. - Body Token: The
tokenparameter in request body is received from previous steps (Steps 2, 4, 5, 7 require the body token).
Rate Limits
60/min