Kredivo Tokenization API

Managing tokenized (0-click) shoppers and their credit limits.

OpenAPI Specification

kredivo-tokenization-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kredivo Checkout Calculator Tokenization 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: Tokenization
  description: Managing tokenized (0-click) shoppers and their credit limits.
paths:
  /kredivo/v2/deactive_user_token:
    post:
      operationId: deactivateUserToken
      tags:
      - Tokenization
      summary: Deactivate a tokenized user
      description: 'Invalidates a `user_token`, ending 0-click eligibility for that shopper. A shopper can also

        deactivate a tokenized account from the Kredivo app, in which case Kredivo sends a push

        notification to a merchant endpoint registered with Kredivo so the merchant can invalidate

        the token on its side.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserTokenRequest'
            example:
              server_key: ABCD-XXXX-1234
              user_token: XXXX-YYYY
      responses:
        '200':
          description: Token deactivation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserTokenResponse'
              examples:
                ok:
                  value:
                    Status: OK
                    user_token: XXXX-YYYY
                    is_active: false
                    remarks: deactive user successful
                invalidToken:
                  value:
                    status: ERROR
                    error:
                      kind: deprecated
                      message: Invalid user_token
                      code: null
  /kredivo/v2/get_user_credit_details:
    post:
      operationId: getUserCreditDetails
      tags:
      - Tokenization
      summary: Get a tokenized user's remaining credit limit
      description: 'Returns the remaining limit, account status and account type of a tokenized shopper, broken

        down per installment tenure. Requires a valid `user_token`.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserTokenRequest'
            example:
              server_key: ABCD-XXXX-1234
              user_token: XXXX-YYYY
      responses:
        '200':
          description: Shopper identity and per-tenure remaining credit limits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreditDetailsResponse'
              example:
                Status: OK
                user_details:
                  legal_name: Rangge Septyo
                  mobile_number: 62812xxxx0581
                user_credit_details:
                  account_status: 1
                  account_type: 2
                  credit_limit_details:
                  - payment_type: 30_days
                    remaining_user_limit: '1500000'
                  - payment_type: 3_months
                    remaining_user_limit: '4500000'
components:
  schemas:
    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
    UserTokenResponse:
      type: object
      properties:
        Status:
          type: string
        status:
          type: string
        user_token:
          type: string
        is_active:
          type: boolean
          description: When false, Kredivo cannot provide user credit details for this token.
        remarks:
          type: string
        error:
          $ref: '#/components/schemas/ErrorDetail'
    UserCreditDetailsResponse:
      type: object
      properties:
        Status:
          type: string
        user_details:
          type: object
          properties:
            legal_name:
              type: string
            mobile_number:
              type: string
        user_credit_details:
          type: object
          properties:
            account_status:
              type: integer
            account_type:
              type: integer
            credit_limit_details:
              type: array
              items:
                type: object
                properties:
                  payment_type:
                    $ref: '#/components/schemas/PaymentType'
                  remaining_user_limit:
                    type: string
        error:
          $ref: '#/components/schemas/ErrorDetail'
    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
    UserTokenRequest:
      type: object
      required:
      - server_key
      - user_token
      properties:
        server_key:
          type: string
        user_token:
          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/