Paying Out

By following these steps, you can seamlessly integrate a instant payout function via DuitNow network to any bank and e-wallet account holder in Malaysia.

Authentication

LeanX uses Auth Token to authenticate in each request's header.

Auth Token can be retrieved in your portal dashboard under API page.

Request Header

{
    "auth-token": "LP-0D7C06DE-MM|7394e58e-edee-4c42-9ca5-bcbc449f1b9f|2141df4a3cb633d5ce8683bb0c55067e5caebfbe07390dde277dc455bcc95c91723a81b5e565c7c02d68fb84e396722563016bf99e576a4b8cdbe4423fbf226b"
}

Step 1 : Getting Payout Service List

Please note that our payout service only extends to Web Payment (FPX) B2C only.

You are advised to verify the recipient before proceeding with the transfer. We have provided bank verification endpoints which you can view via the link below.

Bank Account Verification

HTTP Method: POST

https://api.leanx.dev/api/v1/merchant/list-payout-services

Request Body

no request body

Response

{
  "response_code": 2000,
  "description": "SUCCESS",
  "app_version": "/api/v1",
  "talk_to_server_before": "2023-11-28T18:00:18.547062",
  "data": {
    "list": {
      "draw": 30,
      "record_total": 30,
      "record_filtered": 30,
      "data": [
        {
          "SWITCH_PAYOUT_WEBPAY": [
            {
              "payout_service_id": 1,
              "payment_model_reference_id": 1,
              "payment_model_reference": "B2C",
              "unique_reference": "PAYOUT_MBSB_BANK_WEBPAY",
              "payment_service": "SWITCH_PAYOUT_WEBPAY",
              "name": "MBSB BANK BERHAD",
              "record_status_id": 1,
              "record_status": "ACTIVE"
            },
            .....
            {
              "payout_service_id": 2,
              "payment_model_reference_id": 1,
              "payment_model_reference": "B2C",
              "unique_reference": "PAYOUT_AGROBANK_WEBPAY",
              "payment_service": "SWITCH_PAYOUT_WEBPAY",
              "name": "BANK PERTANIAN MALAYSIA BHD (AGROBANK)",
              "record_status_id": 1,
              "record_status": "ACTIVE"
            }
          ]
        }
      ],
      "next_page_start": null,
      "next_page_length": null,
      "previous_page_start": null,
      "previous_page_length": null
    }
  },
  "breakdown_errors": null,
  "token": ""
}

Step 2 : Create Payout Request

HTTP Method: POST

https://api.leanx.dev/api/v1/merchant/create-payout-invoice

Request body

{
  "virtual_pool_reference": "VA-8F9FD0-132317969417-PAYOUT",
  "payout_service_id": 23,
  "amount": 13.00,
  "recipient_name": "John Doe",
  "client_callback_url": "https://www.yourdomain.com/api-callback-url",
  "third_party_account_no": "8011408168",
  "external_invoice_ref": "INVOICE1234",
  "recipient_reference": "test"
}

Attribute

PropertyTypeDescription

virtual_pool_reference*

String

Your virtual pool reference can be found in the portal under Prefund Page

payout_service_id*

Number

Payout service ID from payout service list

amount*

Decimal (10,2)

The amount that you want to payout.

recipient_name

String

Required

client_callback_url*

String

Callback url after the payout is made.

third_party_account_no*

String

Account number of the recipient

external_invoice_ref

String

Reference to your own invoice ID. Can be use to query back the payout status

recipient_reference*

String

Recipient reference for the transfer

Response

{
  "response_code": 2000,
  "description": "SUCCESS",
  "app_version": "/api/v1",
  "talk_to_server_before": "2023-12-05T17:43:07.620538",
  "data": {
    "status": "SUCCESS",
    "invoice_no": "PAYOUT-A9D5:174307-LEANX"
  },
  "breakdown_errors": "",
  "token": "18e0933d-6bc1-4808-9bc7-aad2bcd38686"
}

Step 3 : Getting Payout Status

HTTP Method: POST

https://api.leanx.dev/api/v1/merchant/get-payout-transaction-by-id

Request Query

?_id=PAYOUT-A9D5:174307-LEANX
?_id=INVOICE1234

You may choose to search for transaction status based on payout id (given by the system) or external_invoice_ref (given by your side upon create payout request) based on necessity. However, it is advisable to always search based on external_invoice_ref to ensure that your internal record and payout request is in-sync.

Attributes

PropertyTypeDescription

_id

String

Payout invoice number that you want to get the status or external invoice reference added upon create payout request

Response

{
  "response_code": 2000,
  "description": "SUCCESS",
  "app_version": "/api/v1",
  "talk_to_server_before": "2023-12-05T18:02:55.948983",
  "data": {
    "payout_invoice_no": "PAYOUT-A9D5:174307-LEANX",
    "merchant_invoice_id": "VA-F04EC4-164712020277-PAYOUT",
    "id": 419,
    "payout_account_number": "8011408168",
    "transaction_fee": 0.00,
    "account_id": 3,
    "record_status": 1,
    "updated_at": "2023-12-05T17:44:05",
    "switch_invoice_id": "VP1678085468bA52B",
    "transaction_invoice_no": "PAYOUT1701769387uG4ENyls",
    "transaction_status": "SUCCESS",
    "value": 13.00,
    "switch_transaction_fee": 0.00,
    "api_key": "18e0933d-6bc1-4808-9bc7-aad2bcd38686",
    "created_at": "2023-12-05T17:43:07"
  },
  "breakdown_errors": null,
  "token": "18e0933d-6bc1-4808-9bc7-aad2bcd38686"
}

Last updated