NAV
shell

Getting Started

Introduction

Simplifying buying

Use the Kredivo Checkout API to let Kredivo users pay on your web or app platform.

The checkout API is one API with several variants. Each variant fits a specific use case and differs only in the parameters you pass:

Online checkout (web and app):

Offline checkout (in-store):

Optimized for all devices More sales with no risk
Kredivo Checkout adapts to desktop and mobile devices, so you get the same conversion on mobile as on desktop. One-click buying increases conversion by an additional 29% for returning customers. Kredivo assumes all risk for both the customer and the merchant, so you have no charge-backs.

Preparation

Prepare your site

Set up the following before you start integrating, so the integration goes quickly.

Checkout page and confirmation page

You host both the checkout page and the checkout confirmation page. Each page must include a div that you populate with the Kredivo Checkout button. See 2-Click Checkout to learn how the checkout works. Kredivo Checkout is responsive and always uses the full width of its container.

What customers see

Kredivo Checkout adapts to the customer’s device. The login step looks like this on mobile and desktop browsers:

Kredivo Checkout login on a mobile browser
Mobile web
Kredivo Checkout login on a desktop browser with order summary
Desktop web

Push notification URI

Kredivo sends the order status to your push notification URI (see Confirm Transaction). Include a placeholder in the push URI; Kredivo replaces it with the order URI when it sends the push notification. Download an example push URI.

Developer Help

For help with the documentation or the sandbox environment, email merchops@finaccel.co.

To get a merchant account, sign up as a Kredivo merchant.

Developer FAQ

  1. Does Kredivo work on desktop and mobile? Yes. Kredivo works on desktop, mobile, and tablet web.
  2. I am not a retailer, but I want to offer Kredivo financial products on my site or app. Do you have an API for that? If you are interested in using Kredivo for your site/app, sign up at kredivo.id/jadi-partner.html.
  3. Is Kredivo another payment processor? No. Kredivo is a point-of-sale credit solution for your customers.

Online Checkout

Online checkout is for web and app platforms, where the Kredivo user pays on your platform.

2-Click Checkout

2-click checkout is the standard Kredivo checkout for web and app platforms. Use it when the Kredivo user should log in with their phone number, PIN, and OTP for each transaction.

The flow:

sequenceDiagram autonumber actor User participant Merchant participant Kredivo User->>Merchant: Choose Kredivo and a payment type Merchant->>Kredivo: POST /kredivo/v2/checkout_url Kredivo–>>Merchant: status OK + redirect_url Merchant->>User: Redirect to Kredivo checkout page User->>Kredivo: Log in with phone number, PIN, and OTP Kredivo->>Kredivo: Approve transaction Kredivo->>Merchant: POST push_uri (transaction_id, signature_key, …) Merchant–>>Kredivo: status OK, message Merchant->>Kredivo: GET /kredivo/v2/update (transaction_id, signature_key) Kredivo–>>Merchant: Order status Kredivo->>User: Redirect to back_to_store_uri
  1. Call the checkout API with all required parameters.
  2. On success, the response contains a redirect_url.
  3. Redirect the Kredivo user to redirect_url to open the Kredivo payment page.

You need at least these three values to get a payment page:

Initiate 2-Click Checkout

Call checkout_url to create a 2-click checkout and get the payment page URL.

HTTP request

POST /kredivo/v2/checkout_url

Example request:

{
    "server_key":"MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
    "payment_type":"30_days",
    "client_user_key": "yospe@finaccel.co",
    "transaction_details": {
        "amount":6505000,
        "order_id":"KD14721",
        "items": [
            {
                "id":"BB12345678",
                "name":"iPhone 5S",
                "price":6000000,
                "type":"Smartphone",
                "url":"http://merchant.com/cellphones/iphone5s_64g",
                "quantity":1
            },
            {
                "id":"AZ14565678",
                "name":"Hailee Sneakers Blink Silver",
                "price":250000,
                "url":"http://merchant.com/fashion/shoes/sneakers-blink-shoes",
                "type":"Sneakers",
                "quantity":2,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"taxfee",
                "name":"Tax Fee",
                "price":1000,
                "quantity":1
            },
            {
                "id":"shippingfee",
                "name":"Shipping Fee",
                "price":9000,
                "quantity":1,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"discount",
                "name":"Discount",
                "price":5000,
                "quantity":1
            }
        ]
    },
    "sellers":[
        {
            "id":"SELLER123",
            "name":"Sunrise",
            "email": "sunrise@gmail.com",
            "url":"https://onlineshop/seller/sunrise",
            "address" : {
                "first_name":"Irfan",
                "last_name":"Sutandro",
                "address":"Jalan Tentara Pelajar no 49",
                "city":"Jakarta Utara",
                "postal_code":"12960",
                "phone":"08123456789",
                "country_code":"IDN"
            }
        },
        {
            "id":"SELLER456",
            "name":"Toko Bagus",
            "email": "tokobagus@gmail.com",
            "url":"https://onlineshop/seller/tokobagus",
            "address" : {
                "first_name":"Toto",
                "last_name":"Wahyuni",
                "address":"Jalan Krinci raya IX no 1",
                "city":"Jakarta Selatan",
                "postal_code":"12960",
                "phone":"08123456789",
                "country_code":"IDN"
            }
        }
    ],
    "customer_details": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "email":"alie@satuduatiga.com",
        "phone":"081513114262"
    },
    "billing_address": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "address":"Jalan Teknologi Indonesia No. 25",
        "city":"Jakarta",
        "postal_code":"12960",
        "phone":"081513114262",
        "country_code":"IDN"
    },
    "shipping_address": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "address":"Jalan Teknologi Indonesia No. 25",
        "city":"Jakarta",
        "postal_code":"12960",
        "phone":"081513114262",
        "country_code":"IDN"
    },
    "metadata": {
        "ip_address":"192.168.88.1",
        "user_agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"
    },
    "push_uri":"https://api.merchant.com/push",
    "back_to_store_uri":"https://merchant.com"
}

Example response:


  Positive Response :

  {
    "status":"OK",
    "message":"Message if any",
    "redirect_url":"https://staging.kredivo.com/kredivo/v2/signin?tk=XXX"
  }

  Negative Response:

  {
    "status": "ERROR",
    "error": {
        "message": "Field secret_key is INCORRECT.",
        "kind": "APIException"
    }
  }

  and

  {
    "error": {
        "kind": "deprecated",
        "message": "This order is already PROCESSED.",
        "code": null
    },
    "status": "ERROR"
}

Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
payment_type string Yes Use 30_days or 12_months as a default. Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
client_user_key string Conditional Required if tokenize_user is true. Must be unique per user on your side
transaction_details object - Details of the transaction
customer_details object Yes Details of the customer
sellers array Conditional Required for marketplaces. Details of the seller for marketplaces
billing_address object No Billing address of the customer
shipping_address object Yes Shipping address of the customer. Required for physical goods (not tickets or vouchers).
metadata object No The metadata parameters.
push_uri string Yes Your push notification endpoint (receives HTTP POST).
user_cancel_uri string No URI Kredivo sends the customer to if they cancel the Kredivo payment before completion.
back_to_store_uri string Yes URI of your store page, used on the settlement page. Kredivo appends these parameters for your server to acknowledge: order_id: Order ID assigned by the merchant; tr_id: Transaction ID assigned by Kredivo;tr_status: Transaction status of a transaction; sign_key: Signature key used to verify that the notification came from Kredivo.
expiration_time string (epoch) No Defaults to 24 hours after the transaction time.

Response

Parameter Type Description
status string Status code (OK or ERROR)
message string Description of status
redirect_url string Returned for regular transactions. For an authenticated (tokenized) user: if our security system flags the transaction, this contains an OTP challenge URL; otherwise no redirect_url is returned and you wait for the push notification.
error object message: description of the error; kind: error type

Transaction

Parameter Type Required Description
order_id string Yes Order ID assigned by the merchant
amount number Yes The transaction amount
items array Yes The shopping items

Product item

Parameter Type Required Description
id string Yes Item ID, such as the product SKU. For fees and adjustments, you must use one of these IDs: shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee, mixpayment.
name string Yes Product name
price number Yes Price of the item.
url string Yes URL to the product item on merchant site.
image_url string No URL to the product item image.
type string Yes Product category.
quantity integer Yes Quantity of the item bought.
parent_type string No You can assign the fee to either SELLER or ITEM. If not specified, this will be tied to transaction level.
parent_id string No This is either the seller Id or item Id

Customer

Parameter Type Required Description
first_name string Yes
last_name string No
email string Yes
phone string Yes

Address

Parameter Type Required Description
first_name string Yes
last_name string No
address string Yes
city string Yes
postal_code string Yes
phone string Yes
country_code string Yes ISO 3166-1 alpha-3

Seller

Parameter Type Required Description
id string Yes Seller’s Id
name string Yes Seller’s name
url string Yes Seller’s url
legal_id string No Seller’s legal Id (KTP, SIM or passport number)
email string Yes Seller’s email
address object Yes Seller’s residential address

Metadata

Parameter Type Required Description
ip_address string No
user_agent string No
device_id string No IMEI or IMSI of buyer device
imsi string No

HTTP(S) header

Parameter Type Description
Content-Type string Application/json
Accept string Application/json

Confirm Transaction

After the Kredivo user completes a transaction, Kredivo sends you a push notification. Follow these steps to acknowledge it, verify it, and update the order in your system.

1. Receive notification from Kredivo

When the Kredivo user completes a purchase, Kredivo sends a POST request to the push_uri you provided when you created the checkout.

Example push notification:

{
    "status": "OK",
    "amount": "1500100.00",
    "payment_type": "30_days",
    "transaction_status": "pending",
    "order_id": "KD125262",
    "message": "Transaction status is pending",
    "shipping_address": {
        "city": "Jakarta Selatan",
        "first_name": "Darana 2",
        "last_name": "Pratama",
        "countrycode": "IDN",
        "creation_date": "2017-08-04T18:28:14",
        "phone": "0217248724",
        "state": "",
        "transaction": 1505866,
        "postcode": "12120",
        "location_details": "Jl. Kerinci IX No. 5-A"
    },
    "transaction_time": 1501846094,
    "transaction_id": "fadee4e5-99a2-48d6-952d-007f3fa508e8",
    "signature_key": "o5KZPDcxgEA9QutAVcIQwE3suQRkTEIA1VXcoHp7KaWJnpHx0uuHETBVpxfYLbaPyS8RJg34uVxTUX64cfUTzVVhCrSif%2FUg92J2WyLs%2FhQ%3D"
}

Push notification body

Parameter Type Required Description
status string - Status code (OK or ERROR)
message string - Description of status
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string - Transaction ID assigned by Kredivo
transaction_status string - Transaction status. Possible values:
- settlement: Transaction is successful
- pending: User has not completed the transaction
- deny: Transaction has been denied by Kredivo
- cancel: Transaction has been cancelled by merchant
- expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) - Timestamp of transaction
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
shipping_address object No Shipping address of the customer
order_id string - Order ID assigned by the merchant
amount string - The transaction amount
signature_key string - Signature key used to verify that the notification came from Kredivo.

Response address info

Parameter Type Required Description
city string No
first_name string No
last_name string No
countrycode string No
creation_date string No
phone string No
state string No
transaction integer No
postcode string No
location_details string No

2. Acknowledge the push notification

Respond with JSON structured like this:

  {
    "status":"OK",
    "message":"Message from merchant if any"
  }

3. Confirm the order status

Call update to get the order status and verify that the push notification came from Kredivo.

2-click confirm: HTTP request

GET /kredivo/v2/update?transaction_id=bb0380d7-2688-4e73-a668-997f3fc5cbec&signature_key=5f1fa4a524f5a8201a3a373d67b5796840bed1598b2bb816855d0e14d01cd09b988b4b861f39bed642b4db861108bbf0dd84ce8e17caf675d4bf2c81ab545397

2-click confirm: Request body

Parameter Type Description
transaction_id string Transaction ID assigned by Kredivo
signature_key string Signature key used to verify that the notification came from Kredivo.

Response body

Example response from v2/update:

{
    "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"
}
Parameter Type Description
status string Status code (OK or ERROR).
message string Description of status
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string Transaction ID assigned by Kredivo
transaction_status string Transaction status. Possible values:
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) Timestamp of transaction
order_id string Order ID assigned by the merchant
amount string The transaction amount
fraud_status string Fraud Detection System (FDS) result. Possible values: accept: Approved by FDS; deny: Denied by FDS. Transaction automatically failed
legal_name string Legal name on the Kredivo account
user_token string Once the user authentication succeeds, we will send you the user token. Use this token to enable the express checkout for the user. Currently the user token has no expiration.

4. Settle an order in your system

If transaction_status is settlement, settle the order in your system and store the order data you need.

Account Linking

Account linking lets a Kredivo user connect (bind) their Kredivo account to their account on your platform, usually before any transaction, without making a purchase.

When linking succeeds, Kredivo sends you a user_token for that user. Store it: it lets you access Kredivo services for the user with their consent, for example Get User Credit Details or 0-click checkout.

The flow:

sequenceDiagram autonumber actor User participant Merchant participant Kredivo User->>Merchant: Choose to connect Kredivo account Merchant->>Kredivo: POST /kredivo/v2/connect Kredivo–>>Merchant: status OK + redirect_url Merchant->>User: Redirect to Kredivo linking page (redirect_url) User->>Kredivo: Enter phone number and PIN alt Risk check requires OTP User->>Kredivo: Enter OTP end Kredivo->>Kredivo: Check user account and approve linking Kredivo->>Merchant: POST callback_url (user_token, client_user_key, status) Merchant->>Merchant: Store user_token for client_user_key Kredivo->>User: Redirect to merchant page (redirect_url from request)
  1. The user chooses to connect their Kredivo account on your platform.
  2. Call the account linking API. On success, the response contains a redirect_url to the Kredivo linking page.
  3. Redirect the user to redirect_url. The user enters their Kredivo phone number and PIN, then verifies with an OTP if Kredivo’s risk check requires it.
  4. Kredivo approves the linking and sends a push notification with the user_token to your callback_url.
  5. Kredivo redirects the user back to the redirect_url you sent in the request.

Call connect to start account linking and get the Kredivo linking page URL.

POST /kredivo/v2/connect

Example account linking request:

{
    "server_key": "MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
    "mobile_number": "+62-81381140446",
    "client_user_key": "test01@gmail.co",
    "callback_url": "https://merchant.example/kredivo/linking-callback",
    "redirect_url": "https://merchant.example"
}
Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
mobile_number string Yes Customer phone number in the format +62- followed by the number without the leading 0, for example +62-81381140446.
client_user_key string Yes Immutable unique user ID on your side. Must be unique per user.
callback_url string Yes Your endpoint that receives the linking push notification (HTTP POST).
redirect_url string Yes URI of your store to redirect the customer to after linking.

Example account linking success response:

{
    "status": "OK",
    "message": "",
    "redirect_url": "https://staging.kredivo.com/kredivo/v2/connect?tk=XXX"
}

Example account linking error response:

{
    "error": {
        "message": "Invalid merchant",
        "kind": "deprecated",
        "code": 2403
    },
    "status": "ERROR"
}
Parameter Type Description
status string Status code (OK or ERROR)
message string Description of status
redirect_url string URL of the Kredivo linking page. Open it so the user can complete account linking.
error object Returned when status is ERROR. See error details.

Receive Linking Notification

You must provide this endpoint. When the user completes linking, Kredivo sends a POST request to the callback_url you sent in the linking request.

POST {callback_url}

Example account linking callback from Kredivo:

{
    "message": "Kredivo-Connect success",
    "user_token": "e157ae57-ea5f-4acc-b7e6-11cac8c865f3",
    "client_user_key": "test01@gmail.co",
    "status": "OK"
}

Example account linking callback error:

{
    "message": "Invalid merchant",
    "user_token": "",
    "client_user_key": "test01@gmail.co",
    "status": "2403"
}
Parameter Type Required Description
message string Yes Message of the request
user_token string Yes Kredivo user token
client_user_key string Yes User ID on your side, as sent in the linking request
status string Yes OK on success; otherwise an error code, for example 2403 (Invalid merchant)

To unlink (unbind) a user, call POST /kredivo/v2/deactive_user_token with your server_key and the user’s user_token. When status is OK, the detokenization succeeded and you must invalidate the user_token on your side.

Example account unlinking success response:

{
    "status": "OK",
    "message": "",
    "remarks": "081513114262|Deactivated by merchant",
    "user_token": "9cc7f862-d4ac-49d2-88d6-050858bee3fd",
    "is_active": false
}

Users can also disconnect from the Kredivo app. Kredivo then sends a push notification with the client_user_key to the callback_url you provided during account linking, and you must invalidate that user’s user_token. See Deactivate from Kredivo app.

sequenceDiagram autonumber actor User participant Merchant participant Kredivo alt Merchant unlinks Merchant->>Kredivo: POST /kredivo/v2/deactive_user_token (server_key, user_token) Kredivo–>>Merchant: status OK, is_active false Merchant->>Merchant: Invalidate user_token else User disconnects in Kredivo app User->>Kredivo: Disconnect merchant in Kredivo app Kredivo->>Merchant: POST callback_url from linking (client_user_key) Merchant–>>Kredivo: status OK, message Merchant->>Merchant: Invalidate user_token end

0-Click Checkout

0-click checkout lets a Kredivo user tokenize their Kredivo account on your platform and then check out without entering anything. Use it for returning users. Regular (2-click) checkout asks for phone number, PIN, and OTP; 0-click asks for nothing, unless our security system flags the transaction, in which case the Kredivo user gets an OTP challenge.

The flow:

sequenceDiagram autonumber actor User participant Merchant participant Kredivo Note over User,Kredivo: User is already tokenized (first 2-click checkout with tokenize_user, or Account Linking) User->>Merchant: Open payment page Merchant->>Kredivo: POST /kredivo/v2/get_user_credit_details (user_token) Kredivo–>>Merchant: User and credit limit details Merchant->>User: Show Kredivo with eligible limit User->>Merchant: Choose Kredivo and a payment type Merchant->>Kredivo: POST /kredivo/v2/checkout_url (user_token) alt Risk check requires OTP Kredivo–>>Merchant: redirect_url (OTP challenge) Merchant->>User: Redirect to redirect_url User->>Kredivo: Enter OTP else No OTP required Kredivo–>>Merchant: No redirect_url end Kredivo->>Merchant: POST push_uri (transaction_id, signature_key, …) Merchant–>>Kredivo: status OK, message Merchant->>Kredivo: GET /kredivo/v2/update (transaction_id, signature_key) Kredivo–>>Merchant: Order status

Initiate 0-Click Checkout

Tokenize the Kredivo user through the regular checkout page by calling checkout_url.

  1. On the first call, set tokenize_user to true.
  2. When that transaction succeeds, you receive a user_token.
  3. Pass user_token in later calls. Those transactions are 0-click.

You can also get a user_token without a transaction through Account Linking. Before showing Kredivo on your payment page, you can call Get User Credit Details to show the user’s eligible limit.

0-click: HTTP request

POST /kredivo/v2/checkout_url

Example request:

{
    "server_key":"MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
    "payment_type":"30_days",
    "tokenize_user": false,
    "client_user_key": "yospe@finaccel.co",
    "user_token" : "XXXX-XXXX",
    "transaction_details": {
        "amount":6505000,
        "order_id":"KD14721",
        "items": [
            {
                "id":"BB12345678",
                "name":"iPhone 5S",
                "price":6000000,
                "type":"Smartphone",
                "url":"http://merchant.com/cellphones/iphone5s_64g",
                "quantity":1
            },
            {
                "id":"AZ14565678",
                "name":"Hailee Sneakers Blink Silver",
                "price":250000,
                "url":"http://merchant.com/fashion/shoes/sneakers-blink-shoes",
                "type":"Sneakers",
                "quantity":2,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"taxfee",
                "name":"Tax Fee",
                "price":1000,
                "quantity":1
            },
            {
                "id":"shippingfee",
                "name":"Shipping Fee",
                "price":9000,
                "quantity":1,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"discount",
                "name":"Discount",
                "price":5000,
                "quantity":1
            }
        ]
    },
    "sellers":[
        {
            "id":"SELLER123",
            "name":"Sunrise",
            "email": "sunrise@gmail.com",
            "url":"https://onlineshop/seller/sunrise",
            "address" : {
                "first_name":"Irfan",
                "last_name":"Sutandro",
                "address":"Jalan Tentara Pelajar no 49",
                "city":"Jakarta Utara",
                "postal_code":"12960",
                "phone":"08123456789",
                "country_code":"IDN"
            }
        },
        {
            "id":"SELLER456",
            "name":"Toko Bagus",
            "email": "tokobagus@gmail.com",
            "url":"https://onlineshop/seller/tokobagus",
            "address" : {
                "first_name":"Toto",
                "last_name":"Wahyuni",
                "address":"Jalan Krici raya IX",
                "city":"Jakarta Selatan",
                "postal_code":"12960",
                "phone":"08123456789",
                "country_code":"IDN"
            }
        }
    ],
    "customer_details": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "email":"alie@satuduatiga.com",
        "phone":"081513114262"
    },
    "billing_address": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "address":"Jalan Teknologi Indonesia No. 25",
        "city":"Jakarta",
        "postal_code":"12960",
        "phone":"081513114262",
        "country_code":"IDN"
    },
    "shipping_address": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "address":"Jalan Teknologi Indonesia No. 25",
        "city":"Jakarta",
        "postal_code":"12960",
        "phone":"081513114262",
        "country_code":"IDN"
    },
    "metadata": {
        "ip_address":"192.168.88.1",
        "user_agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0"
    },
    "push_uri":"https://api.merchant.com/push",
    "back_to_store_uri":"https://merchant.com"
}

Example response:


  Positive Response :

  {
    "status":"OK",
    "message":"Message if any",
    "redirect_url":"https://staging.kredivo.com/kredivo/v2/signin?tk=XXX"
  }

  Negative Response:

  {
    "status": "ERROR",
    "error": {
        "message": "Field secret_key is INCORRECT.",
        "kind": "APIException"
    }
  }

  and

  {
    "error": {
        "kind": "deprecated",
        "message": "This order is already PROCESSED.",
        "code": null
    },
    "status": "ERROR"
}

0-click: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
payment_type string Yes Use 30_days or 12_months as a default. Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
tokenize_user boolean No Defaults to false. Set to true to tokenize the Kredivo user. You receive user_token when the transaction is settled.
client_user_key string Conditional Required if tokenize_user is true. Must be unique per user on your side
user_token string Conditional Required for 0-click checkout. Kredivo uses it to authenticate the user.
transaction_details object - Details of the transaction
customer_details object Yes Details of the customer
sellers array Conditional Required for marketplaces. Details of the seller for marketplaces
billing_address object No Billing address of the customer
shipping_address object Yes Shipping address of the customer. Required for physical goods (not tickets or vouchers)
metadata object No The metadata parameters
push_uri string Yes Your push notification endpoint (receives HTTP POST)
user_cancel_uri string No URI Kredivo sends the customer to if they cancel the Kredivo payment before completion
back_to_store_uri string Yes URI of your store page, used on the settlement page. Kredivo appends these parameters for your server to acknowledge: order_id: Order ID assigned by the merchant; tr_id: Transaction ID assigned by Kredivo;tr_status: Transaction status of a transaction; sign_key: Signature key used to verify that the notification came from Kredivo.
expiration_time string (epoch) No Defaults to 24 hours after the transaction time.

0-click: Response

Parameter Type Description
status string Status code (OK or ERROR)
message string Description of status
redirect_url string Returned for regular transactions. For an authenticated (tokenized) user: if our security system flags the transaction, this contains an OTP challenge URL; otherwise no redirect_url is returned and you wait for the push notification.
error object message: description of the error; kind: error type

0-click: Transaction

Parameter Type Required Description
order_id string Yes Order ID assigned by the merchant
amount number Yes The transaction amount
items array Yes The shopping items

0-click: Product item

Parameter Type Required Description
id string Yes Item ID, such as the product SKU. For fees and adjustments, you must use one of these IDs: shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee, mixpayment.
name string Yes Product name
price number Yes Price of the item
url string Yes URL to the product item on merchant site
image_url string No URL to the product item image
type string Yes Product category.
quantity integer Yes Quantity of the item bought
parent_type string No You can assign the fee to either SELLER or ITEM. If not specified, this will be tied to transaction level
parent_id string No This is either the seller Id or item Id

0-click: Customer

Parameter Type Required Description
first_name string Yes
last_name string No
email string Yes
phone string Yes

0-click: Address

Parameter Type Required Description
first_name string Yes
last_name string No
address string Yes
city string Yes
postal_code string Yes
phone string Yes
country_code string Yes ISO 3166-1 alpha-3

0-click: Seller

Parameter Type Required Description
id string Yes Seller’s Id
name string Yes Seller’s name
url string Yes Seller’s url
legal_id string No Seller’s legal Id (KTP, SIM or passport number)
email string Yes Seller’s email
address object Yes Seller’s residential address

0-click: Metadata

Parameter Type Required Description
ip_address string Yes
user_agent string Yes
device_id string No IMEI or IMSI of buyer device
imsi string No

0-click: HTTP(S) header

Parameter Type Description
Content-Type string Application/json
Accept string Application/json

Confirm Transaction (0-Click)

After the Kredivo user completes a transaction, Kredivo sends you a push notification. Follow these steps to acknowledge it, verify it, and update the order in your system.

1. Receive notification from Kredivo (0-click)

When the Kredivo user completes a purchase, Kredivo sends a POST request to the push_uri you provided when you created the checkout.

Example push notification:

{
    "status": "OK",
    "amount": "1500100.00",
    "payment_type": "30_days",
    "transaction_status": "pending",
    "order_id": "KD125262",
    "message": "Transaction status is pending",
    "shipping_address": {
        "city": "Jakarta Selatan",
        "first_name": "Darana 2",
        "last_name": "Pratama",
        "countrycode": "IDN",
        "creation_date": "2017-08-04T18:28:14",
        "phone": "0217248724",
        "state": "",
        "transaction": 1505866,
        "postcode": "12120",
        "location_details": "Jl. Kerinci IX No. 5-A"
    },
    "transaction_time": 1501846094,
    "transaction_id": "fadee4e5-99a2-48d6-952d-007f3fa508e8",
    "signature_key": "o5KZPDcxgEA9QutAVcIQwE3suQRkTEIA1VXcoHp7KaWJnpHx0uuHETBVpxfYLbaPyS8RJg34uVxTUX64cfUTzVVhCrSif%2FUg92J2WyLs%2FhQ%3D"
}

0-click confirm: Push notification body

Parameter Type Required Description
status string - Status code (OK or ERROR)
message string - Description of status
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string - Transaction ID assigned by Kredivo
transaction_status string - Transaction status. Possible values:
- settlement: Transaction is successful
- pending: User has not completed the transaction
- deny: Transaction has been denied by Kredivo
- cancel: Transaction has been cancelled by merchant
- expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) - Timestamp of transaction
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
shipping_address object No Shipping address of the customer
order_id string - Order ID assigned by the merchant
amount string - The transaction amount
signature_key string - Signature key used to verify that the notification came from Kredivo.

0-click confirm: Response address info

Parameter Type Required Description
city string No
first_name string No
last_name string No
countrycode string No
creation_date string No
phone string No
state string No
transaction integer No
postcode string No
location_details string No

2. Acknowledge the push notification (0-click)

Respond with JSON structured like this:

  {
    "status":"OK",
    "message":"Message from merchant if any"
  }

3. Confirm the order status (0-click)

Call update to get the order status and verify that the push notification came from Kredivo.

0-click confirm: HTTP request

GET /kredivo/v2/update?transaction_id=bb0380d7-2688-4e73-a668-997f3fc5cbec&signature_key=5f1fa4a524f5a8201a3a373d67b5796840bed1598b2bb816855d0e14d01cd09b988b4b861f39bed642b4db861108bbf0dd84ce8e17caf675d4bf2c81ab545397

0-click confirm: Request body

Parameter Type Description
transaction_id string Transaction ID assigned by Kredivo
signature_key string Signature key used to verify that the notification came from Kredivo.

0-click confirm: Response body

Example response from v2/update:

{
    "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",
    "user_token" : "XXXX-XXXX"
}
Parameter Type Description
status string Status code (OK or ERROR).
message string Description of status
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string Transaction ID assigned by Kredivo
transaction_status string Transaction status. Possible values:
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) Timestamp of transaction
order_id string Order ID assigned by the merchant
amount string The transaction amount
fraud_status string Fraud Detection System (FDS) result. Possible values: accept: Approved by FDS; deny: Denied by FDS. Transaction automatically failed
legal_name string Legal name on the Kredivo account
user_token string Once the user authentication succeeds, we will send you the user token. Use this token to enable the express checkout for the user. Currently the user token has no expiration.

4. Settle an order in your system (0-click)

If transaction_status is settlement, settle the order in your system and store the order data you need.

Deactivate User Token

Call this API to let a Kredivo user deactivate their tokenized account (invalidate their user_token).

Deactivate token: HTTP request

POST /kredivo/v2/deactive_user_token

Example request:


{
    "server_key": "ABCD-XXXX-1234",
    "user_token": "XXXX-YYYY"
}


Deactivate token: Request body

Parameter Type Required Description
server_key string Yes
user_token string - user_token that Kredivo issued when tokenizing the user.

Example success response:


{
    "status": "OK",
    "message": "",
    "remarks": "081513114262|Deactivated by merchant",
    "user_token": "9cc7f862-d4ac-49d2-88d6-050858bee3fd",
    "is_active": false
}

Example error response:


{
    "status": "ERROR",
    "error": {
        "code": 2403,
        "message": "Invalid merchant",
        "kind": "deprecated"
    }
}

Or

{
    "error": {
        "kind": "deprecated",
        "message": "Invalid user_token",
        "code": null
    },
    "status": "ERROR"
}

Success response

Parameter Type Description
status string OK if detokenization succeeded. You must then invalidate the user_token.
message string Description of status
user_token string user_token that Kredivo issued when tokenizing the user.
is_active boolean True/False. If False, Kredivo is not able to provide User Credit Details.
remarks string Remarks about the deactivation (see the example on the right)

Error response

Parameter Type Description
status string Status code: ERROR
error object See error details

Error details

Parameter Type Description
kind string Type of error
code integer Error code
message string Error message

Deactivate from Kredivo app

Example request:

{
  "message": "message if any",
  "client_user_key": "yospe@finaccel.co"
}

Kredivo users can also deactivate their tokenized account in the Kredivo app. Kredivo then sends a push notification to the callback_url you provided during account linking, telling you to invalidate the user_token.

Example response:

{
  "status": "OK",
  "message": "message if any"
}

Get User Credit Details

Use this API to get a tokenized Kredivo user’s remaining limit, account status, and account type. You need the user’s user_token.

Credit details: HTTP request

POST /kredivo/v2/get_user_credit_details

Example request:


{
    "server_key": "ABCD-XXXX-1234",
    "user_token": "XXXX-YYYY"
}


Credit details: Request body

Parameter Type Required Description
server_key string Yes
user_token string Yes user_token that Kredivo issued when tokenizing the user.

Example success response:


{
    "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"
            }
            {
                "payment_type":"6_months",
                "remaining_user_limit":"9000000"
            }
            {
                "payment_type":"9_months",
                "remaining_user_limit":"13500000"
            }
            {
                "payment_type":"12_months",
                "remaining_user_limit":"18000000"
            }
            {
                "payment_type":"18_months",
                "remaining_user_limit":"27000000"
            }
            {
                "payment_type":"24_months",
                "remaining_user_limit":"36000000"
            }

        ]
    }
}

Example error response:

{
    "status": "ERROR",
    "error": {
        "kind": "deprecated",
        "message": "Invalid user_token",
        "code": null
    }
}

Credit details: Success response

Parameter Type Description
status string Status code : OK
user_details object Detail of user .
user_credit_details object Detail of user credit details

User details

Parameter Type Description
legal_name string
mobile_number string

User credit details

Parameter Type Description
account_status integer Possible values (1: active, 2. inactive)
account_type integer 1: basic (eligible for “30_days” and “3_months” payment type ONLY), 2: premium (eligible for “30_days”, “3_months”, “6_months”, “9_months”, “12_months”, “18_months”, “24_months” payment types)
credit_limit_details obejct List of credit_limit: credit limit details per payment type

Credit limit details

Parameter Type Description
payment_type string Possible values: “30_days”, “3_months”, “6_months”, “9_months”, “12_months”, “18_months”, “24_months”
remaining_user_limit string Remaining user limit for payment type

Credit details: Error response

Parameter Type Description
status string Status code: ERROR
error object See error details

Credit details: Error details

Parameter Type Description
kind string Type of error
message string Error message

Offline Checkout

Offline checkout is for in-store payments, where the Kredivo user pays at your physical store via QR, barcode scan, or EDC terminal.

QR Checkout

QR checkout lets Kredivo users pay in your physical store by scanning a dynamic QR code generated for each new transaction. You must integrate the Kredivo QR checkout API into your POS system, directly or through a POS provider. Contact us for integration details.

We also provide a seller app for monitoring transactions and cancelling them.

QR checkout flow:

sequenceDiagram autonumber actor User participant Cashier participant Merchant participant Kredivo User->>Cashier: Ask to pay with Kredivo QR Cashier->>Merchant: Select Kredivo as payment and enter amount Merchant->>Kredivo: POST /offline/v1/init_checkout Kredivo->>Kredivo: Process transaction request Kredivo–>>Merchant: QR code (qr_image) Merchant->>Cashier: Render QR on payment/POS device Cashier->>User: Show QR code User->>Kredivo: Scan QR code with Kredivo app, enter PIN Kredivo->>Kredivo: Check user’s limit and eligibility Kredivo->>Kredivo: Approve transaction opt Push notification (optional) Kredivo->>Merchant: POST push_uri (transaction confirmation) end Merchant->>Kredivo: GET /kredivo/v2/update (transaction_id, signature_key) Kredivo–>>Merchant: Order status Merchant->>Merchant: Settle transaction Merchant->>Cashier: Show transaction confirmation Kredivo->>User: Show transaction confirmation page in Kredivo app

Contact us to learn more about QR checkout.

Initiate QR Checkout

Call init_checkout to create a dynamic QR transaction and get a QR code to show on your POS.

QR: HTTP request

POST /offline/v1/init_checkout

Example request:

  {
    "server_key":"8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7x",
    "amount":70000,
    "source": "QR",
    "qr_type": "IMAGE",
    "order_id": "548tIt83saeN",
    "sub_merchant_id": "KFCSenayanCity",
    "push_uri" : "https://www.merchantcallback.com/notify",
    "sellers":
    {
            "id":"SELLER123",
            "name":"Sunrise",
            "email": "sunrise@gmail.com",
            "url":"https://onlineshop/seller/sunrise",
            "address" : {
                "first_name":"Irfan",
                "last_name":"Sutandro",
                "address":"Jalan Tentara Pelajar no 49",
                "city":"Jakarta Utara",
                "postal_code":"12960",
                "phone":"08123456789",
                "country_code":"IDN"
            }
    },
    "items": [
         {
        "id": "001",
        "name":"Product Name",
        "price":50000,
        "type":"Category Product",
        "quantity":1
        },
        {
        "id": "002",
        "name":"Product Name",
        "price":25000,
        "type":"Category Product",
        "quantity":1,
        "additional_info":{
                "imei":"1234281484285",
                "color":"black"
            }
        },
        {
            "id":"discount",
            "name":"Discount",
            "price":5000,
            "quantity":1
         }
    ]
}


Example response (qr_type: IMAGE):

  {
    "status": "OK",
    "message": "",
    "qr_image": "{HOST}/{endpoint}/v1/qrcode/{merchant_id}/{external_merchant_id}/6a643481-33fa-4fa7-9135-8a1503fc863a",
    "qr_numeric_code": 114376,
    "transaction_id": "6a643481-33fa-4fa7-9135-8a1503fc863a"
  }

Example response (qr_type: STRING):

  {
    "status": "OK",
    "message": "",
    "qr_image": {
        "type": "TRANSACTION",
        "qr_id": "b1849e0d-22dd-4a7e-b848-2bb55c49fb64"
    },
    "qr_numeric_code": 114376,
    "transaction_id": "6a643481-33fa-4fa7-9135-8a1503fc863a"
  }

QR: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
amount number Yes The transaction amount
source string Yes Default value is “QR”
qr_type string No Supports “IMAGE” or “STRING” with “IMAGE” as the default.
order_id string Yes Order ID assigned by the merchant
sub_merchant_id string Yes ID of a sub merchant. (e.g. KFCSenayanCity)
push_uri string Yes Your push notification endpoint (receives HTTP POST)
sellers array No Detail of the seller / store.
items array Yes The shopping items

QR: Seller

Parameter Type Required Description
id string No Detail of the seller / store Id.
name string No Detail of the seller / store name.
url string No Detail of the seller / store url.
legal_id string No Detail of the seller / store legal Id (KTP, SIM or passport number)
email string No Detail of the seller / store email
address object No Detail of the seller / store residential address

QR: Address

Parameter Type Required Description
first_name string No
last_name string No
address string No
city string No
postal_code string No
phone string No
country_code string No ISO 3166-1 alpha-3

QR item

Parameter Type Required Description
id string No Item ID, such as the product SKU. For fees and adjustments, you must use one of these IDs: shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee, mixpayment.
name string Yes Product name.
price number Yes Price of the item.
type string No Product category.
quantity integer Yes Quantity of the item bought.
additional_info string No Additional information about other data from partner.

QR: Response

Parameter Type Description
status string Status code (OK or ERROR)
qr_image string The QR Code URL to be displayed on POS
transaction_id string Transaction ID assigned by Kredivo

Confirm Transaction (QR)

After the Kredivo user completes a transaction, Kredivo sends you a push notification. Follow these steps to acknowledge it, verify it, and update the order in your system.

sequenceDiagram autonumber participant Merchant participant Kredivo opt Push notification (optional) Kredivo->>Merchant: POST push_uri (transaction_status, order_id, …) Merchant–>>Kredivo: status OK, message end Note over Merchant,Kredivo: The push notification can be ignored as long as you call v2/update Merchant->>Kredivo: GET /kredivo/v2/update (transaction_id, signature_key) Kredivo–>>Merchant: Order status (transaction_status, fraud_status) opt transaction_status is settlement Merchant->>Merchant: Settle order and store order data end

1. Receive notification from Kredivo (QR)

When the Kredivo user completes a purchase, Kredivo sends a POST request to the push_uri you provided when you created the checkout.

Example push notification:

{
    "status": "OK",
    "amount": "1500100.00",
    "payment_type": "30_days",
    "transaction_status": "pending",
    "order_id": "KD125262",
    "message": "Transaction status is pending",
    "shipping_address": {
        "city": "Jakarta Selatan",
        "first_name": "Darana 2",
        "last_name": "Pratama",
        "countrycode": "IDN",
        "creation_date": "2017-08-04T18:28:14",
        "phone": "0217248724",
        "state": "",
        "transaction": 1505866,
        "postcode": "12120",
        "location_details": "Jl. Kerinci IX No. 5-A"
    },
    "transaction_time": 1501846094,
    "transaction_id": "fadee4e5-99a2-48d6-952d-007f3fa508e8",
    "signature_key": "o5KZPDcxgEA9QutAVcIQwE3suQRkTEIA1VXcoHp7KaWJnpHx0uuHETBVpxfYLbaPyS8RJg34uVxTUX64cfUTzVVhCrSif%2FUg92J2WyLs%2FhQ%3D",
    "sub_merchant_id": "KFCSenayanCity"
}

QR confirm: Push notification body

Parameter Type Required Description
status string - Status code (OK or ERROR)
message string - Description of status
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string - Transaction ID assigned by Kredivo
transaction_status string - Transaction status. Possible values:
- settlement: Transaction is successful
- pending: User has not completed the transaction
- deny: Transaction has been denied by Kredivo
- cancel: Transaction has been cancelled by merchant
- expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) - Timestamp of transaction
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
shipping_address object No Shipping address of the customer
order_id string - Order ID assigned by the merchant
amount string - The transaction amount
signature_key string - Signature key used to verify that the notification came from Kredivo.
sub_merchant_id string - ID of a sub merchant. (e.g. KFCSenayanCity)

QR confirm: Response address info

Parameter Type Required Description
city string No
first_name string No
last_name string No
countrycode string No
creation_date string No
phone string No
state string No
transaction integer No
postcode string No
location_details string No

2. Acknowledge the push notification (QR)

Respond with JSON structured like this:

  {
    "status":"OK",
    "message":"Message from merchant if any"
  }

3. Confirm the order status (QR)

Call update to get the order status and verify that the push notification came from Kredivo.

QR confirm: HTTP request

GET /kredivo/v2/update?transaction_id=bb0380d7-2688-4e73-a668-997f3fc5cbec&signature_key=5f1fa4a524f5a8201a3a373d67b5796840bed1598b2bb816855d0e14d01cd09b988b4b861f39bed642b4db861108bbf0dd84ce8e17caf675d4bf2c81ab545397

QR confirm: Request body

Parameter Type Description
transaction_id string Transaction ID assigned by Kredivo
signature_key string Signature key used to verify that the notification came from Kredivo.

QR confirm: Response body

Example response from v2/update:

{
    "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",
    "sub_merchant_id": "KFCSenayanCity",
}
Parameter Type Description
status string Status code (OK or ERROR).
message string Description of status
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string Transaction ID assigned by Kredivo
transaction_status string Transaction status. Possible values:
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) Timestamp of transaction
order_id string Order ID assigned by the merchant
amount string The transaction amount
fraud_status string Fraud Detection System (FDS) result. Possible values: accept: Approved by FDS; deny: Denied by FDS. Transaction automatically failed
legal_name string Legal name on the Kredivo account
sub_merchant_id string ID of a sub merchant. (e.g. KFCSenayanCity)

4. Settle an order in your system (QR)

If transaction_status is settlement, settle the order in your system and store the order data you need.

Barcode Checkout

Barcode checkout lets Kredivo users pay in your physical store by showing a barcode in the Kredivo app, which you scan (customer-presented mode).

  1. The Kredivo user opens the Kredivo app and shows the barcode.
  2. You scan the barcode.
  3. You send a purchase transaction request to Kredivo.
  4. Kredivo validates the transaction request.
  5. Kredivo sends a response back to you.
  6. If you don’t receive a response from Kredivo within 45 seconds, send a purchase reversal.
sequenceDiagram autonumber actor User participant Merchant participant Kredivo User->>Merchant: Show barcode in Kredivo app Merchant->>User: Scan barcode Merchant->>Kredivo: POST /barcode/init_checkout Kredivo->>Kredivo: Validate transaction request alt Response received within 45 seconds Kredivo–>>Merchant: Purchase response (res_code, …) else No response within 45 seconds Merchant->>Kredivo: POST /barcode/reversal Kredivo–>>Merchant: Reversal response (res_code, …) end

Barcode Purchase Transaction

Send a purchase request after you scan the user’s barcode.

Barcode: HTTP request

POST /barcode/init_checkout

Example request:

{
    "login": "username",
    "password": "abc123",
    "terminal": "QRUSERNAME001",
    "barcode": "77158554444100004000",
    "transaction_date": "20200202090000",
    "amount": "10000",
    "order_id": "GPTALF278-00000001101",
    "name": "Kredipal",
    "rek_type": "01",
    "signature": "b46eec4ada3bbf1a4e09e84180bc1c0f",
    "items": [
        {
            "id": "001",
            "name": "Shampoo",
            "price": 20000,
            "type": "Additional",
            "quantity": 1
        },
        {
            "id": "discount",
            "name": "discount",
            "price": 10000,
            "type": "discount",
            "quantity": 1
        }
    ]
}

Example response:

0000:Success:NAJWA008:20200202090000:Kredipal:01:0.0:77158624690202532001:Nominal=10000#Sisa Limit=3467000.00:ed035df9-93ee-43c6-ae97-6690220fc028:SIMPAN TANDA TERIMA SEBAGAI#BUKTI PEMBAYARAN SAH#LAYANAN KONSUMEN#customerservice#LAYANAN MITRA#driversupport:#

Barcode: Request body

Parameter Type Required Description
login string Yes Merchant login ID, provided by Kredivo. Max length 15.
password string Yes Password, provided by Kredivo. Max length 32.
terminal string Yes External merchant ID that reflects the sub-merchant level ID (e.g. QRUSERNAME001). Max length 22.
barcode string Yes Consumer payment code: the token you get when you scan the barcode. Can be PIN/token or token/mobile number, separated with `\
transaction_date datetime Yes Transaction request date, format YYYYMMDDHHmmss. Length 14.
amount string Yes Transaction amount to be paid, as a decimal value in a string (e.g. "10000"). Max length 14.
order_id string Yes Transaction ID, unique per request. Max length 60.
name string No Customer name. Max length 25.
rek_type string No Customer’s account type. Max length 2.
signature string Yes MD5 signature of the fields above plus your secret key. See Barcode signature. Max length 200.
items array Yes The shopping items. See Barcode item.

Barcode item

Parameter Type Required Description
id string No Can be a product SKU. For fee items, use one of these IDs: shippingfee (+), adminfee (+), taxfee (+), discount (−), additionalfee (+), insurancefee (+), mixpayment (+). (+) adds to the amount; (−) reduces it.
name string Yes Product name given by the merchant
price double Yes Price of the item
type string No Product category
quantity integer Yes Quantity of the item bought
additional_info string No Additional information about other data from the partner

Barcode: Response

The response is a colon-delimited (:) string, not JSON. Fields appear in this order:

Parameter Type Description
res_code numeric (4) Response code (e.g. 0000). See Barcode response codes.
res_description alphanumeric (50) Response code description (e.g. Success)
tx_id alphanumeric (60) Transaction ID, unique per request (e.g. NAJWA008)
tx_date numeric (14) Transaction request date, format YYYYMMDDHHmmss
name alphanumeric (25) Customer name
rek_type alphanumeric (2) Customer account type
fee numeric (10) Admin fee (e.g. 0.0)
cust_key numeric (25) Consumer payment code (the scanned token; see barcode)
cust_info alphanumeric (100) Customer information separated by #; product description and nominal separated by = (e.g. Nominal=10000#Sisa Limit=3467000.00)
partner_tx_id alphanumeric (36) Transaction ID from the partner, unique per response (e.g. a UUID such as ed035df9-93ee-43c6-ae97-6690220fc028)
rsv alphanumeric (120) Described in the spec as “Customer account type”
terminator string End-of-response terminator. Always #.

Barcode Purchase Reversal

Send a reversal to cancel a purchase when you don’t receive a purchase response from Kredivo within 45 seconds.

Barcode reversal: HTTP request

POST /barcode/reversal

Example request:

{
    "login": "username",
    "password": "abc123",
    "terminal": "QRUSERNAME001",
    "barcode": "77158554444100004000",
    "transaction_date": "20200202090000",
    "amount": "10000",
    "order_id": "GPTALF278-00000001101",
    "name": "Kredipal",
    "rek_type": "01",
    "signature": "b46eec4ada3bbf1a4e09e84180bc1c0f",
    "items": [
        {
            "id": "001",
            "name": "Shampoo",
            "price": 20000,
            "type": "",
            "quantity": 1
        },
        {
            "id": "002",
            "name": "Sabun",
            "price": 15000,
            "type": "",
            "quantity": 1
        },
        {
            "id": "discount",
            "name": "discount",
            "price": 25000,
            "type": "discount",
            "quantity": 1
        }
    ]
}

Barcode reversal: Request body

The reversal request uses the same parameters as the purchase request body. The order_id identifies the transaction to reverse.

Barcode reversal: Response

The reversal response has the same format and fields as the purchase response.

Barcode Signature

Every request includes a signature field: the MD5 hash of all request field values concatenated in order, followed by a secret key agreed with Kredivo.

signature = MD5(login + password + terminal + barcode + transaction_date + amount + order_id + name + rek_type + secret_key)

Name Example value
login username
password abc123
terminal KZ01;KT01;F
barcode 7712391823813011
transaction_date 20200310181504
amount 10000
order_id 20160310181504
name kredipal
rek_type 1
secret_key kredivo2020

Example signature:

MD5("usernameabc123KZ01;KT01;F7712391823813011202003101815041000020160310181504kredipal1kredivo2020")
= b224b4a701cf2003bc02689b1960fdd3

Barcode Response Codes

Code Description
0000 Success (Sukses)
0001 Invalid transaction (Transaksi tidak valid)
0004 Invalid PIN/password (PIN/Password tidak valid)
0005 Invalid transaction type (Tipe transaksi tidak valid)
0006 Invalid amount (Nominal tidak valid)
0008 Timeout (Time out)
0009 Invalid card number (Nomer kartu tidak valid)
0013 Invalid account (Akun tidak valid)
0015 Transaction count limit reached (Mencapai batas jumlah transaksi)
0016 Transaction limit exhausted (Limit transaksi habis)
0023 Insufficient balance (Saldo tidak mencukupi)
0024 Exceeds available funds (Melebihi dana yang tersedia)
0038 Duplicate transaction (Transaksi double)
0079 Transaction in process (Transaksi sedang di proses)
00F0 Invalid login (Login tidak valid)
00J6 Amount exceeds token/coupon limit (Nominal melebihi batas token/kupon)
00j8 Coupon or token invalid, expired, or already used (Kupon atau token tidak valid/ kadaluarsa/ sudah terpakai)
00LH Invalid phone number/recipient (Nomor telepon tidak valid/Penerima tidak valid)
00T7 Customer is blacklisted (Konsumen sudah di blacklist)
2001 Invalid IP address (IP Address tidak valid)
2003 Invalid service ID (Service ID tidak valid)
2020 Invalid request (Request tidak valid)
2025 Wrong signature (Signature salah)
2026 Customer balance has reached the maximum (Saldo customer sudah mencapai batas maksimal)

EDC Checkout

EDC checkout lets Kredivo users pay in your physical store through an EDC terminal.

We also provide a dashboard for monitoring transactions and cancelling them.

Contact us to learn more about EDC checkout.

Initiate EDC Checkout

Call init_checkout with source set to EDC Mobile to create an EDC transaction. The cashier enters the customer’s Kredivo phone number on the EDC terminal. Kredivo then sends a notification to the customer’s Kredivo app, and the customer completes the transaction there by entering their PIN.

sequenceDiagram autonumber actor User participant Cashier participant Merchant participant Kredivo Cashier->>Merchant: Enter customer’s phone number on EDC terminal Merchant->>Kredivo: POST /offline/v1/init_checkout (source: EDC Mobile, push_uri) Kredivo–>>Merchant: status, transaction_id, order_id Kredivo->>User: Send notification to Kredivo app User->>Kredivo: Open notification and confirm with PIN opt Push notification (optional) Kredivo->>Merchant: POST push_uri end Note over Merchant,Kredivo: See Confirm Transaction (EDC)

EDC: HTTP request

POST /offline/v1/init_checkout

Example request:

{
    "server_key": "8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7",
    "sub_merchant_id": "KFCSenayanCity",
    "source": "EDC Mobile",
    "push_uri": "https://merchant.com/pushnotif",
    "order_id": "12345678912",
    "amount": 15000,
    "mobile_number": "+62-85210549044",
    "terminal_id": "WDCMERCHANT0001"
}

Example response:

{
    "status": "OK",
    "message": "",
    "transaction_id": "bcda87e2-e87b-4b7f-add4-206bb4c1d72c",
    "order_id": "12345678912"
}

EDC: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
sub_merchant_id string Yes ID of a sub merchant. (e.g. KFCSenayanCity)
source string Yes Default value is “EDC Mobile”
push_uri string Yes Your push notification endpoint (receives HTTP POST)
order_id string - Order ID assigned by the merchant
amount number Yes The transaction amount
mobile_number string - User phone number
terminal_id string No Outlet merchant’s EDC device identifier.

EDC: Response

Parameter Type Description
status string Status code (OK or ERROR)
transaction_id string Transaction ID assigned by Kredivo
order_id string Order ID assigned by the merchant

Confirm Transaction (EDC)

After the Kredivo user completes a transaction, Kredivo sends you a push notification. Follow these steps to acknowledge it, verify it, and update the order in your system.

sequenceDiagram autonumber participant Merchant participant Kredivo opt Push notification (optional) Kredivo->>Merchant: POST push_uri (transaction_status, order_id, …) Merchant–>>Kredivo: status OK, message end Note over Merchant,Kredivo: The push notification can be ignored as long as you call v2/update Merchant->>Kredivo: GET /kredivo/v2/update (transaction_id, signature_key) Kredivo–>>Merchant: Order status (transaction_status, fraud_status) opt transaction_status is settlement Merchant->>Merchant: Settle order and store order data end

1. Receive notification from Kredivo (EDC)

When the Kredivo user completes a purchase, Kredivo sends a POST request to the push_uri you provided when you created the checkout.

Example push notification:

{
    "status": "OK",
    "amount": "1500100.00",
    "payment_type": "30_days",
    "transaction_status": "pending",
    "order_id": "KD125262",
    "message": "Transaction status is pending",
    "shipping_address": {},
    "transaction_time": 1501846094,
    "transaction_id": "fadee4e5-99a2-48d6-952d-007f3fa508e8",
    "signature_key": "o5KZPDcxgEA9QutAVcIQwE3suQRkTEIA1VXcoHp7KaWJnpHx0uuHETBVpxfYLbaPyS8RJg34uVxTUX64cfUTzVVhCrSif%2FUg92J2WyLs%2FhQ%3D",
    "sub_merchant_id": "KFCSenayanCity"
}

EDC confirm: Push notification body

Parameter Type Required Description
status string - Status code (OK or ERROR)
message string - Description of status
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string - Transaction ID assigned by Kredivo
transaction_status string - Transaction status. Possible values:
- settlement: Transaction is successful
- pending: User has not completed the transaction
- deny: Transaction has been denied by Kredivo
- cancel: Transaction has been cancelled by merchant
- expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) - Timestamp of transaction
payment_type string - Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
shipping_address object No Shipping address of the customer
order_id string - Order ID assigned by the merchant
amount string - The transaction amount
signature_key string - Signature key used to verify that the notification came from Kredivo.
sub_merchant_id string - ID of a sub merchant. (e.g. KFCSenayanCity)

2. Acknowledge the push notification (EDC)

Respond with JSON structured like this:

  {
    "status":"OK",
    "message":"Message from merchant if any"
  }

3. Confirm the order status (EDC)

Call update to get the order status and verify that the push notification came from Kredivo.

EDC confirm: HTTP request

GET /kredivo/v2/update?transaction_id=bb0380d7-2688-4e73-a668-997f3fc5cbec&signature_key=5f1fa4a524f5a8201a3a373d67b5796840bed1598b2bb816855d0e14d01cd09b988b4b861f39bed642b4db861108bbf0dd84ce8e17caf675d4bf2c81ab545397

EDC confirm: Request body

Parameter Type Description
transaction_id string Transaction ID assigned by Kredivo
signature_key string Signature key used to verify that the notification came from Kredivo.

EDC confirm: Response body

Example response from v2/update:

{
    "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",
    "sub_merchant_id": "KFCSenayanCity",
}
Parameter Type Description
status string Status code (OK or ERROR).
message string Description of status
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_id string Transaction ID assigned by Kredivo
transaction_status string Transaction status. Possible values:
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
transaction_time integer (epoch) Timestamp of transaction
order_id string Order ID assigned by the merchant
amount string The transaction amount
fraud_status string Fraud Detection System (FDS) result. Possible values: accept: Approved by FDS; deny: Denied by FDS. Transaction automatically failed
legal_name string Legal name on the Kredivo account
sub_merchant_id string ID of a sub merchant. (e.g. KFCSenayanCity)

4. Settle an order in your system (EDC)

If transaction_status is settlement, settle the order in your system and store the order data you need.

Reversal Transaction

Call reversal_transaction to terminate an EDC transaction after an intermittent connection or network issue. Reversal is only allowed within 60 seconds of the transaction.

sequenceDiagram autonumber participant Merchant participant Kredivo Note over Merchant,Kredivo: Intermittent connection or network issue Note over Merchant,Kredivo: Reversal allowed only within 60 seconds Merchant->>Kredivo: POST /offline/v1/reversal_transaction (order_id, server_key) Kredivo–>>Merchant: status OK or ERROR, message

Reversal: HTTP request

POST /offline/v1/reversal_transaction

Example request:

{
    "order_id": "12345678912",
    "server_key": "8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7"
}

Example success response:

{
    "message": "",
    "status": "OK"
}

Example error response:

{
    "message": "",
    "status": "ERROR"
}

Reversal: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
order_id string Yes Order ID assigned by the merchant

Reversal: Response

Parameter Type Required Description
status string - Status code (OK or ERROR)
message string No If any message

Additional APIs

Use these APIs to check a transaction status (for example, if a push notification fails), cancel a transaction, and calculate interest and payments.

Check Transaction Status

Call this API to get a transaction’s current status after the Kredivo user finishes the transaction, or when you did not receive a push notification.

Status: HTTP request

POST /kredivo/transaction/status

Example request:

  {
    "server_key":"8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7",
    "order_id": "KB-0c40f395"
  }

Example response:

{
    "fraud_status": "accept",
    "transaction_time": 1637743030,
    "order_id": "KB-0c40f395",
    "external_userid": "S9JRJ2bGiS4d",
    "status": "OK",
    "legal_name": "Rangge",
    "message": "Transaction is settlement",
    "amount": "75000.00",
    "discount_amount": 0,
    "transaction_id": "7401e873-ea77-455e-9f31-4ca2268304dc",
    "payment_type": "30_days",
    "transaction_status": "settlement"
}


Status: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
order_id string Yes Order ID assigned by the merchant.

Status: Response

Parameter Type Description
status string Status code (OK or ERROR)
fraud_status string Fraud checking result (accept or deny)
external_userid string User ID
legal_name string Legal name of user
order_id string Order ID assigned by the merchant
transaction_time integer (epoch) Timestamp of transaction
amount number Transaction amount
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_status string Transaction status of the transaction
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
message string Detail status
transaction_id string Transaction ID assigned by Kredivo

Cancel Transaction

Call this API to fully or partially cancel a completed transaction.

Cancel: HTTP request

POST /kredivo/v2/cancel_transaction

Example request:

  {
    "server_key":"8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7",
    "transaction_id": "2be7d9ea-ccba-4743-8b92-0f1fc3ec358d",
    "cancellation_amount": 5000,
    "cancellation_reason":"Out of stock",
    "cancelled_by":"Althea",
    "cancellation_date":"1512032053",
    "order_id":"KB-0123456",
    "cancellation_id": "1234567"
  }

Cancel: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
cancellation_id string No 60 char. This is not the order ID. 1 order ID can have multiple cancellation ID. If no cancellation ID is sent, we will use the order ID and cancellation amount as the cancellation unique identifier. Cancellation requests with the same order ID and cancellation amount cannot be processed if the time elapsed between the two requests is less than 1 hour.
order_id string Yes Order ID assigned by the merchant
transaction_id string Yes Transaction ID assigned by Kredivo
cancellation_amount integer No If you omit this parameter or if you pass a cancellation amount that is equal to the transaction amount, it will be treated as a full cancellation. If the cancellation amount passed is less than the transaction amount, it will be treated as a partial cancellation. If the cancellation amount is bigger than the transaction amount or a 0 or a negative number, we will return an error.
cancellation_reason string Yes A description that clarifies reason of cancelling the transaction
cancelled_by string Yes Cancellation requester name/ id
cancellation_date integer (epoch) Yes Timestamp of Cancellation

Example response (full cancellation):

  {
    "status": "OK",
    "fraud_status": "accept",
    "order_id": "EDCA0020F1E-FE69-43EA-B9CA-FCDE1B52B2A6",
    "transaction_time": 1513146999,
    "amount": "5000000.00",
    "payment_type": "30_days",
    "transaction_status": "cancel",
    "message": {short, long}"Cancelled the transaction!",
    "transaction_id": "2be7d9ea-ccba-4743-8b92-0f1fc3ec358d",
    "sub_merchant_id": "KFCSenayanCity",
    "outlet_id": "KFCSCT01"
  }

Example response (full/partial cancellation):

  {
    "status": "OK",
    "fraud_status": "accept",
    "order_id": "EDCA0020F1E-FE69-43EA-B9CA-FCDE1B52B2A6",
    "transaction_time": 1513146999,
    "amount": "1000.00",
    "payment_type": "30_days",
    "transaction_status": "settlement",
    "message": "Succes cancelling transaction by amount",
    "transaction_id": "2be7d9ea-ccba-4743-8b92-0f1fc3ec358d",
    "sub_merchant_id": "KFCSenayanCity",
    "outlet_id": "KFCSCT01"
  }

Example error response (full/partial cancellation):

  {
    "status": "ERROR",
    "error": {
        "code": 2415,
        "message": "Cancellation amount bigger than remaining transaction amount that can be cancelled",
        "kind": "deprecated"
    }
}

{
    "status": "ERROR",
    "error": {
        "code": 1009,
        "message": "Transaksi sudah dibatalkan.",
        "kind": "deprecated"
    }
}
  {
    "status": "ERROR",
    "error": {
        "code": 2415,
        "message": "This cancellation_id is already PROCESSED.",
        "kind": "deprecated"
    }
}

Cancel: Response

Parameter Type Description
status string Status code (OK or ERROR).
fraud_status string Fraud Detection System (FDS) result. Possible values: accept: Approved by FDS deny: Denied by FDS.
order_id string Order ID assigned by the merchant
transaction_time integer (epoch) Timestamp of transaction
amount string The transaction amount
payment_type string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
transaction_status string Transaction status. Possible values:
settlement: Transaction is successful
pending: User has not completed the transaction
deny: Transaction has been denied by Kredivo
cancel: Transaction has been cancelled by merchant
expire: User did not complete transaction, thus transaction is expired
message string Description of status
transaction_id string Transaction ID assigned by Kredivo
sub_merchant_id string ID of a sub merchant. For Offline Merchant Only (e.g. KFCSenayanCity)
outlet_id string ID of the EDC terminal ID used during transaction checkout

Kredivo Loan Calculator

Call this API to get the monthly payment breakdown of a Kredivo installment for each available payment type.

Calculator: HTTP request

POST /kredivo/v2/payments

Example request:

  {
    "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
        }
    ]
  }

Example response:

  {
    "payments": [
        {
            "raw_amount": 2424000.0,
            "amount": 2424000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 2423999.801457357,
            "id": "30_days",
            "tenure": 1,
            "service_fee": 24000,
            "mdr": null,
            "name": "Bayar dalam 30 hari",
            "interest_rate": "0",
            "rate": 0.0,
            "service_fee_percentage": 1.0,
            "monthly_installment": 2424000,
            "installment_amount": 2424000
        },
        {
            "raw_amount": 2472000.0,
            "potential_cashback": {
                "monthly_cashback": 9888,
                "total_cashback": 29664
            },
            "amount": 2472000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 823999.93388194,
            "id": "3_months",
            "tenure": 3,
            "service_fee": 72000,
            "mdr": null,
            "name": "Cicilan 3 bulan",
            "interest_rate": "0",
            "rate": 0.0,
            "service_fee_percentage": 3.0,
            "monthly_installment": 824000,
            "installment_amount": 2472000
        },
        {
            "raw_amount": 2400000.0,
            "potential_cashback": {
                "monthly_cashback": 4800,
                "total_cashback": 28800
            },
            "amount": 2400000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 462397.09959627397,
            "id": "6_months",
            "tenure": 6,
            "service_fee": null,
            "mdr": null,
            "name": "Cicilan 6 bulan",
            "interest_rate": "2,6",
            "rate": 2.6,
            "service_fee_percentage": 0,
            "monthly_installment": 462400,
            "installment_amount": 2774400
        },
        {
            "raw_amount": 2400000.0,
            "potential_cashback": {
                "monthly_cashback": 2400,
                "total_cashback": 28800
            },
            "amount": 2400000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 329064.15,
            "id": "9_months",
            "tenure": 9,
            "service_fee": null,
            "mdr": null,
            "name": "Cicilan 9 bulan",
            "interest_rate": "2,6",
            "rate": 2.6,
            "service_fee_percentage": 0,
            "monthly_installment": 329070,
            "installment_amount": 2961630
        },
        {
            "raw_amount": 2400000.0,
            "potential_cashback": {
                "monthly_cashback": 2400,
                "total_cashback": 28800
            },
            "amount": 2400000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 262396.4704067336,
            "id": "12_months",
            "tenure": 12,
            "service_fee": null,
            "mdr": null,
            "name": "Cicilan 12 bulan",
            "interest_rate": "2,6",
            "rate": 2.6,
            "service_fee_percentage": 0,
            "monthly_installment": 262400,
            "installment_amount": 3148800
        },
        {
            "raw_amount": 2400000.0,
            "potential_cashback": {
                "monthly_cashback": 2400,
                "total_cashback": 28800
            },
            "amount": 2400000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 195733.65,
            "id": "18_months",
            "tenure": 18,
            "service_fee": null,
            "mdr": null,
            "name": "Cicilan 18 bulan",
            "interest_rate": "2,6",
            "rate": 2.6,
            "service_fee_percentage": 0,
            "monthly_installment": 195740,
            "installment_amount": 3523320
        },
        {
            "raw_amount": 2400000.0,
            "potential_cashback": {
                "monthly_cashback": 2400,
                "total_cashback": 28800
            },
            "amount": 2400000,
            "discount_interest_rate": null,
            "raw_monthly_installment": 162402.98,
            "id": "24_months",
            "tenure": 24,
            "service_fee": null,
            "mdr": null,
            "name": "Cicilan 24 bulan",
            "interest_rate": "2,6",
            "rate": 2.6,
            "service_fee_percentage": 0,
            "monthly_installment": 162410,
            "installment_amount": 3897840
        }
    ],
    "message": "Available payment types are listed.",
    "status": "OK"
}

Calculator: Request body

Parameter Type Required Description
server_key string Yes Your merchant server_key, generated by Kredivo.
user_token string No This user_token will authenticate the user’s limit for 0-click transactions once it’s been set.
amount integer Yes The transaction amount
items array Yes The shopping items

Calculator: Response

Parameter Type Description
status string Status code (OK or ERROR)
payments array List of available payment type to the transaction including its breakdown. You can find available payment type here.

Calculator: Product item

Parameter Type Required Description
id string Yes Item ID, such as the product SKU. For fees and adjustments, you must use one of these IDs: shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee, mixpayment.
name string Yes Product name
price number Yes Price of the item in the quantity
url string Yes URL to the product item on merchant site
image_url string No URL to the product item image
type string Yes Product category
quantity integer Yes Quantity of the item bought

Payment type

Parameter Type Description
id string Payment type chosen by the Kredivo user (30_days, 3_months, 6_months, 9_months, 12_months, 18_months, 24_months)
name string Payment type name
tenure integer Tenure
rate number Interest rate
interest_rate string Interest rate in string
interest_amount number Interest amount
discount_interest_rate number Special interest rate
amount number Transaction amount. Total purchased items.
raw_amount number Transaction amount before rounding
monthly_installment number Installment per month
raw_monthly_installment number Installment per month before rounding
installment_amount number Total installment
service_fee_percentage number Kredivo service fee percentage
service_fee number Kredivo service fee
mdr number MDR passed to user
potential_cashback object Potential cashback

Potential cashback

Parameter Type Description
monthly_cashback number Monthly cashback
total_cashback number Total cashback

Plugins

Use a plugin to integrate Kredivo into an e-commerce site built on one of these platforms.

WooCommerce

woocommerce

Download the plugin for WooCommerce v.3.x.x here

PrestaShop

prestashop

Download the plugin for PrestaShop v.1.6.x here

OpenCart

opencart

Download the plugin for OpenCart v.1.x.x here or OpenCart v.2.x.x here

Magento

magento

Download the plugin for Magento v.1.x.x here or Magento v.2.x.x here

Branding & Visual

Logos

Show the Kredivo logo to build trust and increase conversion.

Your website’s background

Use the blue logo on light backgrounds and the white logo on dark backgrounds.

Width

Display the Kredivo logo between 100 and 300 px wide. Don’t add px after the size parameter.

Example:

basic

basic-white

Download Kredivo logo here.

On your front page

When you list the payment methods your store offers, show the Kredivo logo. Hovering over the logo shows details on the payment methods available in your store.

On product pages

Show customers they can pay in installments to increase conversion on high-value products. Always show the Kredivo logo on product pages; it is recognizable even at small sizes. For the best conversion, use our payment method widget.

Marketing Resource

What is merchant success?

The Kredivo team works with you to solve problems, build a long-term relationship, and run joint campaigns that increase your revenue.

Kredivo is a sales enabler: it helps your customers buy more, more often. To get the most out of Kredivo, implement the merchant best practices.

Why implement merchant best practices?

  1. Incremental sales take time and effort. So does building customer loyalty. The merchant best practices help you get there.

  2. Education is crucial. Many consumers are unfamiliar with instant credit financing. Educate them and design a clear purchase flow on your platform.

  3. Kredivo drives sales. “Buy now, pay later” and “Installments without a credit card” are strong messages that help consumers buy more, more often. Show these messages clearly on your platform to increase sales.

Important information

  1. Send all Kredivo-related collateral (newsletters, product promotions, social media posts, banners, FAQs) to successops@finaccel.co for approval before you publish it.
  2. Send merchant inquiries about customer service and payments to merchant.help@kredivo.com. (This address is for merchants only. Never share it with consumers.)
  3. Direct consumer questions about the product, technical issues, and payments to support@kredivo.com or +62-855-7467-9098. (You can share this email and phone number with consumers.)

Other marketing resources

Service Level Agreement

This Service Level Agreement (the “SLA”) is a policy governing the use of the Kredivo Checkout, a product of PT FinAccel Teknologi Indonesia (“FinAccel”) and its users (“you”). This SLA applies separately to each account using Kredivo Checkout or any other FinAccel products or services. FinAccel reserves the right to change the terms of this SLA.

Service Commitment

All of FinAccel’s products and services, including Kredivo Checkout, are hosted on Amazon EC2 and Amazon S3. FinAccel will use commercially reasonable efforts to make the Kredivo Checkout available with a Monthly Uptime Percentage (defined below) of at least 99.9% of the time in any calendar month. If it is not, then you may be eligible to receive the Service Discount described below.

Definitions

The following definitions apply to the Kredivo Checkout SLA.

Maximum Service Discount: The aggregate maximum amount of Service Discount you can claim for a single calendar month shall not exceed thirty days of billing.

Uptime SLA Exclusions: The SLA does not apply to any performance issues: (i) caused by factors outside of FinAccel reasonable control including any force majeure event or Internet access problems beyond the demarcation point of our servers; (ii) that resulted from any actions or inactions of you; or (iii) arising from our suspension and termination of your right to use Kredivo Checkout in accordance with the Kredivo Merchant Agreement.

Response and Resolution Times*

Severity Definition Response Time Resolution Time
Critical Production server or other mission critical system(s) are down and no workaround is immediately available 15 mins 30 mins
- Server Down
- Connection Down
- More than 15% of transaction are not processed by Kredivo due to some technical issues
Major Major functionality is severely impaired 30 mins 60 mins
- Intermittent connection
- Less than 15% of transaction are not processed by Kredivo due to some technical issues
Minor Partial, non-critical loss of functionality 30 mins 120 mins
- Unable to access Kredivo Dashboard
- Refund error
- Missing Merchant logo

* Response and resolution times apply during office hours (9 am – 6:30 pm). On weekends and public holidays, add 30–60 minutes.

Environment Setup

Sandbox

Use these credentials to integrate with the sandbox server.

Credential Description
Domain URL QR, 2-click https://staging.kredivo.com/
Server Key 8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7
Test Account Use these credentials to make a test transaction, and enter 4567 as the OTP.
Username: 81513114262
Password: 663482
Transaction OTP: 4567

Production

Use the production server for live transactions. Only transactions sent to this server are processed.

Credential Description
End Point Ask merchops@finaccel.co for the live server endpoint before you go live.

System Status

Check Kredivo’s current system status at status.kredivo.com.