NAV Navbar
Logo
shell

Getting Started

Introduction

Simplifying Buying

With Kredivo Checkout customers only need to provide their phone number and password to complete a purchase.

Optimized for all devices No risk. You always get paid
Kredivo Checkout adapts seamlessly to both desktops and mobile devices. This means that you instantly get the same conversion on mobiles as on desktops. One-click buying increases conversion by an additional 29% for returning customers. Kredivo assumes all risk for both the customer and merchant. That means no more charge-backs for you as a merchant.

Try Kredivo Checkout

We have set up a demo checkout so that you can try it out yourself, just go to one of our partner sites.

Preparation

Prepare your site

In order to complete the Kredivo Checkout integration process as simply and quickly as possible, we recommend that you start by setting up the following.

Checkout page and confirmation page

Both the checkout page and the checkout confirmation page are hosted by you. Both these pages must include a div that you will populate with the Kredivo Checkout button. You will learn what the Kredivo Checkout is in our first tutorial, embed the checkout. Kredivo Checkout is responsive, which means that it will always use the full width of the container.

Tip! Place the Kredivo Checkout button so that your customers can see it instantly after loading the checkout page without scrolling. Provide clear calls to action to improve your conversion rates, such as “Finalize your purchase now”.

mco

An example of what the checkout looks like on different devices.

Push notification URI

As you will learn in the Confirm purchase tutorial, Kredivo needs a URI to inform you of the order status. You will need to include a placeholder in the push URI, which Kredivo will then replace with the order URI when we send the push request.

Developer Help

If you need any help with the documentation and sandbox environment, please email support@kredivo.com and we’ll respond as soon as we can.

If you do not already have a merchant account, please email support@kredivo.com to get setup with one.

Developer FAQ

  1. Does Kredivo work on desktop and mobile? Yes, desktop, mobile, and tablet web.
  2. I’m not a retailer but I want to offer Kredivo financial products in my site/app do you have an API for that? See previous answer. If you are interested in joining a pilot let us know support@kredivo.com
  3. Is Kredivo another payment processor? xxx

Integration

Checkout with Kredivo

On this step, we will try to obtain the Kredivo Login page when performing a transaction. There is at least 3 components that are required to obtain Kredivo Login page:

You’ll need a server_key to interact with the Kredivo’s server. Please send an email to merchops@finaccel.co to sign up as an Kredivo merchant and get server_key.

Using the API:

The Request JSON structured like this:

{
    "server_key":"MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
    "payment_type":"30_days",  
    "transaction_details": {
        "amount":10015000,
        "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":"Xiaomi Mi 5",
                "price":2000000,
                "url":"http://merchant.com/cellphones/xiaomi_mi5_64g",
                "type":"Smartphone",
                "quantity":2,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"taxfee",
                "name":"Tax Fee",
                "price":1000,
                "quantity":1
            },
            {
                "id":"shippingfee",
                "name":"Shipping Fee",
                "price":90000,
                "quantity":1,
                "parent_type":"SELLER",
                "parent_id":"SELLER456"
            },
            {
                "id":"discount",
                "name":"Discount",
                "price":50000,
                "quantity":1
            }
        ]
    },
    "sellers":[
        {
            "id":"SELLER123",
            "name":"Tukang Jual Buku"
        },
        {
            "id":"SELLER456",
            "name":"Toko Bagus"
        }
    ],
    "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"
    },
    "push_uri":"https://api.merchant.com/push.php",
    "back_to_store_uri":"https://merchant.com"
}

The Response returns JSON structured like this:


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

Request Body

Name Type Description
server_key String Required. Each merchant will have server_key generated by Kredivo.
payment_type String Required. You can set default value with 30_days or 12_months. Payment id/type chosen by the shopper (30_days, 3_months, 6_months, 12_months)
transaction_details Transaction Details of the transaction
customer_details Customer Optional. Details of the customer
seller Seller Optional. Details of the seller for C2C marketplace
billing_address Address Optional. Billing address of the customer/shopper
shipping_address Address Required. Shipping address of the customer/shopper. shipping is required for goods (excluding ticket/voucher)
push_uri String Required. URI of merchant push-notification API (HTTP POST)
user_cancel_uri String Optional. URI that the customer is sent to if the customer chooses to cancel the Kredivo payment before completion
back_to_store_uri String Required. URI of your store page. Used on the settlement page. Kredivo’s server will pass some params to this uri for merchant’s server acknowledgement: order_id: Order Id given by Merchant; tr_id: Transaction Id given by Kredivo;tr_status: Transaction status of a transaction; sign_key: Signature key to validate if the notification is originated from Kredivo. Please contact us how to parse this signature_key by using your client key.
expiration_time String (epoch) Optional. by default kredivo set expiration time 24 hours after transaction time.

Response

Name Type Description
status String Status code (OK or ERROR)
message String Description of status
redirect_url String The checkout page URL to be displayed

Transaction

Name Type Description
order_id String Required. Order Id given by merchant
amount Double Required. The transaction amount
items Item Required. The shopping items

Product Item

Name Type Description
id String Required. Can be product SKU, shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee.
name String Required. Order Id given by merchant
price Double Required. Price of the item
url String Optional. URL to the product item on merchant site
image_url String Optional. URL to the product item image
type String Optional. Type of the product and merchant have to send list of product types for Kredivo to whitelist the product with specified type for Installment eligibility. Note: This is compulsory for merchant with Installment payment (pay in 3, 6 or 12 months).
quantity Integer Required. Quantity of the item bought
parent_type String Optional. You can assign the fee to either SELLER or ITEM. If not specified, this will be tied to transaction level
parent_id String Optional. This is either the seller Id or item Id

Customer

Name Type Description
first_name String Optional.
last_name String Optional.
email String Optional.
phone String Optional.

Address

Name Type Description
first_name String Required.
last_name String Optional.
address String Required.
city String Required.
postal_code String Required.
phone String Required.
country_code String Required. ISO 3166-1 alpha-3

Seller

Name Type Description
id String Required. Seller’s Id
name String Optional. Seller’s name
legal_id String Optional. Seller’s legal Id (KTP, SIM or passport number)
email String Optional. Seller’s email
address String Optional. Seller’s residential address

HTTP(S) Header

Name Type Description
Content-Type String application/json
Accept String application/json

Payment Type

This is optional step if you want to display list of eligible payment type and implement Installment on your page to calculate and display Installment breakdown on your checkout page.

Using the API:

The Request JSON structured like this:

  {
    "server_key":"8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7",
    "amount":2400000,
    "items": [
        {
            "id":"BB12345678",
            "name":"iPhone 5S",
            "price":2400000,
            "url":"http://merchant.com/cellphones/iphone5s_64g",
            "type":"Smartphone",
            "quantity":1
        }
    ]
  }

Example Response:

  {
    "status": "OK",
    "message": "Available payment types are listed.",
    "payments": [
        {
            "down_payment": 0,
            "name": "Bayar dalam 30 hari",
            "amount": 2400000,
            "installment_amount": 2400000,
            "rate": 0,
            "monthly_installment": 2400000,
            "discounted_monthly_installment": 0,
            "tenure": 1,
            "id": "30_days"
        },
        {
            "down_payment": 0,
            "name": "Bayar dalam 3 bulan",
            "interest_rate_transition_term": 0,
            "amount": 2400000,
            "installment_amount": 2568870,
            "rate": 2.95,
            "monthly_installment": 856290,
            "discounted_monthly_installment": 0,
            "tenure": 3,
            "id": "3_months"
        },
        {
            "down_payment": 0,
            "name": "Bayar dalam 6 bulan",
            "interest_rate_transition_term": 0,
            "amount": 2400000,
            "installment_amount": 2700540,
            "rate": 2.95,
            "monthly_installment": 450090,
            "discounted_monthly_installment": 0,
            "tenure": 6,
            "id": "6_months"
        },
        {
            "down_payment": 0,
            "name": "Bayar dalam 12 bulan",
            "interest_rate_transition_term": 0,
            "amount": 2400000,
            "installment_amount": 2976600,
            "rate": 2.95,
            "monthly_installment": 248050,
            "discounted_monthly_installment": 0,
            "tenure": 12,
            "id": "12_months"
        }

    ]
}

Request Body

Name Type Description
server_key String Required. Each merchant will have server_key generated by Kredivo.
amount Integer Required. The transaction amount
items Item Required. The shopping items

Response

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

Product Item

Name Type Description
id String Required. Can be product SKU,shippingfee, adminfee, taxfee, discount, additionalfee, insurancefee.
name String Required. Product name
price double Required. Price of the item in the quantity
url String Optional. URL to the product item on merchant site
image_url String Optional. URL to the product item image
type String Required. Product category. in case merchant open installment only for a few category. Merchant can define specified type for Installment eligibility then send for Kredivo to whitelist the product . Note: This is compulsory for merchant with Installment payment (pay in 3, 6 or 12 months).
quantity String Required. Quantity of the item bought

Payment Type

Name Type Description
id String Payment id/type chosen by the shopper (30_days, 3_months, 6_months, and 12_months)
name String Payment type name
tenure Integer tenure
rate float interest
amount Double Transaction amount. Total purchased items.
monthly_installment Double total installment per month
installment_amount Double total installment
down_payment Double total down payment
interest_rate_transition_term float spesial interest
discounted_monthly_installment Double discounted monthly installment

Confirm Purchase

In this tutorial you will learn how to confirm that you have received and created an order in your system. This confirmation is needed in response to a push notification from Kredivo, indicating that the consumer has completed a purchase. Once you have received the push notification you should update the status of the order.

Confirmation Flow

confirmation flow

1. Receive notification from Kredivo

Once a consumer has completed a purchase, Kredivo will inform you via a POST request. The POST request will be made to the push notification URI you provided when you created the checkout order.

HTTP Notification example of a successful transaction::

  {
    "status":"OK",
    "message":"Confirmed order status.",
    "payment_type":"30_days",
    "transaction_id":"bb0380d7-2688-4e73-a668-997f3fc5cbec",
    "transaction_status":"pending",
    "transaction_time":1469613243,    
    "order_id":"KD125262",
    "amount":125000,
    "signature_key":"5f1fa4a524f5a8201a3a373d67b5796840bed1598b2bb816855d0e14d01cd09b988b4b861f39bed642b4db861108bbf0dd84ce8e17caf675d4bf2c81ab545397",
    "shipping_address": {
        "first_name":"Oemang",
        "last_name":"Tandra",
        "address":"Jalan Teknologi Indonesia No. 25",
        "city":"Jakarta",
        "postal_code":"12960",
        "phone":"081513114262",
        "country_code":"IDN"
    }
}

Response Body from Kredivo

Name Type Description
status String Status code (OK or ERROR)
message String Description of status
payment_type String Payment id/type chosen by the shopper (30_days, 3_months, 6_months, 12_months)
transaction_id String Transaction Id given by Kredivo
transaction_status String Transaction status of a transaction, the values is:
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 UNIX timestamp (epoch) Timestamp of transaction
payment_type String Payment id/type chosen by the shopper (30_days, 3_months, 6_months, 12_months)
shipping_address Address Optional. Shipping address of the customer/shopper
order_id Integer Order Id given by merchant
amount String The transaction amount
signature_key String Signature key to validate if the notification is originated from Kredivo. Please contact us how to parse this signature_key by using your client key.

Address

Name Type Description
First_name String Optional.
last_name String Optional.
address String Optional.
city String Optional.
postal_code String Optional.
phone String Optional.
country_code String Optional.

Merchant Response

merchant response should be in JSON, structured like this:

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

2. Confirm the order status

You must now get the order status to validate the notification originated from Kredivo’s server

Using the API:

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

Request Body

Name Type Description
transaction_id String Transaction Id given by Kredivo
signature_key String Signature key to validate if the notification is originated from Kredivo. Please contact us how to parse this signature_key by using your client key.

Response Body

Example response after call API v2/update:

  {
    "status":"OK",
    "message": "Confirmed order status.",
    "payment_type":"30_days",
    "transaction_id":"bb0380d7-2688-4e73-a668-997f3fc5cbec",
    "transaction_status":"pending",
    "transaction_time":1469613243,    
    "order_id":"KD125262",
    "amount":125000,
    "fraud_status":"accept"
  }
Name Type Description
status String Status code (OK or ERROR).
message String Description of status
payment_type String Payment id/type chosen by the shopper (30_days, 3_months, 6_months, 12_months)
transaction_id String Transaction Id given by Kredivo
transaction_status String Transaction status of a transaction, the values is:
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 UNIX timestamp (epoch) Timestamp of transaction
order_id Integer Order Id given by merchant
amount String The transaction amount
fraud_status String Detection result by Fraud Detection System (FDS), the values is:accept: Approved by FDS; deny: Denied by FDS. Transaction automatically failed

Settle an order in your system

You should now settle the order in your system with the order data that you want to store if transaction_status is SETTLEMENT.

Cancel Purchase

Full Cancellation

Payment can be voided with cancel method if transaction has been completed.

Using the API:

Example Request :

{
    "server_key":"MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
    "order_id":"KD14721",
    "transaction_id":"1043da09-e5e0-42ff-8e50-2d7412d6dd49",
    "cancellation_reason":"Out of stock",
    "cancelled_by":"Althea",
    "cancellation_date":"1464881310"

}

Request Body

Name Type Description
server_key String Required. Each merchant will have server_key generated by Kredivo.
order_id String Required. Order Id given by merchant
transaction_id String Transaction Id given by Kredivo
cancellation_reason String A description that clarifies reason of cancelling the transaction
cancelled_by String Cancellation requester name/ id
cancellation_date UNIX timestamp (epoch) Timestamp of Cancellation

Example Response :

{
    "status":"OK",
    "transaction_id": "1043da09-e5e0-42ff-8e50-2d7412d6dd49"
    "transaction_status":"cancel",
    "transaction_time":1464861310,
    "order_id":"KD14721",
    "amount":"100000",
    "fraud_status":"accept"
}

Response

Name Type Description
status String Status code. Complete list of status codes can be seen here.
transaction_id String Transaction Id given by Kredivo
transaction_status String Transaction status of a transaction, the values is:
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 UNIX timestamp (epoch) Timestamp of transaction
order_id Integer Order Id given by merchant
amount String The transaction amount
fraud_status String Detection result by Fraud Detection System (FDS), the values is:accept: Approved by FDS deny: Denied by FDS. Transaction automatically failed

Partial Cancellation

Payment can be voided with partial cancelation method if transaction has been completed.

Partial cancellation constraints:

  1. Partial cancellation only happen at item/SKU (excluding any fees).
  2. Transaction can be partially cancelled multiple time
  3. All cancelled items/transaction cannot be reverted back.

Using the API:

Example Request :

{
"server_key":"MEJ4FLRc74UU64cxCF8Z3HYSpPctD7",
"transaction_details": {
 "order_id":"KD14721",
 "amount":10000000,
 "items": [
    {
     "id":"BB12345678",
     "name":"iPhone 5S",
     "price":6000000,
     "quantity":1,
     "cancellation_reason":"Out of stock" 
    },
    {
     "id":"AZ14565678",
     "name":"Xiaomi Mi 5",
     "price":4000000,
     "quantity":1,
     "cancellation_reason":"Out of stock" 
    }
  ]
 },
"cancelled_by":"Althea",
"cancellation_date":1464881310
}

Example Response :

{
    "status":"OK",
    "message":"Message if any",
    "fraud_status":"accept"
}

Request Body

Name Type Description
server_key String Required. Each merchant will have server_key generated by Kredivo.
transaction_details Transaction Required. Details of the transaction
cancelled_by String Required. Cancellation requester name/ id
cancellation_date UNIX timestamp (epoch) Required. Timestamp of Cancellation

Detail of Transaction

Name Type Description
order_id String Required. Order Id given by merchant
amount Double Required. The transaction amount
items Item Required. The shopping items

Detail of Product Item

Name Type Description
id String Required. such as product SKU. * Any fee will not get cancelled (e.g. for any fees including shipping, tax, admin, additional, insurance, discount)
name String Required. product name given by merchant
cancellation_reason String Required. A description that clarifies reason of cancelling the item

Response

Name Type Description
status String Status code
message String Detail status
fraud_status String Detection result by Fraud Detection System (FDS), the values is:accept: Approved by FDS, deny: Denied by FDS. Transaction automatically failed

Branding & Visual

Logos

Using Kredivo’s logotype generates trust and increases your conversion. Use the provided URLs to replace the source of any old Kredivo logotypes. Once you’ve done this, you’ll never have to update your Kredivo logotype again. We host them for you, ensuring maximum availability and fast loading times.

Note: You need to specify these parameters in the URL to get the correct logo on your site:

Your website’s background

Depending on if you have dark or light background you can get either a blue or white logo.

Width

We recommend that the Kredivo logo displayed at your site is between 100-300 px. Note that you should not add px after the size parameter.

Example:

basic

basic-white

kredivo

kredivo

On your frontpage

When showing the different payment alternatives you offer in your store, display our one and only logo. When hovering over the logo our tooltip shows details on the payment methods available in your store.

On product level

You will increase the conversion for high value products by showing your consumers that they have the ability to pay in installments. Always use our logotype on product level. The logotype is highly recognisable, even in small sizes. For optimal conversion use our payment method widget.

Tooltip

How to implement the Kredivo Tooltip

Step 1 Create an element on your page :

<div class="kredivo_widget">
   <img class="kredivo_tooltip" src="http://kredivo.com/tooltip/images/tooltip-banner.png">   
   <iframe style="position: absolute; left: 0px; z-index:999;" class="tooltip_iframe" id="tooltip_iframe" src="http://kredivo.com/tooltip/index.html" frameborder="0" height="329" width="496">
   </iframe>
</div>

Step 2 Include the Javascript and Stylesheet on your page

<link href="http://kredivo.com/tooltip/css/kredivo.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://kredivo.com/tooltip/js/kredivo.js"></script>

To make sure that you can capitalize on the full potential of our payment method, we have developed a tooltip that allows your consumers to get information about our payment methods without creating any friction in your store.

What it is:

An information plate that shows a brief explanation of available payment options and about Kredivo, enabling maximum information to consumer while using minimum real estate on your site.

Where it’s used:

It appears when consumers hover the Kredivo logo (or the Payment method display in Kredivo Checkout stores).

What it does:

It provides short and easily accessed written info about Kredivo and the payment methods offered through us, in complement to the visual elements.

Example of the tooltip:

kredivo

Marketing Resource

What is Merchant Success?

Kredivo team is here to work together with you to identify and solve problems, support and build a long-term mutual relationship, as well as create collaborative campaigns to increase your revenue.

Our product is your “Sales Enabler”, meaning that Kredivo helps your customer to buy more and more often. In order to see significant results of our product, we strongly encourage you to implement merchant best practice

Why is this important to implement Merchant Best Practices?

  1. Incremental sales takes time and effort. Acquiring customer that is loyal require time and effort. Kredivo is here to facilitate the process through Merchant Best Practice.

  2. Education is crucial. Instant credit financing is not a familiar concept with many consumers. It is important for merchant to educate and create a good consumer flow within the platform.

  3. Sales enabler engine. “Buy now pay later” and “Installment without credit card” is a very strong message for consumptive consumers, allowing them to buy more and more often. Sharing this messages within the platform clearly will help increase sales.

Important Information:

  1. Please send all Kredivo related collateral (newsletter, product promotion, social media posting, banner, FAQ) to successops@finaccel.co prior to posting for approval.
  2. For any merchant related inquiries on customer service and payment information please send it to merchant.help@kredivo.com. (Note: this is for merchant related inquiries not consumers related inquiries, in any circumstances this email shall not be given to consumers).
  3. For any consumer related inquiries on our product, technical and payment please let the consumer send these inquiries to support@kredivo.com or call at 021-57941264 (Note: Merchant is able to relay this email and phone number to consumers)

Other Marketing Resources:

Environment Setup

Sandbox

Use credentials below to integrate with our sandbox server.

Credential Description
End Point https://sandbox.kredivo.com/kredivo/
Server Key 8tLHIx8V0N6KtnSpS9Nbd6zROFFJH7
Test Account To make transaction you can use below credentials and enter ‘4567’ as the OTP.
Username: 081513114262
Password: 663482
Transaction OTP: 4567

Live

Use credentials below to integrate with our live server. Only transaction comes to this server will be processed by our server.

Credential Description
End Point Please ask support@kredivo.com for live server end point before going live.