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/