Tala: Fast & Safe Pesa Loan 图标

Tala Pesa 贷款数据 API

Tala Mobile · 信贷

Tala: Fast & Safe Pesa Loan 是 Tala Mobile 面向肯尼亚的短期数字信贷 Android 客户端(Play 包名 com.inventureaccess.safarirahisi,以 Tala / Inventure Access 栈的 keProd 风味发布)。借款人输入肯尼亚手机号、收取短信 OTP、设置或确认 PIN,再拍摄国民身份证照片,随后贷款卡片展示可借 Pesa 金额、还款计划、CRB 状态与还款指引。提现与缴费用 M-Pesa 及应用内支付方式,客服走 Zendesk。Tala 在其他市场也有姊妹应用,但本列表是肯尼亚 Pesa 产品,与 Branch、Okash 以及 Safaricom 的 M-Shwari / Fuliza 争夺同一批预付费手机借款人。

PIN 登录的 loginSuccess 会签发 sessionId 与 personId,此前先有手机号 loginExists 以及 OTP 标记(otpSent、otpValid),同一载荷还带 mnoCode 与 pinStatus。国民身份证照片上传在写入 idNumber / idName 后返回 image URL;M-Pesa 还款深链以 paymentUrl 与 stopUrl 出现,并附带每种方式的 displayName 与 minPayableAmount。数据采集信封上的设备行含 androidId、deviceId 与 personId。

进件、催收与反欺诈台把这些会话、KYC 与还款记录拼在一起。openData Studio 将其变成可调用的开放数据。

应用截图

  • Tala: Fast & Safe Pesa Loan 应用截图 1
  • Tala: Fast & Safe Pesa Loan 应用截图 2
  • Tala: Fast & Safe Pesa Loan 应用截图 3
  • Tala: Fast & Safe Pesa Loan 应用截图 4
  • Tala: Fast & Safe Pesa Loan 应用截图 5
  • Tala: Fast & Safe Pesa Loan 应用截图 6
  • Tala: Fast & Safe Pesa Loan 应用截图 7
  • Tala: Fast & Safe Pesa Loan 应用截图 8

API 端点一览

以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。

  • 检查手机号是否已注册

    POST /v1/accounts/phone-lookup osint

    按 loginType/loginValue(手机号)查询是否已注册,返回 loginExists,供登录页在 OTP 注册与 PIN 登录之间分流。

    认证方式: 登录前 JSON 信封:data 块加 metadata.country 与 metadata.device(androidId、deviceId、googleAdId、networkType、version)。后续调用复用 PIN 登录返回的 data.sessionId,以会话令牌请求头发送(不是 Bearer JWT)。

    • loginType
    • loginValue
    • loginExists
    • status
    • statusDescription
    • displayMsg
    • metadata.country
    • device.androidId
    • device.deviceId
    • device.googleAdId
    • device.networkType
    • device.version
    POST /v1/accounts/phone-lookup HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678"
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "loginExists": true
      },
      "errors": null
    }
  • 发送登录 OTP

    POST /v1/accounts/verification-codes osint

    向 loginValue 发送短信 OTP,返回 otpSent,供肯尼亚 Pesa 的 OTP 界面使用。

    认证方式: 登录前 JSON 信封,含 metadata.device。OTP 校验与 PIN 登录之后签发 data.sessionId。

    • loginType
    • loginValue
    • otpSent
    • displayMsg
    • status
    POST /v1/accounts/verification-codes HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678"
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "OTP sent",
        "otpSent": true
      },
      "errors": null
    }
  • 校验登录 OTP

    POST /v1/accounts/verification-codes/confirm osint

    用 authValue(OTP)校验手机号 loginValue,返回 otpValid,供进入 PIN 界面。

    认证方式: 登录前 JSON 信封;data.authValue 为 OTP。随后 PIN 登录返回 data.sessionId。

    • loginType
    • loginValue
    • authValue
    • otpValid
    • status
    POST /v1/accounts/verification-codes/confirm HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678",
        "authValue": "482913"
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "otpValid": true
      },
      "errors": null
    }
  • PIN 登录

    POST /v1/logins/pin osint

    用手机号 PIN(authValue)换取 loginSuccess、sessionId、personId、mnoCode、pinStatus 与 numTriesRemaining。

    认证方式: 登录前 JSON 信封;data.authValue 为 PIN。响应 data.sessionId 与 data.personId 以会话令牌请求头用于后续 KYC、还款与设备信号调用(不是 Authorization: Bearer)。

    • loginType
    • loginValue
    • authValue
    • loginSuccess
    • mnoCode
    • numTriesRemaining
    • personId
    • pinStatus
    • sessionId
    • status
    POST /v1/logins/pin HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678",
        "authValue": "135790"
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "loginSuccess": true,
        "mnoCode": "SAF",
        "numTriesRemaining": 5,
        "personId": 1048291,
        "pinStatus": 1,
        "sessionId": "sess-7c41d9e2a91f"
      },
      "errors": null
    }
  • 创建认证会话

    POST /v1/logins/bootstrap osint

    在肯尼亚登录服务上签发 sessionId,可在 PIN 登录之前或同时调用。

    认证方式: JSON 信封,含 metadata.device。返回后续认证调用使用的 data.sessionId(会话令牌请求头,不是 Bearer JWT)。

    • sessionId
    • status
    • statusDescription
    • displayMsg
    POST /v1/logins/bootstrap HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {},
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "sessionId": "sess-7c41d9e2a91f"
      },
      "errors": null
    }
  • PIN 重置安全问题

    POST /v1/credentials/recovery/questions osint

    加载 PIN 重置用的 challengeQuestions(id、hint、value)以及 challengeStatus、challengeType,供安全问题页使用。

    认证方式: JSON 信封,含 loginType=phone 与 loginValue。可附带 PIN 登录或会话初始化接口的 sessionId。

    • loginType
    • loginValue
    • challengeStatus
    • challengeType
    • challengeQuestions
    • id
    • hint
    • value
    POST /v1/credentials/recovery/questions HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678"
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "challengeStatus": 1,
        "challengeType": "SECURITY_QUESTIONS",
        "challengeQuestions": [
          {
            "id": 12,
            "hint": "What is your mother's maiden name?",
            "value": "What is your mother's maiden name?"
          }
        ]
      },
      "errors": null
    }
  • 校验 PIN 重置答案

    POST /v1/credentials/recovery/answers osint

    提交 challengeDataList 答案,返回 isVerified 以及 PIN 重置剩余 numberOfTries。

    认证方式: JSON 信封,含 loginType=phone 与由 id/answer 组成的 challengeDataList。可附带登录或会话接口的 sessionId。

    • loginType
    • loginValue
    • challengeDataList
    • id
    • answer
    • isVerified
    • numberOfTries
    POST /v1/credentials/recovery/answers HTTP/1.1
    Content-Type: application/json
    
    {
      "data": {
        "loginType": "phone",
        "loginValue": "254712345678",
        "challengeDataList": [
          {
            "id": 12,
            "answer": "Wanjiku"
          }
        ]
      },
      "metadata": {
        "country": "KE",
        "device": {
          "androidId": "a1b2c3d4e5f6g7h8",
          "deviceId": "ke-dev-88421",
          "googleAdId": "38400000-8cf0-11bd-b23e-10b96e40000d",
          "networkType": "WIFI",
          "version": "7.30.0"
        }
      }
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK",
      "data": {
        "displayMsg": "",
        "isVerified": true,
        "numberOfTries": 2
      },
      "errors": null
    }
  • 列出还款方式

    GET /v1/repayments/payment-channels openfinance

    列出肯尼亚 Pesa 账单页的还款通道:paymentMethods 每行含 displayName(如 M-Pesa)与 minPayableAmount。

    认证方式: 使用 PIN 登录返回的 sessionId(data.sessionId、data.personId、data.mnoCode),以会话令牌请求头发送。不是 Bearer JWT。

    • paymentMethods
    • displayName
    • minPayableAmount
    GET /v1/repayments/payment-channels HTTP/1.1
    X-Session-Id: <session_id>
    {
      "paymentMethods": [
        {
          "displayName": "M-Pesa",
          "minPayableAmount": 10.0
        },
        {
          "displayName": "Airtel Money",
          "minPayableAmount": 10.0
        }
      ]
    }
  • M-Pesa 支付参数

    POST /v1/repayments/checkout-links openfinance

    按 amount 生成应用内还款 WebView:paymentUrl 启动 M-Pesa STK,stopUrl 结束流程。

    认证方式: 使用 PIN 登录返回的 sessionId(data.sessionId、data.personId),以会话令牌请求头发送。不是 Bearer JWT。

    • amount
    • paymentUrl
    • stopUrl
    POST /v1/repayments/checkout-links HTTP/1.1
    Content-Type: application/json
    X-Session-Id: <session_id>
    
    {
      "amount": 2500.0
    }
    {
      "paymentUrl": "https://pay.example.com/mpesa/start?ref=<reference>",
      "stopUrl": "https://pay.example.com/mpesa/stop"
    }
  • 上传 KYC 照片

    POST /v1/identity/documents/images opendata

    上传国民身份证或自拍图像(imageData、type),在 result=success 时返回已存储的 image URL。

    认证方式: 使用 PIN 登录的 sessionId,以会话令牌请求头发送。请求体为带 appInfoData 信封(androidId、deviceId、networkType、personId、pwd、type=156、version)的外层,内含 imageData 与 type。

    • imageData
    • type
    • image
    • result
    • androidId
    • deviceId
    • personId
    • pwd
    • version
    POST /v1/identity/documents/images HTTP/1.1
    Content-Type: application/json
    X-Session-Id: <session_id>
    
    {
      "appInfoData": {
        "androidId": "a1b2c3d4e5f6g7h8",
        "deviceId": "ke-dev-88421",
        "networkType": "WIFI",
        "personId": 1048291,
        "pwd": "********",
        "type": 156,
        "version": "7.30.0"
      },
      "data": {
        "imageData": "/9j/4AAQSkZJRgABAQAAAQABAAD...",
        "type": 1
      }
    }
    {
      "data": {
        "result": "success",
        "image": "https://cdn.example.com/kyc/ke/<person_id>/id-front.jpg"
      }
    }
  • 修改 KYC 证件号

    POST /v1/identity/documents/number opendata

    在照片 KYC 之后把借款人的 idNumber 与 idType(国民身份证)写到 person 记录。

    认证方式: 使用 PIN 登录的 sessionId,以会话令牌请求头发送。请求体内层为 idNumber、idType,外加 appInfoData.personId。

    • idNumber
    • idType
    • personId
    • displayMsg
    POST /v1/identity/documents/number HTTP/1.1
    Content-Type: application/json
    X-Session-Id: <session_id>
    
    {
      "appInfoData": {
        "androidId": "a1b2c3d4e5f6g7h8",
        "deviceId": "ke-dev-88421",
        "networkType": "WIFI",
        "personId": 1048291,
        "pwd": "********",
        "type": 156,
        "version": "7.30.0"
      },
      "data": {
        "idNumber": "12345678",
        "idType": "NATIONAL_ID"
      }
    }
    {
      "data": {
        "displayMsg": "ID number updated"
      }
    }
  • 修改 KYC 证件类型

    POST /v1/identity/documents/type opendata

    用 idName 切换肯尼亚 person 记录上选中的 KYC 证件种类(国民身份证等)。

    认证方式: 使用 PIN 登录的 sessionId,以会话令牌请求头发送。请求体内层为 idName,外加 appInfoData。

    • idName
    • personId
    • result
    POST /v1/identity/documents/type HTTP/1.1
    Content-Type: application/json
    X-Session-Id: <session_id>
    
    {
      "appInfoData": {
        "androidId": "a1b2c3d4e5f6g7h8",
        "deviceId": "ke-dev-88421",
        "networkType": "WIFI",
        "personId": 1048291,
        "pwd": "********",
        "type": 156,
        "version": "7.30.0"
      },
      "data": {
        "idName": "NATIONAL_ID"
      }
    }
    {
      "data": {
        "result": "success"
      }
    }
  • 设备信号上报

    POST /v1/signals/device opendata

    上报设备与借款人遥测(androidId、deviceId、networkType、personId、version),供肯尼亚核保与贷款界面一并使用。

    认证方式: 登录后请求体携带 personId 与 pwd(来自 PIN 登录),位于 appInfoData 字段内;type 固定为 156,代表通用设备数据。sessionId 不是 Bearer JWT。

    • androidId
    • deviceId
    • networkType
    • personId
    • pwd
    • type
    • version
    POST /v1/signals/device HTTP/1.1
    Content-Type: application/json
    
    {
      "androidId": "a1b2c3d4e5f6g7h8",
      "deviceId": "ke-dev-88421",
      "networkType": "WIFI",
      "personId": 1048291,
      "pwd": "********",
      "type": 156,
      "version": "7.30.0"
    }
    {
      "status": "SUCCESS",
      "statusDescription": "OK"
    }

数据类别

  • 手机号身份
  • OTP 会话
  • PIN 登录
  • KYC 照片
  • 国民身份证号
  • M-Pesa 还款
  • 设备遥测

数据使用场景与案例

  • 监控肯尼亚手机号与 PIN 会话

    进件台读取 loginExists、otpValid、loginSuccess、personId、mnoCode、pinStatus,区分新 OTP 注册与回访 PIN 登录,无需刮取 Android 界面。

  • 对账 M-Pesa 还款深链

    催收把账单的 displayName、minPayableAmount 与按 amount 签发的 paymentUrl / stopUrl 配对,不必等待 M-Pesa 短信截图。

  • KYC 照片与证件完整度

    核保把已存储的 image URL 与同一 personId 上的 idNumber、idType、idName 拼在一起,再决定是否允许 Pesa 复贷。

  • 设备遥测拼接

    反欺诈任务把认证信封里的 androidId、deviceId、googleAdId、networkType 与数据采集里的 personId、type=156 载荷对齐。

常见问题

Tala 的接口如何鉴权?

手机 OTP 与 PIN 登录返回 sessionId、personId、mnoCode、pinStatus。后续 KYC、支付与数据采集调用复用该 sessionId,不是 Bearer JWT。请求信封还会盖上 metadata.device 字段,如 androidId、deviceId、googleAdId、networkType、version。

KYC 界面背后有哪些身份字段?

照片上传提交 imageData 与 type,在 result=success 时返回 image URL。随后 person 记录保存 idNumber、idType、idName(国民身份证)。OTP 之前的手机号查询暴露 loginExists。

能否读取 M-Pesa 还款通道,而不只是登录?

可以。还款方式列表返回 displayName 与 minPayableAmount(M-Pesa 等钱包)。按 amount 取参数会返回应用内还款 WebView 的 paymentUrl 与 stopUrl。

肯尼亚核保会附带哪些设备遥测?

认证 metadata.device 含 androidId、deviceId、googleAdId、networkType、version。Android 数据采集再上报同一批标识以及 personId、pwd 与 type 156。

与 Tala: Fast & Safe Pesa Loan 相似的应用

  • Branch — Branch 是面向肯尼亚、尼日利亚和印度的数字金融应用,提供手机即时贷款、钱包转账、账单缴费和应用内储蓄。
  • Zenka — Zenka 是 Zenka Digital Limited 的肯尼亚现金贷应用,把 500 至 20 万肯尼亚先令打到 M-Pesa,借款人可自选最长 61 天的期限。
  • Okash — Okash 是 Opera 面向肯尼亚的短期现金贷应用,媒体在报道该国手机贷款市场时把它与 Tala、Branch 并列。
  • M-Shwari — M-Shwari 是 NCBA Bank 与 Safaricom 于 2012 年 11 月推出的产品,让 M-PESA 用户用手机储蓄、借款,存款还可计息。
  • KCB M-PESA — KCB M-PESA 是 Safaricom 与 KCB Bank 于 2015 年 3 月推出的储蓄加贷款产品,在 M-PESA 菜单上提供手机信贷与储蓄。
  • My OneApp — My OneApp 是 Safaricom PLC 面向肯尼亚的 M-PESA 超级应用,钱包余额不足时可走 Fuliza 透支,并支持 Lipa na M-PESA 付款和 Ziidi 单位信托。

相关主题

  • Tala Pesa 贷款 API
  • sessionId personId
  • 肯尼亚数字信贷
  • M-Pesa 还款 paymentUrl
  • KYC image idNumber
  • loginExists otpValid
  • Tala Mobile 数据 API

需要集成这个 App 的数据 API?

我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。

  • 每个项目均签 NDA 与 SOW
  • 3–7 天交付
  • 验收通过后才付款
  • 仅在授权范围内作业

获取报价