Hello Clever Payment API Reference (2.0)
Hello Clever Payment is an instant payment solution empowered by the New Payments Platform with PayID and PayTo supported. Hello Clever also supports debit/credit cards with a competitive rates. With Hello Clever, you can create and monitor payment requests with powerful AI-powered insights, real-time enrichment, detailed classification, accurate and latest transaction information. Hello Clever Payment APIs are based on REST.
Hello Clever provides core API services enabling developers to build innovative payment solutions. You can use this documentation to integrate your application with Hello Clever.
Please note that, Hello Clever provides two ways of the API solution you can utilise depending on your business direction:
To use our API solution, you will need to register and have a merchant account (https://merchant.helloclever.co) to generate and obtain an access key. The merchant account will also enables you to manage and view payments from your customers, set up cashback rates, and manage payout accounts. You can reach out to our sales team via https://helloclever.typeform.com/enquiry to open an account free of charge. We provide a dedicated support team to guide you through the integration journey.
API Endpoint
- Sandbox API Endpoint: https://api.cleverhub.co
- Production API Endpoint: https://api-merchant.helloclever.co
We understand that starting a new service can be overwhelming. That's why we want to make the process as easy as possible for you. To get started quickly and smoothly, we recommend using our example Postman collection .
This collection is designed to give you a clear understanding of how our service works and how you can use it to achieve your goals. With this collection, you can easily explore our API and try out the different functionalities that we offer. So, if you're ready to dive in and start exploring, we encourage you to use our example Postman collection and let us know if you have any questions or feedback.
- The Hello Clever API uses API keys to authenticate requests. You can view and manage your API keys within the Hello Clever Dashboard.
- Our API is organised around REST and has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
- You can use our API in test mode within our sandbox environment, which does not affect your live data or interact with the banking networks. The API key you use to authenticate the request determines whether the request is live mode or test mode.
Get payin methods
This API enables you to receive a list of all available payin methods. The app-id and secret-key will be used to determine the necessary payin methods based on the country and currency. You can configure this information in the Hello Clever Merchant Dashboard.
Authorizations:
Responses
Response Schema: application/json
Array of objects |
Response Schema: application/json
object |
Response samples
- 200
- 401
{- "records": [
- {
- "currency": "PHP",
- "payin_method_name": "ph_bank_maya_php"
}, - {
- "currency": "PHP",
- "payin_method_name": "ph_ewallet_gcash_php"
}, - {
- "currency": "PHP",
- "payin_method_name": "ph_bank_php"
}
]
}
Get payin’s required fields
Certain payment methods may require information to be collected from consumers. This API will provide all parameters potentially needed for a specific payin method. The returned parameters may be either optional or mandatory.
Authorizations:
query Parameters
payin_method_name required | string Payin Method Name (For e.g. ph_bank_maya_php) |
Responses
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 401
{- "record": {
- "currency": "PHP",
- "symbol": "₱",
- "logo": "",
- "payin_method_name": "ph_bank_maya_php",
- "description": "MAYA",
- "payin_method_params": {
- "user_id": "string:Optional user ID from the merchant system",
- "product_name": "string:Optional product names from the merchant system"
}, - "payment_type": "pay_in",
- "is_refundable": false,
- "is_cancellable": false,
- "require_contact": false,
- "require_kyc": false,
- "min_amount": 200,
- "max_amount": 50000
}
}
Create a payin request
To be able to successfully create a payin request you would need the following APIs in consideration:
- Step 1: Call the Get payin methods to retrieve the list of supported methods.
- Step 2: Call the Get payin required fields to get specific required fields for each method.
- Step 3: Create the payment using the method and required fields from the previous step.
- Step 4: On sandbox environment, you can call the Simulate payin to simulate the payment.
Note:
If the payin_method_name
is jp_bank_jpy
, the pay_code
will be sent to the webhook after a certain period with the following fields:
bank_name
: The recipient's bank name.transfer_id
: The transfer identifier on the provider side.branch_code
: The code of the recipient's bank branch.branch_name
: The name of the recipient's bank branch.account_number
: The recipient's account number.account_name
: The recipient's account name.expired_timestamp
: The payment expiration time.account_type
: The recipient's account type.transfer_name
: The name associated with the transfer.
If you use one of the following payin methods, please check the list of supported providers before proceeding:
sa_eft_zar
: View supportedmy_bank_fpx_myr
: View supported
❗ Important:
For Step 3, if you choose mobile_money
as the payin method, as the PayIn method, refer to the instructions in the Mobile Money tab.
- For example:
gh_mobile_money_ghs
Authorizations:
Request Body schema: application/json
currency required | string Transaction currency. It has to be a valid ISO 4217 currency codes. For example, 'PHP' for Philippine Peso, 'AUD' for Australian Dollar. |
gst required | boolean Goods and Services Tax. |
amount required | number Amount. Optional with |
name required | string Customer name. |
email required | string If |
external_id | string Custom ID. |
description required | string Description. |
payin_method_name required | string Payin method name to be used for this payment. You will receive this from the Get payin methods API. |
payin_method_params required | object Payin method parameters. You will receive this from the Get payin’s required fields API. |
required | object Merchant Callback Details |
expired_at | string <YYYY-MM-DDTHH:mm:ss> Expired time of transaction. This datetime would be in the UTC timezone. Must set the schedule bigger 15 minutes from the current time. |
Responses
Response Schema: application/json
uuid | string |
name | string |
description | string |
string | |
external_id | string |
status | string <pending | received | expired | return_pending | return_received | return_expired | waiting> Status of the transaction:
|
stage | string <authorize_otp | authorize_stk | normal_stage> |
object Code using pay | |
currency | string |
gst | boolean |
amount | number |
gst_amount | number |
total | number |
paid_amount | number |
payment_method | string |
is_refundable | boolean |
expired_at | string <date-time> |
pay_by | string <date-time> |
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Callbacks
Request samples
- Payload
{- "currency": "PHP",
- "amount": 500,
- "name": "Hello Clever",
- "gst": false,
- "email": "test@helloclever.co",
- "payin_method_name": "ph_bank_maya_php",
- "payin_method_params": { },
- "description": "Test Payin",
- "expired_at": "2021-12-23T06:00:00.000+0000"
}
Response samples
- 200
- 401
- 422
{- "uuid": "VMMAOTFQ",
- "name": "Hello Clever",
- "description": "description",
- "email": "test@helloclever.co",
- "external_id": "123456",
- "status": "pending",
- "currency": "PHP",
- "gst": true,
- "amount": "1000.0",
- "gst_amount": "100.0",
- "total": "1100.0",
- "paid_amount": "0",
- "payment_method": "ph_bank_maya_php",
- "is_refundable"": "false",
- "expired_at": "2021-12-23T06:00:00.000+0000",
- "pay_by": "2021-12-23T06:00:00.000+0000",
}
Callback payload samples
{- "uuid": "VMMAOTFQ",
- "name": "Hello Clever",
- "description": "description",
- "email": "test@helloclever.co",
- "external_id": "123456",
- "status": "pending",
- "currency": "PHP",
- "gst": true,
- "amount": "1000.0",
- "gst_amount": "100.0",
- "total": "1100.0",
- "paid_amount": "0",
- "payment_method": "ph_bank_maya_php",
- "is_refundable"": "false",
- "expired_at": "2021-12-23T06:00:00.000+0000",
- "pay_by": "2021-12-23T06:00:00.000+0000",
}
Get payin requests in a period of time
This API allows you to fetch a complete list of payin linked to your app-id. You can filter the results based on multiple query params. This API is paginated. The default is 20 transactions per page.
Authorizations:
query Parameters
from_date | string Example: from_date=2022-01-01T00:00:00 Start date to query payment requests from, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. This datetime would be in UTC timezone |
to_date | string Example: to_date=2022-01-01T00:00:00 End date to query payment requests, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. The datetime would be in UTC timezone |
page | string Page number to query. Currently we support 20 records per page |
per_page | string Default 20 records per page |
Responses
Response Schema: application/json
per_page | integer |
page | integer |
total_page | integer |
Array of objects |
Response Schema: application/json
object |
Response samples
- 200
- 401
{- "total": 100,
- "page": 1,
- "per_page": 20,
- "records": [
- {
- "uuid": "VMMAOTFQ",
- "name": "Luyx",
- "email": "luyx@helloclever.co",
- "external_id": "123456",
- "status": "pending",
- "currency": "PHP",
- "gst": true,
- "amount": "1000.0",
- "gst_amount": "100.0",
- "total": "1100.0",
- "paid_amount": "0",
- "payment_method": "ph_ewallet_gcash_php",
- "description": "description",
- "is_refundable"": "false",
- "expired_at": "2021-12-23T06:00:00.000+0000",
- "pay_by": "2021-12-23T06:00:00.000+0000",
}
]
}
Get payin details
This API allows you to fetch the details of a specific payin request. You can use the UUID to retrieve the details of a specific payment request.
Authorizations:
query Parameters
uuid | any Unique ID in system. |
Responses
Response Schema: application/json
uuid | string Unique Id in system. |
name | string Customer name. |
string Customer email. | |
external_id | string Custom ID. |
status | string <pending | received | expired | return_pending | return_received | return_expired> |
object Code using pay | |
currency | string |
gst | boolean |
amount | number |
gst_amount | number |
total | number |
paid_amount | number |
payment_method | string |
description | string |
is_refundable | boolean |
expired_at | string <date-time> |
pay_by | string <date-time> |
object |
Response Schema: application/json
object |
Response samples
- 200
- 401
{- "uuid": "string",
- "name": "string",
- "email": "string",
- "external_id": "string",
- "status": "string",
- "pay_code": {
- "redirect_url": "string"
}, - "currency": "string",
- "gst": true,
- "amount": 0,
- "gst_amount": 0,
- "total": 0,
- "paid_amount": 0,
- "payment_method": "string",
- "description": "string",
- "is_refundable": true,
- "expired_at": "2019-08-24T14:15:22Z",
- "pay_by": "2019-08-24T14:15:22Z",
- "webhook_notification": {
- "endpoint_url": "string",
- "authorization_header": "string"
}
}
Payin request simulation
This API allows you to simulate a payin request completion. This is useful for testing purposes and works only in sandbox environment. To complete the payment, it must be in a PENDING status.
Authorizations:
Request Body schema: application/json
uuid required | string Payment UUID |
amount | number Amount simulate |
status required | string The desired transaction status, with two possible statuses completed or failed. |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "MB3Y26GO",
- "amount": 500,
- "status": "completed"
}
Response samples
- 200
- 401
{- "status": "ok"
}
Refund Payin
Initiate a refund request on a completed payin (with received
status). Before initiating the refund, check if the payin method is refundable (is_refundable == true
).
Authorizations:
Request Body schema: application/json
uuid required | integer Payment request ID |
amount | number Refund amount, must be numeric. If not specified, the refund amount will be the same as the total amount. |
description required | string Partial refund reason, must be at least 5 characters long |
Responses
Response Schema: application/json
total_amount | string Total amount of the transaction |
refund_amount | string Amount refunded |
description | string Reason for the refund |
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "APU221YS",
- "amount": 10,
- "description": "Partial Refund Reason"
}
Response samples
- 200
- 401
- 422
{- "total_amount": "100.0",
- "refund_amount": "10.0",
- "description": "Test refund",
- "payin_request": {
- "uuid": "APU221YS",
- "name": "Toby",
- "description": "Test refund description",
- "email": "toby.tran@helloclever.com",
- "external_id": "1234556",
- "status": "return_pending",
- "pay_code": {
- "pay_id": "n2qrikv@dreamithost.com.au"
}, - "currency": "AUD",
- "gst": false,
- "amount": "100.0",
- "gst_amount": 0,
- "total": "100.0",
- "paid_amount": "0.0",
- "payment_method": "pay_id",
- "is_refundable": true,
- "expried_at": "2025-10-01T03:16:06.375+0000",
- "pay_by": "2024-10-01T03:16:05.460+0000",
}
}
Cancel Payin
Cancel a pending
Payin transaction,the transaction status will be updated to expired
. Before cancel payin, check if the payin method is cancellable (is_cancellable == true
).
Authorizations:
Request Body schema: application/json
uuid required | integer Payment request ID |
Responses
Response Schema: application/json
status | string Status |
Response Schema: application/json
object |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "APU221YS"
}
Response samples
- 200
- 401
- 422
{- "status": "Ok"
}
Authorizing an OTP transaction
After submitting a request to Create a PayIn Request using the mobile_money PayIn method, if the stage
field is authorize_otp
, it means an OTP has been sent to the wallet owner's phone. You should collect the OTP to authorize the Payin. Retrieve the OTP sent to the customer's phone and send a request to our authorization endpoint. If the OTP verification is successful, an STK prompt will be sent to the wallet owner's phone, prompting them to enter their PIN.
Authorizations:
Request Body schema: application/json
uuid required | string Payin request ID |
code required | string |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "APU221YS",
- "code": "123456"
}
Response samples
- 200
- 401
{- "status": "Ok"
}
Resend OTP
This endpoint allows you to resend OTP in a situation where the initial OTP received had expired or was not received at all.
Authorizations:
Request Body schema: application/json
uuid required | string Payin request ID |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "APU221YS"
}
Response samples
- 200
- 401
{- "status": "Ok"
}
Resend STK (Sim toolkit)
This endpoint allows you to resend the STK prompt in a situation where the initial STK prompt received had expired or was not received at all.
Authorizations:
Request Body schema: application/json
uuid required | string Payin request ID |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "APU221YS"
}
Response samples
- 200
- 401
{- "status": "Ok"
}
Get payout methods
This API enables you to receive a list of all available payout methods. The app-id and secret-key will be used to determine the necessary payout methods based on the country and currency. You can configure this information in the Hello Clever Merchant Dashboard.
Authorizations:
Responses
Response Schema: application/json
Array of objects |
Response Schema: application/json
object |
Response samples
- 200
- 401
{- "records": [
- {
- "currency": "PHP",
- "payout_method_name": "ph_bank_maya_php"
}, - {
- "currency": "PHP",
- "payout_method_name": "ph_ewallet_gcash_php"
}, - {
- "currency": "PHP",
- "payout_method_name": "ph_bank_php"
}
]
}
Get payout required fields
Certain payout methods may require information to be collected from consumers. This API will provide all the parameters potentially needed for a specific payout method. The returned parameters could be either optional or mandatory.
Authorizations:
query Parameters
payout_method_name required | string Payout method name |
Responses
Response Schema: application/json
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 401
- 422
{- "record": {
- "currency": "PHP",
- "symbol": "₱",
- "logo": "",
- "payout_method_name": "ph_bank_maya_php",
- "description": "MAYA",
- "payout_method_params": {
- "account_number": "string:Mandatory Bank Account Number",
- "account_name": "string:Mandatory Account Holder Name",
- "bank_code": "string:Mandatory Bank Code"
}, - "banks": [
- {
- "code": "600",
- "name": "GCASH",
- "short_name": null
}
], - "payment_type": "pay_out",
- "is_refundable": false,
- "is_cancellable": false,
- "require_contact": false,
- "require_kyc": false,
- "min_amount": 200,
- "max_amount": 50000
}
}
Create a payout.
This API enables outbound payments in mutilple currency using supported payout methods. Steps to create a payout:
- Step 1: Call the Get payout methods to retrieve the list of supported methods.
- Step 2: Call the Get payout required fields to get specific required fields for each method.
- Step 3: Initialize a payout with the required fields.
You only need to do steps 1 and 2 once. After that, you can use the same method and required fields to create a payout payment.
There are 4 statuses of the payment:
created
: Payout payment created.processing
: Payout has been processedscheduled
: Waiting for fund to be charged to the payee.completed
: Payout payment has been completed for the entire batch, not for individual transactions.
Please note: If you use one of the following payout methods, please check the list of supported providers before proceeding:
ph_bank_php
: View supportedid_bank_idr
: View supportedng_bank_ngn
: View supportedsa_bank_zar
: View supportedke_bank_kes
: View supportedke_mobile_money_kes
: View supportedgh_mobile_money_ghs
: View supportedcm_mobile_money_xaf
: View supportedci_mobile_money_xof
: View supportedci_mobile_money_xof
: View supportedmy_bank_myr
: View supportedmy_ewallet_*_myr
(touchngo
,finexus
,boost
,bigpay
,shopee
,gxbank
,merchantrade
): View supported
Please note that if any of the transactions fail, it will not affect the completion of the entire batch.
Authorizations:
Request Body schema: application/json
required | Array of objects Payout transaction details |
currency required | string Currency for payout |
payout_method_name required | string Payout method name |
scheduled_at | string <YYYY-MM-DDTHH:mm:ss> Payout transaction to payee in this time. This datetime would be in UTC timezone. |
description required | string >= 5 characters Description of payout payment |
required | object |
external_id | string Custom ID |
Responses
Response Schema: application/json
uuid required | string Unique id in system. |
currency required | string Currency payout |
payout_method_name required | string |
description | string [ 1 .. 90 ] characters Description of payout payment. |
total_amount required | string Total amount of list payout transactions |
status required | string Enum: "created" "processing" "scheduled" "completed" "expired" Status of payout payment |
required | object Merchant Callback Details |
scheduled_at | string <YYYY-MM-DDTHH:mm:ss> Payout transaction to payee in this time. This datetime would be in UTC timezone. |
Array of objects Payout transaction details | |
error_code | string Enum: "HC_PAYOUT1" "HC_PAYOUT2" Error code for the batch. We have 2 error codes |
error_message | string Enum: "Insufficient available funds. Top up your balance." "Insufficient Balance. Hello Clever will charge your PayTo agreement to pay out." A description corresponds to the value of the statusCode field. |
external_id | string Custom ID |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Callbacks
Request samples
- Payload
{- "payout_transaction_details": [
- {
- "first_name": "Clever",
- "last_name": "Hello",
- "email": "test@helloclever.co",
- "amount": 100,
- "payout_method_params": {
- "bsb": "572505",
- "account_number": "76273288",
- "purpose_code": "other",
- "phone": "+61928312999"
}
}
], - "currency": "AUD",
- "payout_method_name": "au_bank_aud",
- "description": "Test payout",
- "external_id": "1235"
}
Response samples
- 200
- 401
- 404
- 422
{- "uuid": "OHXTEF9M",
- "currency": "AUD",
- "payout_method_name": "au_bank_aud",
- "description": "Payout payment 2023",
- "total_amount": "1000",
- "status": "processing",
- "scheduled_at": null,
- "payout_transactions": [
- {
- "first_name": "John",
- "last_name": "Scarlet",
- "amount": 100,
- "payout_method_params": {
- "bsb": "572505",
- "account_number": "76273288",
- "purpose_code": "other",
- "phone": "+61928312999"
}
}
], - "error_code": "HC_PAYOUT1",
- "error_message": "",
- "external_id": "123",
}
Callback payload samples
{- "uuid": "OHXTEF9M",
- "currency": "AUD",
- "payout_method_name": "au_bank_aud",
- "description": "Payout payment 2023",
- "total_amount": "1000",
- "status": "processing",
- "scheduled_at": null,
- "payout_transactions": [
- {
- "first_name": "John",
- "last_name": "Scarlet",
- "amount": 100,
- "payout_method_params": {
- "bsb": "572505",
- "account_number": "76273288",
- "purpose_code": "other",
- "phone": "+61928312999"
}
}
], - "error_code": "HC_PAYOUT1",
- "error_message": "",
- "external_id": "123",
}
Get payout requests in a period of time
You can easily query payout payments in a period of time. Currently we support up to 1 year period. Should you need more, please contact us directly.
Authorizations:
query Parameters
from_date required | string Example: from_date=2022-01-01T00:00:00 Start date to queries payment requests from, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. This datetime would be in UTC timezone |
to_date required | string Example: to_date=2022-01-01T00:00:00 End date to queries payment requests, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. This datetime would be in UTC timezone |
page required | string Page number to query. Currently we support 20 records per page |
Responses
Response Schema: application/json
from_date required | string |
to_date required | string |
page required | integer |
size required | integer |
next_page required | integer |
total_page required | integer |
total_count required | integer |
required | Array of objects |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 401
- 404
- 422
{- "from_date": "2022-01-01T00:00:00.000+0000",
- "to_date": "2022-12-01T00:00:00.000+0000",
- "page": 1,
- "size": 10,
- "next_page": 2,
- "total_page": 1,
- "total_count": 10,
- "records": [
- {
- "uuid": "OHXTEF9M",
- "currency": "PHP",
- "payout_method_name": "ph_ewallet_gcash_php",
- "description": "Payout payment 2023",
- "total_amount": "1000",
- "status": "completed",
- "scheduled_at": "2023-04-01T00:00:00.000+0000",
- "payout_transactions": [
- {
- "uuid": "OHXTEF9M",
- "balance_id": "808C75EF-988143EB",
- "payee": "John Scarlet",
- "amount": "100.00",
- "payout_method_params": {
- "account_number": 123456789999,
- "account_name": "Luyx",
- "bank_code": 11111
}, - "status": "settled",
- "error_message": "PayID not found",
- "created_at": "2022-01-01T00:00:00.000+0000"
}
], - "error_code": "HC_PAYOUT1",
- "error_message": "Insufficient available funds. Top up your balance.",
- "external_id": "123"
}
]
}
Get payout details
Check the status of a payout payment. There are 4 statuses:
created
: Payout payment created.processing
: Payout has been topup to payID response.scheduled
: Waiting charge fund to payee.completed
: Payout payment completed.
Authorizations:
query Parameters
uuid required | string Hello Clever payout payment UUID |
Responses
Response Schema: application/json
uuid required | string Unique id in system. |
currency required | string Currency payout |
payout_method_name required | string |
description required | string [ 1 .. 90 ] characters Description of payout payment. |
total_amount required | string Total amount of list payout transactions |
status required | string Enum: "created" "processing" "scheduled" "completed" "expired" Status of payout payment |
object Merchant Callback Details | |
scheduled_at | string <YYYY-MM-DDTHH:mm:ss> Payout transaction to payee in this time. This datetime would be in UTC timezone. |
required | Array of objects |
error_code required | string Error code for the batch. We have 2 error codes |
error_message required | string A description corresponds to the value of the statusCode field. |
external_id | string Custom ID |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 401
- 422
{- "uuid": "OHXTEF9M",
- "currency": "AUD",
- "payout_method_name": "au_bank_aud",
- "description": "Payout payment 2023",
- "total_amount": "1000",
- "status": "processing",
- "scheduled_at": null,
- "payout_transactions": [
- {
- "first_name": "John",
- "last_name": "Scarlet",
- "amount": 100,
- "payout_method_params": {
- "bsb": "572505",
- "account_number": "76273288",
- "purpose_code": "other",
- "phone": "+61928312999"
}
}
], - "error_code": "HC_PAYOUT1",
- "error_message": "",
- "external_id": "123",
}
Payout simulation
This API works only in sandbox environment and allows you to simulate the completion of a payment. To complete the payout, it must be in a PENDING status.
Authorizations:
Request Body schema: application/json
uuid required | string Payout UUID |
status required | string The desired transaction status, with two possible statuses completed or failed. |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "MB3Y26GO",
- "status": "completed"
}
Response samples
- 200
- 401
{- "status": "ok"
}
Cancel a scheduled payout
You can cancel a payout payment scheduled to run in the future.
Authorizations:
Request Body schema: application/json
uuid required | string Payout payment UUID |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Response Schema: application/json
object |
Request samples
- Payload
{- "uuid": "OHXTEF9M"
}
Response samples
- 200
- 401
- 422
{- "status": "OK"
}
Create Contact
When processing a Payin
or Payout
transaction, if the require_contact
parameter is true
, you need to create a new contact before proceeding with the transaction. Each contact will have a unique email associated with it, ensuring that the user’s information is complete before continuing with the payment process. This email will be used during the process of calling the API to create a Payin
or Payout
transaction.
After successfully creating the contact, you need to perform KYC (Know Your Customer)
verification for this contact if the Payin
or Payout
methods require KYC(require_kyc == true
). This will be done through the Submit KYC API
provided below. If KYC is not required, you can proceed with the transaction process without further verification. Ensure that these steps are completed thoroughly and accurately to maintain security and compliance. Wishing you success in carrying out this process!
Authorizations:
Request Body schema: application/json
email required | string Contact's email. This email will be used during the process of calling the API to create a |
first_name required | string Contact's first name |
last_name required | string Contact's last name |
type required | string Enum: "individual" "organization" The type of contact (e.g., individual or organization) |
dob required | string Contact's date of birth, format 'yyyy-mm-dd' |
reg_no required | string Contact registration number, required if |
phone required | string Contact's phone number |
gender required | string Enum: "male" "female" Contact's gender |
street required | string The primary name of an address's street for the contact. |
city required | string Name of an address's city or town for the contact. |
postal_code required | string The contact's address's postcode |
state required | string The contact's address's state / province / county. |
country required | string ISO 3166-1 alpha-2 country code of the contact's country. |
Responses
Response Schema: application/json
string |
Response Schema: application/json
object |
Response Schema: application/json
object |
Request samples
- Payload
{- "email": "test@helloclever.co",
- "first_name": "Luxy",
- "last_name": "Tran",
- "type": "individual",
- "dob": "1991-12-24",
- "reg_no": "123456789",
- "phone": "+6123224242",
- "gender": "male",
- "street": "338 George Street",
- "city": "Sydney",
- "postal_code": "2000",
- "state": "New South Wales",
- "country": "AU"
}
Response samples
- 200
- 401
- 422
{- "email": "test@helloclever.co"
}
Submit KYC
This API allows you to submit the necessary KYC documents for a specific contact. The KYC documents include the contact's identity proof (e.g., ID card, passport), a selfie, and relevant document images. You must provide the correct contact email
.
The following parameters are required for the successful submission of KYC:
email
: The contact's email used for verification.document_type
: Type of identification document (e.g., passport, ID card,...).document_number
: The identification number on the document.document_username
: The name as shown on the identification document.issue_date
: The date the identification document was issued.expiry_date
: The expiry date of the identification document.issue_country
: The country that issued the identification document.nationality
: The country of nationality of the contact (ISO 3166-1 alpha-2 code).selfie
:A selfie image of the contact for identity verification should be inJPEG
format.id_doc_front_side
:The front side image of the identification document should be inJPEG
orPNG
format.id_doc_back_side
: The back side image of the identification document should be inJPEG
orPNG
formatwebhook_notification
: A JSON object containing theendpoint_url
andauthorization_header
for receiving KYC status change notifications.
Authorizations:
Request Body schema: multipart/form-data
email required | string The contact's email used for verification. |
document_type required | string Enum: "passport" "id_card" "driving_license" The type of identification document (e.g., passport, id_card). |
document_number required | string The identification number on the document. |
document_username required | string The name as shown on the identification document. |
issue_date | string The issue date of the identification document in format 'yyyy-mm-dd'. |
expiry_date required | string The expiry date of the identification document in format 'yyyy-mm-dd'. |
issue_country required | string The country that issued the identification document (ISO 3166-1 alpha-2). |
nationality required | string The country of nationality of the contact (ISO 3166-1 alpha-2 code). |
selfie required | string <binary> A selfie image of the contact for identity verification should be in |
id_doc_front_side required | string <binary> The front side image of the identification document should be in |
id_doc_back_side required | string <binary> The back side image of the identification document should be in |
webhook_notification required | string A JSON object containing the Example: {"endpoint_url": "https://helloclever.co/callback", "authorization_header": "token"}
|
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Response Schema: application/json
object |
Callbacks
Response samples
- 200
- 401
- 422
{- "status": "Ok"
}
Callback payload samples
{- "email": "test@helloclever.co",
- "first_name": "Luyx",
- "last_name": "Tran",
- "type": "individual",
- "dob": "1991-12-24",
- "phone": "+6123224242",
- "reg_no": "123456789",
- "gender": "male",
- "street": "338 George Street",
- "city": "Sydney",
- "postal_code": "2000",
- "state": "New South Wales",
- "country": "AU",
- "identity": {
- "issue_country": "AU",
- "document_number": "12345678",
- "issue_date": "2024-04-16",
- "expiry_date": "2024-04-16",
- "id_doc_type": "Passport"
}, - "kyc_statuses": [
- {
- "kyc_status": "approved",
- "message": "null"
}, - {
- "kyc_status": "rejected",
- "message": "KYC is rejected."
}
]
}
Update Contact
This API allows you to update the information of an existing contact in the system. To do so, you need to provide the contact email
and the updated details of the contact.
Authorizations:
Request Body schema: application/json
email required | string The contact's email used for verification. |
first_name | string Contact's first name. |
last_name | string Contact's last name. |
type | string Enum: "individual" "organization" The type of the contact (e.g., individual or organization). |
dob | string Contact's date of birth, format 'yyyy-mm-dd'. |
reg_no | string Contact registration number, required if |
phone | string Contact's phone number. |
gender | string Enum: "male" "female" Contact's gender |
street | string The primary name of an address's street for the contact. |
city | string Name of an address's city or town for the contact. |
postal_code | string The contact's address's postcode. |
state | string The contact's address's state / province / county. |
country | string ISO 3166-1 alpha-2 country code of the contact's country. |
Responses
Response Schema: application/json
status | string |
Response Schema: application/json
object |
Response Schema: application/json
object |
Request samples
- Payload
{- "email": "test@helloclever.co",
- "first_name": "Luyx",
- "last_name": "Tran",
- "type": "individual",
- "dob": "1991-12-24",
- "reg_no": "123456789",
- "phone": "+6123224242",
- "gender": "male",
- "street": "338 George Street",
- "city": "Sydney",
- "postal_code": "2000",
- "state": "New South Wales",
- "country": "AU"
}
Response samples
- 200
- 401
- 422
{- "status": "Ok"
}
Get Contact requests in a period of time
This API allows you to fetch a complete list of contacts linked to your app-id. You can filter the results based on multiple query params. This API is paginated. The default is 20 records per page.
Authorizations:
query Parameters
from_date | string Example: from_date=2022-01-01T00:00:00 Start date to query contact requests from, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. This datetime would be in UTC timezone |
to_date | string Example: to_date=2022-01-01T00:00:00 End date to query contact requests, format 'DD/MM/YY' or 'YYYY-MM-DDThh:mm:ss'. The datetime would be in UTC timezone |
page | string Page number to query. Currently we support 20 records per page. |
per_page | string Default 20 records per page. |
Responses
Response Schema: application/json
per_page | integer |
page | integer |
total_page | integer |
Array of objects |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 400
- 401
{- "total": 100,
- "page": 1,
- "per_page": 20,
- "records": [
- {
- "email": "test@helloclever.co",
- "first_name": "Luyx",
- "last_name": "Tran",
- "type": "individual",
- "dob": "1991-12-24",
- "phone": "+6123224242",
- "reg_no": "123456789",
- "gender": "male",
- "street": "338 George Street",
- "city": "Sydney",
- "postal_code": "2000",
- "state": "New South Wales",
- "country": "AU",
- "identity": {
- "issue_country": "AU",
- "document_number": "12345678",
- "issue_date": "2024-04-16",
- "expiry_date": "2024-04-16",
- "id_doc_type": "Passport"
}, - "kyc_statuses": [
- {
- "kyc_status": "approved",
- "message": "null"
}, - {
- "kyc_status": "rejected",
- "message": "KYC is rejected."
}
]
}
]
}
Get Contact details
This API allows you to fetch the details of a specific contact request. You can use the email
to retrieve the details of the contact.
Authorizations:
query Parameters
email required | string Example: email=test@helloclever.co Contact email. Please ensure that the email is correct before sending. |
Responses
Response Schema: application/json
email required | string The contact's email used for verification. |
first_name required | string Contact's first name |
last_name required | string Contact's last name |
type required | string Enum: "individual" "organization" The type of contact (e.g., individual or organization) |
dob required | string Contact date of birth format 'yyyy-mm-dd' |
phone required | string Contact's phone |
reg_no required | string Contact registration number. |
gender required | string Enum: "male" "female" Contact's gender |
street required | string The primary name of an address's street. |
city required | string Name of an address's city or town. |
postal_code required | string The address's postcode |
state required | string The address's state / province / county. |
country required | string ISO 3166-1 alpha-2 country code. |
required | object Contains the most recent KYC submission details for the contact. |
Array of objects An array of KYC statuses for the contact, containing multiple KYC instances with status and message. |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 400
- 401
{- "email": "test@helloclever.co",
- "first_name": "Luyx",
- "last_name": "Tran",
- "type": "individual",
- "dob": "1991-12-24",
- "phone": "+6123224242",
- "reg_no": "123456789",
- "gender": "male",
- "street": "338 George Street",
- "city": "Sydney",
- "postal_code": "2000",
- "state": "New South Wales",
- "country": "AU",
- "identity": {
- "issue_country": "AU",
- "document_number": "12345678",
- "issue_date": "2024-04-16",
- "expiry_date": "2024-04-16",
- "id_doc_type": "Passport"
}, - "kyc_statuses": [
- {
- "kyc_status": "approved",
- "message": "null"
}, - {
- "kyc_status": "rejected",
- "message": "KYC is rejected."
}
]
}
Delete Contact
This API allows you to delete contact. You can use the email
to delete.
Authorizations:
query Parameters
email required | string Example: email=test@helloclever.co Contact email. Please ensure that the email is correct before sending. |
Responses
Response Schema: application/json
status required | string The status to confirm action it. |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response Schema: application/json
object |
Response samples
- 200
- 400
- 401
- 422
{- "status": "Ok"
}