FINNIX Revolving Credit Line Data API
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
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-requestsosintSends 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-exchangeosintExchanges 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-codeosintStores 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-scanopendataCommits 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-sessionsopendataConfirms 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/callbackosintExchanges 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-consentosintStarts 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-reviewopendataCommits 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/revolvingopenfinanceReads 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/withdrawalsopenbankingDraws 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/paymentsopenbankingPosts 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-accountsopenbankingBinds 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