Kredivo Confirmation API

Confirming a transaction after a push notification.

OpenAPI Specification

kredivo-confirmation-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kredivo Checkout Calculator Confirmation 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: Confirmation
  description: Confirming a transaction after a push notification.
paths:
  /kredivo/v2/update:
    get:
      operationId: confirmTransaction
      tags:
      - Confirmation
      summary: Confirm a transaction from a push notification
      description: 'Called by the merchant in response to a push notification delivered to `push_uri`, to

        validate that the notification really originated from Kredivo and to read the authoritative

        transaction state. Both the `transaction_id` and the `signature_key` come from the

        notification payload.

        '
      parameters:
      - name: transaction_id
        in: query
        required: true
        description: Transaction ID given by Kredivo.
        schema:
          type: string
        example: bb0380d7-2688-4e73-a668-997f3fc5cbec
      - name: signature_key
        in: query
        required: true
        description: Signature key used to validate that the notification originated from Kredivo.
        schema:
          type: string
      responses:
        '200':
          description: Authoritative transaction state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionStatus'
              examples:
                settled:
                  value:
                    status: OK
                    legal_name: TANDRA
                    fraud_status: accept
                    order_id: KD125262
                    transaction_time: 1501846094
                    amount: '1500100.00'
                    payment_type: 30_days
                    transaction_status: settlement
                    message: Confirmed order status. Valid!
                    transaction_id: fadee4e5-99a2-48d6-952d-007f3fa508e8
components:
  schemas:
    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
    TransactionStatus:
      type: object
      properties:
        status:
          type: string
          enum:
          - OK
          - ERROR
        message:
          type: string
        legal_name:
          type: string
        external_userid:
          type: string
        order_id:
          type: string
        transaction_id:
          type: string
        transaction_time:
          type: integer
          description: UNIX epoch timestamp.
        amount:
          type: string
        discount_amount:
          type: number
        payment_type:
          $ref: '#/components/schemas/PaymentType'
        sub_merchant_id:
          type: string
        user_token:
          type: string
        transaction_status:
          type: string
          description: 'settlement — transaction successful; pending — shopper has not completed the

            transaction; deny — denied by Kredivo; cancel — cancelled by the merchant;

            expire — shopper did not complete, transaction expired.

            '
          enum:
          - settlement
          - pending
          - deny
          - cancel
          - expire
        fraud_status:
          type: string
          description: 'accept — approved by the Fraud Detection System; deny — denied by FDS, the transaction

            automatically fails.

            '
          enum:
          - accept
          - deny
        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
  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/