Kredivo Paylater & Pinjaman Data API
Kredivo - Paylater & Pinjaman is the consumer credit app from PT Kredivo Finance Indonesia, an OJK-licensed online credit-line provider headquartered at Dipo Tower on Jalan Jenderal Gatot Subroto in Jakarta. Borrowers open a revolving limit of up to IDR 50 million after a roughly five-minute registration, then spend it as a 30-day pay-in-full line (0% interest, no admin fee) or as 3-, 6-, 9-, 12-, 18- and 24-month installments starting at 1.99% per month, with a published maximum APR of 41.51%. The same limit pays at more than 10,000 Indonesian merchants — Alfamart, Indomaret, Tokopedia, Shopee, Lazada, Tiket.com, Erafone, H&M, Electronic City, IKEA, McDonald's and others — and at cashiers through QRIS, with personal-loan (pinjaman) and motorcycle-EV financing sitting beside the paylater line. Kredivo Score grades the account, KrediMall and in-app billers cover goods and prepaid top-ups, and support is listed at [email protected] or 0804-1-573348. The Android client holds a 4.77 rating across 4,900,034 Google Play ratings and 50 million-plus installs, competing with Akulaku, Shopee PayLater, GoPay Later, Indodana and Home Credit for the same Indonesian paylater users.
Outstanding-due rows split kredivo_outstanding_due_amount from qris_outstanding_due_amount, each with its own due date and status, so the bill-home card can show in-app paylater debt next to cashier QRIS debt on the same borrower. Revolving headroom arrives as availableLimit against total_limit; the grade that prices new tenure sits in edu_score and kredivoScore.
Linked disbursement accounts return bank_name and account_number. Krom savings linkage adds krom_account_number, krom_balance and krom_account_status. Installment quotes carry tenure, installment_amount and eligible_tenures. Repayment rails list payment_channel_name and va_number. Underwriting files hold monthly_income and npwp_number. Loyalty balances show as user_point and cashback_amount. Recurring PLN and telco auto-pays expose subscription_id with next_payment_amount; cashier QR checkout returns merchant_id and transaction_token. NFC top-ups of Mandiri e-money, BCA Flazz and BNI TapCash return nfcCardType and cardBalance. Optional KrediShield quotes sit in insurance_fee and insurance_fee_per_day. The voucher wallet lists voucher_code, discount_amount and redeem_expiry_date. Fintech Data Center cool-off flags arrive as is_cool_off_fdc and pl_cool_off_fdc before a new pinjaman confirm. Optional skip-a-cycle quotes sit in payment_holiday_fee and payment_holiday_fee_per_day. Krom mix-payment checkout reports eligible_for_krom_mixpayment against krom_balance_available. Collection desks, BNPL aggregators and credit-policy tools stitch those fields into nightly limit monitors and overdue-VA reconciliation; 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.
PIN login
POST
/v1/auth/pin-sessionosintSigns the borrower in with mobile_number and pin and mints the access_token, refresh_token and user_token later calls attach.
Auth: mobile_number and pin in the JSON body; response mints access_token
- access_token
- refresh_token
- user_token
- kredivo_user_id
- mobile_number
POST /v1/auth/pin-session HTTP/1.1 Content-Type: application/json { "mobile_number": "081234567890", "pin": "123456", "country_code": "ID" }{ "access_token": "eyJhbGciOi...", "refresh_token": "rt_8f21c0", "user_token": "ut_91ab", "kredivo_user_id": "KV-10028441", "mobile_number": "081234567890" }Borrower profile
GET
/v1/borrower/identityosintLoads the signed-in borrower card: legal_name, NIK, mobile_number, email, date_of_birth and account_status used on the account screen.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- kredivo_user_id
- legal_name
- full_name
- mobile_number
- date_of_birth
- nik
- account_status
GET /v1/borrower/identity HTTP/1.1{ "kredivo_user_id": "KV-10028441", "legal_name": "Siti Nurhaliza", "full_name": "Siti Nurhaliza", "mobile_number": "081234567890", "email": "[email protected]", "date_of_birth": "1994-04-12", "nik": "3174011204940001", "account_status": "ACTIVE" }Available credit limit
GET
/v1/limit/availableopenfinanceReads remaining revolving headroom (availableLimit) against the sanctioned total_limit shown on the home balance and limit-center strips.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- availableLimit
- availableLimitAmount
- total_limit
- user_available_limit
GET /v1/limit/available HTTP/1.1{ "availableLimit": 12500000, "availableLimitAmount": 12500000, "total_limit": 20000000, "user_available_limit": 12500000, "currency": "IDR" }Credit wallet snapshot
GET
/v1/wallet/credit-lineopenbankingReturns the credit-wallet card: wallet_status, account_status and the timestamped availableLimit used when e-wallet top-ups check remaining limit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- wallet_status
- account_status
- availableLimit
- credit_wallet_timestamp
GET /v1/wallet/credit-line HTTP/1.1{ "wallet_status": "ACTIVE", "account_status": "ACTIVE", "availableLimit": 12500000, "credit_wallet_timestamp": "2026-10-14T09:12:00+07:00", "currency": "IDR" }Upcoming and late-term payments
GET
/v1/bills/upcomingopenfinanceFeeds the bills-and-repayment home: in-app paylater dues, QRIS dues, late-fee amount and the combined bill_amount.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- kredivo_outstanding_due_amount
- kredivo_outstanding_due_date
- kredivo_outstanding_due_status
- kredivo_payment_due_date
- kredivo_late_fee_amount
- qris_outstanding_due_amount
- qris_outstanding_due_date
- qris_outstanding_due_status
- total_outstanding_late_amount
- bill_amount
GET /v1/bills/upcoming HTTP/1.1{ "kredivo_outstanding_due_amount": 1850000, "kredivo_outstanding_due_date": "2026-10-25", "kredivo_outstanding_due_status": "UPCOMING", "kredivo_payment_due_date": "2026-10-25", "kredivo_late_fee_amount": 0, "qris_outstanding_due_amount": 275000, "qris_outstanding_due_date": "2026-10-25", "qris_outstanding_due_status": "UPCOMING", "total_outstanding_late_amount": 0, "bill_amount": 2125000 }KKI bill details
GET
/v1/statements/periodopenfinanceReturns one billing period's KKI statement: bill_amount, outstanding_amount, due_date and the VA number used to repay.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- bill_amount
- outstanding_amount
- due_date
- payment_channel
- va_number
- kredivo_transaction_id
GET /v1/statements/period?period=2026-10 HTTP/1.1{ "bill_amount": 2125000, "outstanding_amount": 2125000, "due_date": "2026-10-25", "payment_channel": "VA_BCA", "va_number": "7001234567890123", "kredivo_transaction_id": "TRX-882144" }KKI loan details
GET
/v1/loans/openopenfinanceLists open installment loans with tenure, monthly installment_amount, remaining outstanding_amount and the next due date.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- kredivo_transaction_id
- tenure
- eligible_tenures
- installment_amount
- total_installment_amount
- next_installment_due_date
- outstanding_amount
GET /v1/loans/open HTTP/1.1{ "kredivo_transaction_id": "TRX-882144", "tenure": 12, "eligible_tenures": [3, 6, 9, 12], "installment_amount": 412950, "total_installment_amount": 4955400, "next_installment_due_date": "2026-11-25", "outstanding_amount": 3716550 }Paylater installment quote
POST
/v1/checkout/quoteopenfinanceQuotes a paylater checkout before PIN confirm: chosen tenure, monthly installment_amount, interest_rate, admin_fee and remaining availableLimit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- tenure
- eligible_tenures
- installment_amount
- total_installment_amount
- interest_rate
- admin_fee
- availableLimit
POST /v1/checkout/quote HTTP/1.1 Content-Type: application/json { "amount": 2500000, "tenure": 12, "payment_type": "INSTALLMENT" }{ "tenure": 12, "eligible_tenures": [3, 6, 9, 12], "installment_amount": 412950, "total_installment_amount": 4955400, "interest_rate": 0.0299, "admin_fee": 25000, "availableLimit": 12500000 }QRIS KKI dashboard
GET
/v1/qr/dashboardopenbankingLoads the QRIS paylater home: outstanding cashier-scan dues and the KKI account status that gates further QR scans.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- qris_outstanding_due_amount
- qris_outstanding_due_date
- qris_outstanding_due_status
- qris_payment_due_date
- qris_account_status
GET /v1/qr/dashboard HTTP/1.1{ "qris_outstanding_due_amount": 275000, "qris_outstanding_due_date": "2026-10-25", "qris_outstanding_due_status": "UPCOMING", "qris_payment_due_date": "2026-10-25", "qris_account_status": "ACTIVE" }QRIS KKI account status
GET
/v1/qr/account/statusopenbankingChecks whether the KKI QRIS line is ACTIVE before the cashier-scan flow starts; a blocked status suspends further QRIS charges.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- qris_account_status
- account_status
- kredivo_user_id
GET /v1/qr/account/status HTTP/1.1{ "qris_account_status": "ACTIVE", "account_status": "ACTIVE", "kredivo_user_id": "KV-10028441" }Kredivo Score map
GET
/v1/score/gradeopendataReturns the in-app Kredivo Score / edu_score grade that prices tenure and unlocks limit-increase CTAs on the score screen.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- edu_score
- previous_edu_score
- kredivoScore
- kredivoScoreBtnState
- kredivoScoreIconUrl
- user_edu_score_info
GET /v1/score/grade HTTP/1.1{ "edu_score": "AA", "previous_edu_score": "A", "kredivoScore": "AA", "kredivoScoreBtnState": "ENABLED", "kredivoScoreIconUrl": "https://cdn.example.com/score/ic_edu_score_aa.png", "user_edu_score_info": { "show_user_edu_score_info": true } }Linked personal-loan banks
POST
/v1/banks/linkedopenbankingLists the personal-loan disbursement banks saved on the account, with bank_name and account_number used by pinjaman payouts.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- bank_name
- account_number
- bank_account_number
- legal_name
POST /v1/banks/linked HTTP/1.1 Content-Type: application/json {}{ "banks": [ { "bank_name": "BCA", "account_number": "1234567890", "bank_account_number": "1234567890", "legal_name": "Siti Nurhaliza" } ] }Loyalty point balance
GET
/v1/rewards/pointsopendataReads the rewards-ledger balance shown on the points screen, including cashback_point earned from paylater spend.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- user_point
- user_points
- cashback_point
GET /v1/rewards/points HTTP/1.1{ "user_point": 18400, "user_points": 18400, "cashback_point": 2500, "currency": "POINT" }Transaction history
GET
/v1/transactionsopenfinancePages the borrower's paylater and pinjaman ledger with transaction_id, chosen tenure and remaining outstanding_amount.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- transaction_id
- kredivo_transaction_id
- tenure
- installment_amount
- payment_channel
- outstanding_amount
GET /v1/transactions?page=1 HTTP/1.1{ "transactions": [ { "transaction_id": "TRX-882144", "kredivo_transaction_id": "TRX-882144", "tenure": 12, "installment_amount": 412950, "payment_channel": "PAYLATER", "outstanding_amount": 3716550 } ] }Cashback history
GET
/v1/rewards/cashbackopendataLists cashback_amount and cashback_point rows credited from paylater spend, plus the running total_cashback.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- transaction_id
- cashback_amount
- cashback_point
- potential_cashback
- total_cashback
GET /v1/rewards/cashback HTTP/1.1{ "items": [ { "transaction_id": "TRX-882144", "cashback_amount": 25000, "cashback_point": 250, "potential_cashback": 0 } ], "total_cashback": 185000 }Request limit increase
POST
/v1/limit/increaseopenfinanceSubmits a revolving-limit increase after the in-store or SPG flow; the response echoes the new total_limit and whether is_limit_increase was accepted.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- is_limit_increase
- total_limit
- availableLimit
- edu_score
- account_status
POST /v1/limit/increase HTTP/1.1 Content-Type: application/json { "kredivo_user_id": "KV-10028441" }{ "is_limit_increase": true, "total_limit": 30000000, "availableLimit": 22500000, "edu_score": "AA", "account_status": "PENDING_REVIEW" }Repayment payment channels
GET
/v1/payment/channelsopenbankingLists the virtual-account and other repayment rails the borrower can use, including the saved frequent_payment_channel and the va_number shown on the bill-pay screen.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- frequent_payment_channel
- payment_channel
- payment_channel_id
- payment_channel_name
- va_number
- va_number_formatted
GET /v1/payment/channels HTTP/1.1{ "frequent_payment_channel": "VA_BCA", "channels": [ { "payment_channel": "VA_BCA", "payment_channel_id": "bca_va", "payment_channel_name": "BCA Virtual Account", "va_number": "7001234567890123", "va_number_formatted": "7001 2345 6789 0123" } ] }Nearby merchant stores
GET
/v1/stores/nearbyopendataReturns paylater-accepting stores near the device GPS fix, with store_name, merchant_name and store_distance used by the shop-nearby map.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- store_id
- store_name
- merchant_name
- store_distance
- latitude
- longitude
GET /v1/stores/nearby?latitude=-6.186486&longitude=106.834091 HTTP/1.1{ "stores": [ { "store_id": "ST-ALFA-8841", "store_name": "Alfamart Menteng", "merchant_name": "Alfamart", "store_distance": 0.42, "latitude": -6.1869, "longitude": 106.8332 } ] }Motorcycle EV eligibility
GET
/v1/ev/eligibilityopenfinanceChecks whether the signed-in borrower can start motorcycle-EV financing, returning buying_purpose, required down_payment_amount and remaining availableLimit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- ineligibleReason
- buying_purpose
- down_payment_amount
- availablePayments
- availableLimit
GET /v1/ev/eligibility HTTP/1.1{ "eligible": true, "ineligibleReason": null, "buying_purpose": "PERSONAL", "down_payment_amount": 2500000, "availablePayments": ["PAYLATER", "INSTALLMENT"], "availableLimit": 12500000 }Motorcycle EV installment quote
POST
/v1/ev/quoteopenfinancePrices a motorcycle-EV financing plan on the simulation screen: down_payment_amount, tenure, monthly installment_amount and remaining availableLimit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- down_payment_amount
- tenure
- installment_amount
- total_installment_amount
- interest_rate
- availableLimit
- buying_purpose
POST /v1/ev/quote HTTP/1.1 Content-Type: application/json { "down_payment_amount": 2500000, "tenure": 18, "buying_purpose": "PERSONAL" }{ "down_payment_amount": 2500000, "tenure": 18, "installment_amount": 685000, "total_installment_amount": 12330000, "interest_rate": 0.0199, "availableLimit": 12500000, "buying_purpose": "PERSONAL" }Krom digital-bank linkage
POST
/v1/savings/linkopenbankingStarts or returns the Krom savings-account linkage used on the limit-center Krom card, with krom_account_number and krom_account_status.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- krom_account_number
- krom_account_status
- krom_account_info
- legal_name
- account_status
POST /v1/savings/link HTTP/1.1 Content-Type: application/json { "kredivo_user_id": "KV-10028441" }{ "krom_account_number": "8880123456789", "krom_account_status": "LINKED", "krom_account_info": { "legal_name": "Siti Nurhaliza", "account_status": "ACTIVE" } }Krom savings balances
GET
/v1/savings/balanceopenbankingReads the linked Krom savings snapshot used for mix-payment checkout: krom_balance, krom_balance_available and krom_account_status.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- krom_account_number
- krom_account_status
- krom_balance
- krom_balance_available
- krom_account_info
GET /v1/savings/balance HTTP/1.1{ "krom_account_number": "8880123456789", "krom_account_status": "LINKED", "krom_balance": 1450000, "krom_balance_available": 1450000, "krom_account_info": { "status": "ACTIVE" } }Loan restructure detail
GET
/v1/loans/restructureopenfinanceLoads one bill-extension / loan-restructure case: loan_restructure_id, loan_restructure_status and the outstanding_amount being rescheduled.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- loan_restructure_id
- restructure_id
- loan_restructure_status
- outstanding_amount
- kredivo_transaction_id
GET /v1/loans/restructure?loan_restructure_id=RS-44102 HTTP/1.1{ "loan_restructure_id": "RS-44102", "restructure_id": "RS-44102", "loan_restructure_status": "PENDING_CONFIRM", "outstanding_amount": 3716550, "kredivo_transaction_id": "TRX-882144" }KKI card detail
GET
/v1/card/detailopenbankingReturns the KKI virtual-card / QRIS card face: masked card_number and card_account_status shown on the card-detail popup.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- card_number
- card_account_status
- qris_account_status
- kredivo_user_id
GET /v1/card/detail HTTP/1.1{ "card_number": "6288********4412", "card_account_status": "ACTIVE", "qris_account_status": "ACTIVE", "kredivo_user_id": "KV-10028441" }NPWP tax-ID check
POST
/v1/kyc/tax-idosintValidates the borrower's Indonesian NPWP tax number during registration and limit-increase, returning has_npwp and the matched legal_name.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- npwp_number
- npwpNumber
- has_npwp
- legal_name
POST /v1/kyc/tax-id HTTP/1.1 Content-Type: application/json { "npwp_number": "10.123.456.7-012.000", "npwpNumber": "101234567012000" }{ "npwp_number": "10.123.456.7-012.000", "npwpNumber": "101234567012000", "has_npwp": true, "legal_name": "Siti Nurhaliza" }Income statement
GET
/v1/kyc/incomeopenfinanceReturns the declared monthly_income and income_source used by underwriting and the in-store limit-increase income-proof step.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- monthly_income
- income_source
- other_income_source
- npwp
- has_npwp
GET /v1/kyc/income HTTP/1.1{ "monthly_income": 8500000, "income_source": "SALARY", "other_income_source": null, "npwp": "10.123.456.7-012.000", "has_npwp": true }Borrower address
GET
/v1/profile/addressosintLoads the KYC residence card: user_address, province, city and postal_code used by activation and Krom registration forms.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- user_address
- address_detail
- province
- city
- postal_code
GET /v1/profile/address HTTP/1.1{ "user_address": "Jl. Menteng Raya No. 12", "address_detail": "Rt 003/Rw 005", "province": "DKI Jakarta", "city": "Jakarta Pusat", "postal_code": "10310" }Biller product inquiry
POST
/v1/billers/inquireopendataLooks up a prepaid or postpaid biller product before checkout: account_name on the meter/phone, denomination and admin_fee charged to the paylater line.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- product_code
- customer_id
- account_name
- operator_name
- denomination
- admin_fee
POST /v1/billers/inquire HTTP/1.1 Content-Type: application/json { "product_code": "PLN_PREPAID_50K", "customer_id": "12345678901", "operator_name": "PLN" }{ "product_code": "PLN_PREPAID_50K", "customer_id": "12345678901", "account_name": "SITI NURHALIZA", "operator_name": "PLN", "denomination": 50000, "admin_fee": 2500 }Recurring bill subscriptions
GET
/v1/billers/subscriptionsopendataLists auto-pay biller subscriptions charged to the paylater line: subscription_id, bill type, meter/phone account, cadence and the next_payment_amount.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- subscription_id
- external_subscription_id
- subscription_bill_type
- subscription_provider_code
- subscription_account_number
- subscription_frequency
- subscription_day
- next_payment_amount
GET /v1/billers/subscriptions HTTP/1.1{ "subscriptions": [ { "subscription_id": "SUB-PLN-4412", "external_subscription_id": "ext_pln_4412", "subscription_bill_type": "PLN_PREPAID", "subscription_provider_code": "PLN", "subscription_account_number": "12345678901", "subscription_frequency": "MONTHLY", "subscription_day": 25, "next_payment_amount": 52500 } ] }In-store QR checkout
POST
/v1/checkout/qropenfinanceCharges the revolving line at a cashier QR/barcode: merchant_id, chosen payment_type and remaining availableLimit after the scan.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- transaction_id
- transaction_token
- merchant_id
- merchant_name
- payment_type
- available_payment_types
- availableLimit
- transaction_status
POST /v1/checkout/qr HTTP/1.1 Content-Type: application/json { "merchant_id": "M-ALFA-8841", "transaction_token": "tt_9c21ab", "payment_type": "PAYLATER", "availableLimit": 12500000 }{ "transaction_id": "TRX-990211", "transaction_token": "tt_9c21ab", "merchant_id": "M-ALFA-8841", "merchant_name": "Alfamart Menteng", "payment_type": "PAYLATER", "available_payment_types": ["PAYLATER", "INSTALLMENT"], "availableLimit": 11950000, "transaction_status": "SUCCESS" }NFC e-money card scan
POST
/v1/topup/nfc-scanopenbankingReads a tapped Mandiri e-money, BCA Flazz or BNI TapCash card over NFC and returns nfcCardType plus cardBalance so the top-up screen can charge the remaining availableLimit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- nfcCardType
- cardBalance
- nfcResult
- nfcResultModel
- availableLimit
POST /v1/topup/nfc-scan HTTP/1.1 Content-Type: application/json { "nfcCardType": "MANDIRI_EMONEY", "nfcResult": "iso_dep_payload" }{ "nfcCardType": "MANDIRI_EMONEY", "cardBalance": 125000, "nfcResultModel": { "nfcCardType": "MANDIRI_EMONEY", "cardBalance": 125000 }, "availableLimit": 12500000 }KrediShield insurance product
GET
/v1/checkout/addons/insuranceopenfinanceQuotes the optional KrediShield premium attached to a paylater or pinjaman checkout: insurance_fee, insurance_fee_per_day and the insurance_agreement_html shown on the toggle.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- apply_insurance
- insurance_amount
- insurance_fee
- insurance_fee_per_day
- insurance_fee_per_month
- insurance_agreement_html
GET /v1/checkout/addons/insurance HTTP/1.1{ "apply_insurance": true, "insurance_amount": 18500, "insurance_fee": 18500, "insurance_fee_per_day": 650, "insurance_fee_per_month": 18500, "insurance_agreement_html": "<p>KrediShield...</p>" }Voucher wallet list
GET
/v1/vouchersopendataPages the signed-in voucher wallet used at paylater checkout: voucher_code, discount_amount, min_transaction_amount and redeem_expiry_date.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- voucher_id
- user_voucher_id
- voucher_code
- voucher_name
- voucher_type
- discount_amount
- min_transaction_amount
- redeem_expiry_date
GET /v1/vouchers HTTP/1.1{ "vouchers": [ { "voucher_id": "VC-ALFA-8841", "user_voucher_id": "UV-10028441", "voucher_code": "ALFA50K", "voucher_name": "Alfamart Rp50rb", "voucher_type": "MERCHANT", "discount_amount": 50000, "min_transaction_amount": 150000, "redeem_expiry_date": "2026-11-30" } ] }FDC bureau cool-off
GET
/v1/credit-bureau/cooloffopenfinanceReads Fintech Data Center (FDC) cool-off flags before a pinjaman or paylater confirm: is_cool_off_fdc and pl_cool_off_fdc gate whether the borrower can take a new loan.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- is_cool_off_fdc
- fdc_cool_off
- pl_cool_off_fdc
- kredivo_user_id
GET /v1/credit-bureau/cooloff HTTP/1.1{ "is_cool_off_fdc": false, "fdc_cool_off": false, "pl_cool_off_fdc": false, "kredivo_user_id": "KV-10028441" }Payment-holiday product
GET
/v1/checkout/addons/holidayopenfinanceQuotes the optional skip-a-cycle payment holiday attached to a checkout: payment_holiday_allowed, payment_holiday_fee and payment_holiday_fee_per_day shown on the toggle.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- payment_holiday_allowed
- payment_holiday_enabled
- payment_holiday_fee
- payment_holiday_fee_per_day
- payment_holiday_description
GET /v1/checkout/addons/holiday HTTP/1.1{ "payment_holiday_allowed": true, "payment_holiday_enabled": true, "payment_holiday_fee": 35000, "payment_holiday_fee_per_day": 1200, "payment_holiday_description": "Skip this cycle for a fee" }Krom mix-payment limit
GET
/v1/savings/mixpaymentopenbankingReturns how much of a checkout can be split onto the linked Krom savings balance versus the revolving line: eligible_for_krom_mixpayment, krom_balance_available and remaining availableLimit.
Auth: Bearer access_token from POST /v1/auth/pin-session (mobile_number + pin); X-Session
- eligible_for_krom_mixpayment
- krom_balance
- krom_balance_available
- krom_account_status
- availableLimit
GET /v1/savings/mixpayment HTTP/1.1{ "eligible_for_krom_mixpayment": true, "krom_balance": 1450000, "krom_balance_available": 1450000, "krom_account_status": "LINKED", "availableLimit": 12500000 }
Data categories
- credit limits
- paylater bills
- QRIS outstanding
- credit score
- linked banks
- transactions
- loyalty points
- repayment channels
- Krom linkage
- EV motorcycle financing
- installment quotes
- income declaration
- NPWP tax ID
- biller inquiry
- recurring bills
- in-store QR checkout
- NFC e-money
- KrediShield insurance
- vouchers
- FDC cool-off
- payment holiday
- Krom mix-payment
Where teams use this data
Paylater limit monitoring
A lender or BNPL aggregator polls availableLimit and total_limit nightly so collection and underwriting desks see remaining revolving headroom before a new checkout is allowed.
Bill and late-fee reconciliation
Finance ops match kredivo_outstanding_due_amount, kredivo_payment_due_date and kredivo_late_fee_amount against bank VA credits so overdue IDR bills are flagged the same day they age.
QRIS KKI exposure dashboard
A merchant-risk desk reads qris_outstanding_due_amount and qris_account_status to separate cashier-scan debt from in-app paylater debt on the same borrower.
NFC top-up and voucher checkout feed
A wallet or merchant POS reads nfcCardType and cardBalance from a tapped Mandiri/Flazz/TapCash card, then applies voucher_code and discount_amount against remaining availableLimit before the paylater charge posts.
Frequently asked questions
What credit-limit fields does Kredivo expose?
The limit read returns availableLimit, total_limit and user_available_limit for the signed-in revolving line. A separate limit-increase write asks for a higher total_limit after the in-store or SPG limit-increase flow and echoes is_limit_increase with the new total_limit and account_status.
How are paylater bills different from QRIS bills?
The upcoming-bills read returns kredivo_outstanding_due_amount alongside qris_outstanding_due_amount, each with its own due date and status, so in-app paylater debt sits next to cashier QRIS debt on the same borrower. QRIS KKI detail comes from the QR dashboard and the per-period statement read; in-app paylater loan rows sit on the open-loans read.
How does the app authenticate these calls?
The login call takes mobile_number and pin and mints access_token, refresh_token and user_token. Later calls send Authorization: Bearer plus an X-Session header, and the checkout flow re-checks the PIN before a charge posts.
Is Kredivo Score part of the same surface?
Yes. The score-map read returns edu_score, previous_edu_score and the kredivoScore grade shown on the score and limit-center screens. Those grades gate tenure pricing and limit-increase eligibility.
Apps similar to Kredivo - Paylater & Pinjaman
- Akulaku — Akulaku combines cash loans, PayLater and merchant installments in one Indonesian app, with financing from OJK-licensed PT Akulaku Finance Indonesia.
- Indodana PayLater — Indodana PayLater is an OJK-supervised Indonesian buy-now-pay-later line of up to Rp50 million, repaid in 30 days or in 3-, 6-, 12-, 18- or 24-month installments at partner merchants.
- Home Credit Indonesia — Home Credit Indonesia (PT Home Credit Indonesia) finances phones, TVs, laptops and other goods in store or online on installment plans, and also offers cash financing.
- Easycash - Pinjaman Daring — Easycash is an OJK-licensed Indonesian unsecured cash-loan app offering IDR 100,000 to IDR 100,000,000 over 3–12 months without a credit card.
- Tunaiku - Pinjaman Dana Online — Tunaiku is PT Bank Amar Indonesia's OJK-licensed unsecured cash-loan (KTA) app, disbursing IDR 2 million to IDR 30 million over 6–30 months.
- JULO — JULO is an OJK-supervised Indonesian digital-credit app whose one limit can be drawn as cash, e-wallet top-ups, or paylater spend on Tokopedia, Shopee, Lazada, Blibli and TikTok Shop.
- AdaKami — AdaKami is an OJK-licensed Indonesian online cash-loan platform that disburses unsecured funds on a published 30-day installment cycle and states it does not deduct fees up front.
- Singa Fintech-Digital Loans — Singa Fintech is PT Abadi Sejahtera Finansindo's OJK-licensed Indonesian cash-loan app, with published limits from IDR 1.1 million to IDR 48 million.
Topics
- Kredivo API
- Kredivo paylater data
- availableLimit
- kredivo_outstanding_due_amount
- QRIS KKI bills
- edu_score
- PT Kredivo Finance Indonesia
- Indonesia BNPL API
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