Supported currencies: AUD and USD.
Environments
To see the SDK running, visit the demo website.
Integration steps
1
Register your app ID and domain
Contact the Hello Clever team to register your domain and receive your
app_id.2
Include the SDK script in your checkout page
3
Add a mount element to your HTML
createPayment().4
Initialise the SDK and create a payment
SDK configuration reference
GetKollo({ app_id })
Creates an SDK instance.
createPayment(order, options)
Creates the payment and renders the card form in your mount element.
order (required)
options (required)
onSubmit(payload)
Submits the card form when paymentButton is set to external. Call it from your own button’s click handler.
Payment status callback
After the payment is submitted, or if the card form fails to render, the SDK callswindow.getkolloCardCallback:
The callback reflects what happened in the browser. Confirm the final payment status from your webhook notifications before you fulfil the order.
Payment types
Regular payment
Customers can choose to store their card details during a payment. You can then use them for future payments without the customer re-entering them. SCA requirements: in regions that require Strong Customer Authentication (SCA), the customer must complete a 3D Secure (3DS) challenge during payment. When SCA is required, the API response includes apay_code.3ds_url field. Redirect your customer to this URL to complete authentication.
Set up a regular payment: pass payment_type: "regular" in the order object when you call createPayment(). This is optional, because regular is the default.
Unscheduled payment
With an unscheduled payment agreement, you store a customer’s card details during an initial transaction. You can then make a card-not-present transaction with the stored card later. For example, a customer gives their card details when checking in to a hotel, but is only charged at check-out, by which time they may have incurred extra charges. SCA requirements: merchant-initiated transactions fall outside the scope of SCA and qualify for the Merchant Initiated Exclusion, so 3DS authentication is not required. Set up an unscheduled payment:1
Initial payment (SDK)
Pass
payment_type: "unscheduled" in the order object when you call createPayment(). This stores the customer’s card details.2
Subsequent payments (Tokenisation API)
Charge the saved token with Create Payment via Tokenisation, using these fields:
payment_type: set tounscheduled.previous_payment_uuid: theuuidreturned for the initial payment. It references the original SCA-authorised transaction and improves approval rates.charge_reason: recommended, because it improves approval rates and chargeback handling. Use one of:resubmission: the original purchase happened, but you could not get authorisation when the goods or services were provided.delayed_charge: there is a delayed charge.no_show: the cardholder agreed to a purchase but did not meet the terms of the agreement.reauthorisation: an additional purchase was made after the original one, typically for delayed or split orders.
Reuse tokens for future payments
Call Create Payment via Tokenisation with your saved token (token.id and token.type). payment_type defaults to regular if you omit it. For the differences between regular and unscheduled, see Payment types.
pay_code.3ds_url, redirect your customer there to complete 3DS. After authorisation, they return to your return_url.
Webhook notifications
When the payment status changes (for example,pending to authorised to waiting), Hello Clever sends a webhook event to your configured endpoint.
When the payment reaches authorised or waiting, the webhook includes a token object: