FINNIX: Revolving Credit Line icon

FINNIX Revolving Credit Line Data API

MONIX Co., Ltd. · Lending 4.8 ★

FINNIX: Revolving Credit Line is the Android client of MONIX Co., Ltd. (บริษัท มันนิกซ์ จำกัด), an SCBX-group nano-finance lender supervised by the Bank of Thailand and based at 9, 2nd floor, Learning Center, Ratchadaphisek Road, Chatuchak, Bangkok 10900. Borrowers open สินเชื่อนาโนฟินนิกซ์ติดปีก — a revolving occupational credit line of up to 100,000 THB at 2.75% a month (33% a year), draw 24 hours without a branch visit, and repay interest-only or extra principal (ลดต้นลดดอก). Sign-in is a Thai mobile OTP plus a 6-digit PIN; identity is a national-ID camera with laser code, FaceTec liveness, ThaiD, NDID, or SCB EASY, plus a bank statement rather than a salary slip. The Play listing markets it as a lending app for opportunities under Bank of Thailand supervision, with a 4.80 rating across 316,521 reviews and 10M+ downloads. Customer service is 0-2113-1113. The client sits among other Thai nano-finance and personal-loan apps aimed at นักสู้ชีวิต — gig, trade and small-shop borrowers.

Thai ID laser rows pin nationalId to laserId together with firstNameTh, lastNameTh and titleTh, then FaceTec sets livenessPassed on the same faceSessionId. ThaiD returns thaidCitizenId; NDID adds ndidRequestId, consentId and idpNodeId; SCB TechX review stores ekycRef and cardIdNumber.

Revolving headroom contrasts creditLimit with availableLimit and drawnAmount, while minPaymentAmount sits at interestRateMonthly. A draw writes drawAmount and transferRef onto bankAccountNo; repayments post repayType against remainingPrincipal. Collectors and credit desks use those fields for บัตรประชาชน-to-บัญชี checks and เบิกเงิน matching; openData Studio turns the same surface into callable open data.

Screenshots

  • FINNIX: Revolving Credit Line screenshot 1
  • FINNIX: Revolving Credit Line screenshot 2
  • FINNIX: Revolving Credit Line screenshot 3
  • FINNIX: Revolving Credit Line screenshot 4
  • FINNIX: Revolving Credit Line screenshot 5
  • FINNIX: Revolving Credit Line screenshot 6

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Send login OTP

    POST /v1/sessions/otp-requests osint

    Sends a 6-digit login OTP to mobileNumber over otpChannel and returns otpTtlSec plus refCode for the verify screen.

    Auth: Unauthenticated. JSON body mobileNumber in Thai 0xx format.

    • mobileNumber
    • otpChannel
    • otpTtlSec
    • refCode
    POST /v1/sessions/otp-requests HTTP/1.1
    Content-Type: application/json
    
    {
      "mobileNumber": "0812345678",
      "otpChannel": "sms"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "mobileNumber": "0812345678",
        "otpChannel": "sms",
        "otpTtlSec": 60,
        "refCode": "A7K2"
      }
    }
  • Verify OTP session

    POST /v1/sessions/otp-exchange osint

    Exchanges otpCode and refCode for sessionToken, userId and pinSet, which decides whether a first-time user is sent to the PIN-setup screen.

    Auth: Unauthenticated. JSON body mobileNumber, otpCode and refCode. Returns sessionToken used as Authorization: Bearer.

    • mobileNumber
    • otpCode
    • refCode
    • sessionToken
    • userId
    • pinSet
    POST /v1/sessions/otp-exchange HTTP/1.1
    Content-Type: application/json
    
    {
      "mobileNumber": "0812345678",
      "otpCode": "483920",
      "refCode": "A7K2"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "sessionToken": "<session-token>",
        "userId": "FNX10086001",
        "mobileNumber": "0812345678",
        "pinSet": false
      }
    }
  • Set lock PIN

    POST /v1/sessions/lock-code osint

    Stores the 6-digit codePin that re-locks the app and its embedded home view (h5LockPin) on later sessions.

    Auth: Bearer sessionToken from the OTP verify step.

    • codePin
    • codePinConfirm
    • pinSet
    • h5LockPin
    • userId
    POST /v1/sessions/lock-code HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "codePin": "258147",
      "codePinConfirm": "258147"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "userId": "FNX10086001",
        "pinSet": true,
        "h5LockPin": true
      }
    }
  • National ID OCR

    POST /v1/identity/document-scan opendata

    Commits Thai national-ID OCR: nationalId, laserId, Thai title/name and dateOfBirth, returning ocrVerified.

    Auth: Bearer sessionToken.

    • nationalId
    • laserId
    • titleTh
    • firstNameTh
    • lastNameTh
    • dateOfBirth
    • ocrVerified
    POST /v1/identity/document-scan HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "nationalId": "1234567890123",
      "laserId": "JT0-1234567-89",
      "titleTh": "นาย",
      "firstNameTh": "สมชาย",
      "lastNameTh": "ใจดี",
      "dateOfBirth": "1990-01-15"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "nationalId": "1234567890123",
        "laserId": "JT0-1234567-89",
        "titleTh": "นาย",
        "firstNameTh": "สมชาย",
        "lastNameTh": "ใจดี",
        "dateOfBirth": "1990-01-15",
        "ocrVerified": true
      }
    }
  • FaceTec liveness

    POST /v1/identity/liveness-sessions opendata

    Confirms FaceTec 3D liveness against the OCR nationalId and returns livenessPassed.

    Auth: Bearer sessionToken.

    • faceSessionId
    • livenessPassed
    • ocrVerified
    • nationalId
    POST /v1/identity/liveness-sessions HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "faceSessionId": "ft_sess_9ab2",
      "nationalId": "1234567890123"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "faceSessionId": "ft_sess_9ab2",
        "livenessPassed": true,
        "ocrVerified": true,
        "nationalId": "1234567890123"
      }
    }
  • ThaiD OAuth callback

    POST /v1/identity/national-sso/callback osint

    Exchanges a ThaiD OAuth authorization code for thaidCitizenId and Thai name fields.

    Auth: Bearer sessionToken. Body carries the ThaiD authorization code.

    • thaidAuthCode
    • redirectUri
    • thaidCitizenId
    • firstNameTh
    • lastNameTh
    • thaidVerified
    POST /v1/identity/national-sso/callback HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "thaidAuthCode": "<auth-code>",
      "redirectUri": "app://thaid/callback"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "thaidCitizenId": "1234567890123",
        "firstNameTh": "สมชาย",
        "lastNameTh": "ใจดี",
        "thaidVerified": true
      }
    }
  • NDID IdP consent

    POST /v1/identity/federated-consent osint

    Starts an NDID identity request against a chosen idpNodeId and returns ndidRequestId plus consentUrl.

    Auth: Bearer sessionToken.

    • idpNodeId
    • nationalId
    • ndidRequestId
    • consentId
    • consentUrl
    POST /v1/identity/federated-consent HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "idpNodeId": "SCB",
      "nationalId": "1234567890123"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "ndidRequestId": "ndid_req_8841",
        "consentId": "cns_22ab",
        "idpNodeId": "SCB",
        "consentUrl": "https://idp.example.th/consents/cns_22ab"
      }
    }
  • SCB TechX eKYC review

    POST /v1/identity/partner-review opendata

    Commits the SCB TechX eKYC review screen (cardIdNumber, Thai names) and returns ekycStatus.

    Auth: Bearer sessionToken. The SCB partner leg is brokered with server-held partner credentials.

    • ekycRef
    • cardIdNumber
    • givenNameTh
    • lastNameTh
    • ekycStatus
    POST /v1/identity/partner-review HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "ekycRef": "scb_ekyc_4410",
      "cardIdNumber": "1234567890123",
      "givenNameTh": "สมชาย",
      "lastNameTh": "ใจดี"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "ekycRef": "scb_ekyc_4410",
        "cardIdNumber": "1234567890123",
        "givenNameTh": "สมชาย",
        "lastNameTh": "ใจดี",
        "ekycStatus": "VERIFIED"
      }
    }
  • Credit-line snapshot

    GET /v1/lines/revolving openfinance

    Reads the revolving nano line: creditLimit versus availableLimit and drawnAmount, plus minPaymentAmount at interestRateMonthly.

    Auth: Bearer sessionToken. The embedded home view also re-checks h5LockPin.

    • userId
    • creditLimit
    • availableLimit
    • drawnAmount
    • minPaymentAmount
    • interestRateMonthly
    • currency
    GET /v1/lines/revolving HTTP/1.1
    Authorization: Bearer <session-token>
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "userId": "FNX10086001",
        "creditLimit": 100000.00,
        "availableLimit": 72500.00,
        "drawnAmount": 27500.00,
        "minPaymentAmount": 756.25,
        "interestRateMonthly": 0.0275,
        "currency": "THB"
      }
    }
  • Draw disbursement

    POST /v1/lines/revolving/withdrawals openbanking

    Draws drawAmount from the revolving line onto bankAccountNo and returns transferRef plus the updated availableLimit.

    Auth: Bearer sessionToken.

    • drawAmount
    • bankAccountNo
    • bankCode
    • drawId
    • transferRef
    • disbursedAt
    • availableLimit
    • drawnAmount
    • currency
    POST /v1/lines/revolving/withdrawals HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "drawAmount": 5000.00,
      "bankAccountNo": "1234567890",
      "bankCode": "014"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "drawId": "DRW88421",
        "drawAmount": 5000.00,
        "transferRef": "SCB20261020X91",
        "disbursedAt": "2026-10-20T12:04:11+07:00",
        "availableLimit": 67500.00,
        "drawnAmount": 32500.00,
        "currency": "THB"
      }
    }
  • Repay revolving balance

    POST /v1/lines/revolving/payments openbanking

    Posts repayAmount as interest_only or principal; remainingPrincipal and availableLimit refresh on the home card.

    Auth: Bearer sessionToken.

    • repayAmount
    • repayType
    • repayId
    • remainingPrincipal
    • availableLimit
    • minPaymentAmount
    • currency
    POST /v1/lines/revolving/payments HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "repayAmount": 756.25,
      "repayType": "interest_only"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "repayId": "RPY33108",
        "repayAmount": 756.25,
        "repayType": "interest_only",
        "remainingPrincipal": 27500.00,
        "availableLimit": 72500.00,
        "minPaymentAmount": 756.25,
        "currency": "THB"
      }
    }
  • Bind disbursement account

    POST /v1/borrowers/disbursement-accounts openbanking

    Binds the same-name disbursement account and optional bank statement, returning accountVerified.

    Auth: Bearer sessionToken. A prior file upload may attach statementFileId.

    • bankCode
    • bankAccountNo
    • accountName
    • statementFileId
    • bankAccountId
    • accountVerified
    POST /v1/borrowers/disbursement-accounts HTTP/1.1
    Authorization: Bearer <session-token>
    Content-Type: application/json
    
    {
      "bankCode": "014",
      "bankAccountNo": "1234567890",
      "accountName": "สมชาย ใจดี",
      "statementFileId": "upl_77c1"
    }
    {
      "code": 0,
      "msg": "OK",
      "data": {
        "bankAccountId": "ba_9012",
        "bankCode": "014",
        "bankAccountNo": "1234567890",
        "accountName": "สมชาย ใจดี",
        "statementFileId": "upl_77c1",
        "accountVerified": true
      }
    }

Data categories

  • otp sessions
  • lock pins
  • national-id kyc
  • thaid ndid scb ekyc
  • revolving credit lines
  • disbursements
  • repayments
  • bank accounts

Where teams use this data

  • Thai ID to disbursement match

    Credit desks join nationalId / thaidCitizenId and firstNameTh lastNameTh to accountName on the bound bank row so a mismatched บัตรประชาชน versusบัญชี is blocked before drawAmount leaves availableLimit.

  • Revolving-headroom ops

    Treasury bots watch creditLimit versus availableLimit and drawnAmount after each drawId, matching transferRef on bankAccountNo (bankCode 014 SCB and peers) to confirm the เบิกเงิน payout landed.

  • Min-pay collections

    Collectors schedule minPaymentAmount at interestRateMonthly, then post repayType interest_only or principal and escalate when remainingPrincipal does not fall after the due window.

  • NDID / ThaiD identity rail

    Compliance stacks store ndidRequestId, consentId, idpNodeId and thaidAuthCode beside FaceTec livenessPassed so a failed IdP consent can fall back to laserId OCR without re-running the whole file.

Frequently asked questions

What borrower records does FINNIX expose after sign-in?

The signed-in sessionToken returns the national-ID OCR row (nationalId, laserId, firstNameTh, lastNameTh, titleTh), FaceTec livenessPassed, ThaiD thaidCitizenId, NDID ndidRequestId / consentId, the SCB ekycRef, the revolving snapshot (creditLimit, availableLimit, drawnAmount, minPaymentAmount) and the bound bankAccountNo / accountName.

How does the Android client authenticate?

Send OTP posts mobileNumber; verify OTP exchanges the 6-digit otpCode and refCode for sessionToken and userId. Set-PIN stores codePin and the h5LockPin flag for the lock screen. Later calls send Authorization: Bearer sessionToken.

How is a revolving draw repaid?

The repay call posts repayAmount with repayType interest_only or principal and returns remainingPrincipal, availableLimit and minPaymentAmount. Collectors match that minimum against interestRateMonthly before escalating.

Which identity rails can stand in for the ID camera?

ThaiD (thaidAuthCode → thaidCitizenId), NDID (idpNodeId → ndidRequestId / consentUrl) and SCB EASY / TechX eKYC (ekycRef, cardIdNumber). FaceTec liveness still runs against nationalId when the camera path is used.

Apps similar to FINNIX: Revolving Credit Line

  • LINE BK — LINE BK is KASIKORN LINE's digital bank in Thailand, with a nano credit line of up to 100,000 THB (maximum 33% a year) for business working capital and a personal revolving credit line of up to 800,000 THB (maximum 25% a year).
  • CardX — CardX is the SCBX subsidiary for non-bank credit cards and personal loans; CardX FLEX is a revolving credit line for cash withdrawals, transfers and Mastercard spending, open to applicants aged 20–60 with a minimum income of 15,000 THB a month.
  • Rabbit Cash — Rabbit Cash (บริษัท แรบบิท แคช จำกัด) is a Bank of Thailand–supervised online lender whose สินเชื่อแรบบิทแคช ผ่อนตามใจ product is a revolving occupational credit line for small-business operators, applied for in the Rabbit Cash app.
  • TIDJAI — TIDJAI is the official app of Ngern Tid Lor Public Company Limited, a Bank of Thailand–licensed vehicle-title lender that issues car, motorcycle and truck registration loans plus a Tidlor Card through a nationwide branch network.
  • Muangthai Capital — Muangthai Capital Public Company Limited is a Thai lender whose unsecured products include personal loans and nano-finance, alongside motorcycle, car and land-title loans, with a mobile app branded เมืองไทย แคปปิตอล.
  • AEON THAI MOBILE — AEON THAI MOBILE is the app of AEON Thana Sinsap (Thailand) Public Company Limited, which issues installment personal loans such as ONE LOAN (quoted 15.99%–24% for 12–60 months) and Happy Loan, plus revolving cash products AEON YourCash and AEON Max Limit.

Topics

  • FINNIX API
  • FINNIX nationalId
  • FINNIX availableLimit
  • MONIX Co Ltd data
  • Thai nano finance creditLimit
  • FINNIX ndidRequestId
  • FINNIX drawAmount
  • Bank of Thailand revolving line fields

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote