Kredivo Calculator API

Installment, interest and service-fee breakdown.

OpenAPI Specification

kredivo-calculator-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kredivo Checkout Calculator API
  version: v2
  summary: Merchant-facing installment ("Buy Now, Pay Later") checkout API for Kredivo.
  description: "The Kredivo Checkout API lets an ecommerce store, marketplace, POS or EDC terminal offer\nKredivo installment payment at checkout.\n\nSurfaces documented by Kredivo:\n\n* **2-click Checkout** — merchant posts the cart, receives a `redirect_url`, and sends the\n  shopper to Kredivo to authenticate with phone + PIN + OTP.\n* **0-click Checkout** — once a shopper is tokenized (`tokenize_user: true` /\n  `client_user_key`), later purchases are placed with the stored `user_token`.\n* **QR Checkout** — dynamic (per-transaction) or static (per-store) QR for physical stores.\n* **EDC Checkout** — checkout initiated from a physical EDC terminal, with reversal support.\n* **Additional APIs** — transaction status, full/partial cancellation, and an installment\n  and interest calculator.\n\nEvery operation authenticates with the per-merchant `server_key` carried **in the JSON\nrequest body**, not in a header. Transaction outcomes arrive asynchronously as an HTTP POST\nto the merchant's `push_uri`; the merchant confirms by calling `GET /kredivo/v2/update`\nwith the `transaction_id` and `signature_key` from the notification.\n\nThis description was generated by the API Evangelist enrichment pipeline from Kredivo's\npublished developer documentation at https://doc.kredivo.com/. It is a faithful\ntranscription of the documented request/response surface — it is not published by Kredivo.\n"
  contact:
    name: Kredivo Merchant Operations
    email: merchops@finaccel.co
    url: https://doc.kredivo.com/
  termsOfService: https://kredivo.com/p/in/tos.html
  x-generated: '2026-07-19'
  x-method: generated
  x-source: https://doc.kredivo.com/
servers:
- url: https://sandbox.kredivo.com
  description: Sandbox. Published server key and test account are documented under Environment Setup.
- url: https://{productionHost}
  description: 'Production. Kredivo does not publish the production endpoint; merchants must request it from

    merchops@kredivo.com before going live.

    '
  variables:
    productionHost:
      default: production-endpoint-provided-by-kredivo
      description: Production host supplied by Kredivo merchant operations.
tags:
- name: Calculator
  description: Installment, interest and service-fee breakdown.
paths:
  /kredivo/v2/payments:
    post:
      operationId: calculatePayments
      tags:
      - Calculator
      summary: Calculate installment options for a cart
      description: 'Returns the available payment types for a cart with their full cost breakdown — tenure,

        interest rate, service fee, monthly installment and total amount — so the merchant can

        render Kredivo''s installment options before checkout.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentsRequest'
            example:
              server_key: 8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7
              user_token: XXX-XXX
              amount: 2400000
              items:
              - id: BB12345678
                name: iPhone 5S
                price: 2400000
                url: http://merchant.com/cellphones/iphone5s_64g
                type: Smartphone
                quantity: 1
      responses:
        '200':
          description: Available installment options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsResponse'
              example:
                payments:
                - id: 30_days
                  name: Bayar dalam 30 hari
                  tenure: 1
                  amount: 2424000
                  raw_amount: 2424000.0
                  raw_monthly_installment: 2423999.801457357
                  service_fee: 24000
                  interest_rate: '0'
                  rate: 0.0
                message: Available payment types are listed.
                status: OK
components:
  schemas:
    PaymentsResponse:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
        payments:
          type: array
          items:
            type: object
            properties:
              id:
                $ref: '#/components/schemas/PaymentType'
              name:
                type: string
              tenure:
                type: integer
              amount:
                type: integer
              raw_amount:
                type: number
              raw_monthly_installment:
                type: number
              service_fee:
                type: number
              service_fee_percentage:
                type: number
              interest_rate:
                type: string
              rate:
                type: number
              discount_interest_rate:
                type:
                - number
                - 'null'
              mdr:
                type:
                - number
                - 'null'
        error:
          $ref: '#/components/schemas/ErrorDetail'
    PaymentType:
      type: string
      description: Installment tenure chosen by the shopper.
      enum:
      - 30_days
      - 3_months
      - 6_months
      - 9_months
      - 12_months
      - 18_months
      - 24_months
    PaymentsRequest:
      type: object
      required:
      - server_key
      - amount
      - items
      properties:
        server_key:
          type: string
        user_token:
          type: string
        amount:
          type: number
          format: double
        items:
          type: array
          items:
            $ref: '#/components/schemas/ProductItem'
    ProductItem:
      type: object
      description: 'A cart line. Beyond real SKUs, Kredivo reserves the ids `shippingfee`, `adminfee`, `taxfee`,

        `discount`, `additionalfee`, `insurancefee` and `mixpayment` for non-product lines.

        '
      required:
      - id
      - name
      - price
      - quantity
      properties:
        id:
          type: string
          description: SKU, or one of the reserved fee/discount ids.
        name:
          type: string
        price:
          type: number
          format: double
        type:
          type: string
          description: Product category.
        url:
          type: string
          description: Product URL on the merchant site.
        image_url:
          type: string
        quantity:
          type: integer
        parent_type:
          type: string
          enum:
          - SELLER
          - ITEM
        parent_id:
          type: string
          description: Seller or item id this line belongs to.
    ErrorDetail:
      type: object
      description: Kredivo's error envelope. Note the API returns HTTP 200 with status ERROR.
      properties:
        kind:
          type: string
          description: Type of error.
        code:
          type:
          - integer
          - 'null'
          description: Numeric error code. May be null.
        message:
          type: string
  securitySchemes:
    serverKey:
      type: apiKey
      in: header
      name: server_key
      description: 'NOTE ON MODELLING: Kredivo does not use a header or an HTTP auth scheme. The per-merchant

        `server_key` is sent as a **field in the JSON request body** of every operation, which

        OpenAPI cannot express as a security scheme. This entry documents the credential so tooling

        can see it; the body field `server_key` on each request schema is the real carrier. See

        authentication/kredivo-authentication.yml.

        '
      x-actual-location: request-body
      x-actual-field: server_key
externalDocs:
  description: Kredivo developer documentation
  url: https://doc.kredivo.com/