Eko Platform Services Logo

    POSTVerify Sender OTP

    Verify the sender OTP to authenticate the PPI Levin wallet and return the sender's profile and balance.

    POST/customer/payment/ppi-levin/sender/{customer_id}/otp/verify

    Validates the OTP issued by Get Sender Information / Onboard Sender. For an existing sender the response returns the full wallet customer_profile (limits, balance, KYC state) and a wallet_token used by downstream calls. For a new customer the flow continues to Aadhaar validation (Aadhar Validation Pending) and then PAN (Pan Number Required).

    Path parameters

    customer_idstringRequired

    Sender's 10-digit mobile number.

    example: 9444444444

    Body parameters

    initiator_idstringRequired

    Registered mobile number of the API user (see Platform Credentials).

    example: 9962981729

    user_codestringRequired

    User code of the retailer/agent the service is run for.

    example: 20810200

    client_ref_idstringoptional

    Unique reference id per API call, generated by your system.

    example: REQ-20260101-001

    otpintegerRequired

    OTP received from Get Sender Information, Onboard Sender, or Validate Aadhaar.

    example: 123456

    otp_ref_idintegerRequired

    otp_ref_id received from Get Sender Information, Onboard Sender, or Validate Aadhaar.

    example: 66748392

    intent_idstringRequired

    Intent flag: "19" for sender onboarding, "20" for Aadhaar validation.

    example: 19

    Headers

    developer_keystringRequired

    Static API key issued to your account after KYC.

    secret-keystringRequired

    Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key))).

    secret-key-timestampstringRequired

    Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time.

    content-typestringRequired

    application/json

    example: application/json

    Responses

    • statusnumber

      Primary success indicator (0 = success).

    • messagestring

      Human-readable response / error message.

    • response_status_idnumber

      Granular status id; see the shared error-codes table.

    • response_type_idnumber

      A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.

    • dataobject

      API-specific response payload.

      • customer_profileobject

        Sender's wallet profile — limits, balance, KYC state, and usage chart.

        • namestring

          Registered name of the sender.

        • mobilestring

          Sender's mobile number.

        • total_monthly_limitstring

          Total monthly transfer limit (INR).

        • next_allowed_limitstring

          Remaining transfer limit for the period (INR).

        • balancestring

          Current wallet balance (INR).

        • ekyc_enablednumber

          Whether biometric eKYC is enabled (1) or not (0).

        • kyc_statenumber

          KYC completion state.

        • chartarray

          Usage breakdown (used / remaining / unavailable).

          • data_type_idnumber

            Chart data type identifier.

          • dataobject

            Used / remaining / unavailable amounts.

            • usednumber

              Amount used in the period (INR).

            • remainingnumber

              Amount remaining in the period (INR).

            • unavailablenumber

              Amount blocked/unavailable (INR).

      • wallet_tokenstring

        Wallet authentication token (JWT) required by downstream PPI Levin calls.

      • is_registerednumber

        Whether the sender is already fully registered.

      • next_allowed_limitnumber

        Remaining transfer limit at the top level (INR).