Kredivo - Paylater & Pinjaman icon

Kredivo Paylater & Pinjaman Data API

PT Kredivo Finance Indonesia · Lending 4.8 ★

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

  • Kredivo - Paylater & Pinjaman screenshot 1
  • Kredivo - Paylater & Pinjaman screenshot 2
  • Kredivo - Paylater & Pinjaman screenshot 3
  • Kredivo - Paylater & Pinjaman screenshot 4

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-session osint

    Signs 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/identity osint

    Loads 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
    • email
    • 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/available openfinance

    Reads 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-line openbanking

    Returns 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/upcoming openfinance

    Feeds 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/period openfinance

    Returns 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/open openfinance

    Lists 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/quote openfinance

    Quotes 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/dashboard openbanking

    Loads 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/status openbanking

    Checks 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/grade opendata

    Returns 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/linked openbanking

    Lists 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/points opendata

    Reads 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/transactions openfinance

    Pages 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/cashback opendata

    Lists 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/increase openfinance

    Submits 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/channels openbanking

    Lists 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/nearby opendata

    Returns 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/eligibility openfinance

    Checks 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/quote openfinance

    Prices 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/link openbanking

    Starts 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/balance openbanking

    Reads 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/restructure openfinance

    Loads 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/detail openbanking

    Returns 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-id osint

    Validates 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/income openfinance

    Returns 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/address osint

    Loads 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/inquire opendata

    Looks 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/subscriptions opendata

    Lists 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/qr openfinance

    Charges 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-scan openbanking

    Reads 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/insurance openfinance

    Quotes 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/vouchers opendata

    Pages 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/cooloff openfinance

    Reads 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/holiday openfinance

    Quotes 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/mixpayment openbanking

    Returns 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

Get a quote