Skip to main content
POST
Request Payout
Used to request a payout and transfer funds to the specified recipients through a bank account or DuitNow Proxy.
A successful response means the payout request was accepted and queued, not that the funds have been transferred. To get the final payout status, use the callbackUrl (Callback Notifications) or call API Query Payment.

Before you begin

The request is rejected if any of the following is not met:
  • Your wallet for the payout currency is active and has sufficient balance.
  • The payout channel is enabled for your merchant account.
  • The IP address of the server calling this API is whitelisted, if IP whitelisting is configured for your account.

Request

Headers

string
required
Your unique Merchant ID assigned by CommercePay.
string
required
Your API credentials used for authentication (typically a Bearer token).
string
required
A unique security hash used to verify the integrity of the request body. See Generate Signature for how to generate this.

Body

integer
required
An identifier that represents a CommercePay payments channel.See the Channel List for other channel values.
string
required
An identifier that represents the payment method (Bank or DuitNow Proxy). You can obtain the providerChannelId via the API Get Provider Channels or refer to it here.
string
required
Currency code with a 3-letter ISO 4217 standard code (e.g., MYR).Maximum string length: 3
int64
required
The transaction payment value. This field exclusively accepts integer units where the final decimals are represented as whole values (e.g., an amount value of 1050 translates to 10.50 in the system backend).
string
required
The merchant-side unique order reference or invoice tracking sequence code.Maximum string length: 50
string
required
Short free-text summary of the transaction.Use English letters, numbers, spaces and basic punctuation (. , - _ ( ) @ /). Avoid emojis and non-English characters: some payment providers remove unsupported characters or shorten the text before using it, so the description shown by the provider may differ from what you sent. The payment is not rejected when characters are removed.Maximum string length: 100
string
required
The customer’s IP address captured by the merchant server.Maximum string length: 50
string
[Conditional] Customer’s user agent. It is recommended to input for a better user experience for specific channels due to different platforms such as desktop, mobile, or app view. Example channels impact: ShopeePay.Maximum string length: 200
string
required
The synchronous return URL where the customer’s browser is automatically redirected after the transaction is completed.Maximum string length: 500
string
A URL provided by the merchant to receive server-to-server notifications from the system regarding transaction status updates. This URL is called automatically once the payment process is completed or when the transaction status changes. See Callback Notifications for the payload and signature verification steps.Maximum string length: 500
object
required
boolean
required
If the customer is Malaysian, set this to true; otherwise, set it to false.
int64
required
Numeric timestamp in milliseconds representing request validation freshness, generated via new Date().getTime(). Example: 1621851652617.

Request Payload Sample

Payout_With_Bank
Payout_With_DuitNow_Proxy

Response

Body

string
Payout currency.Maximum string length: 3
integer
Payout amount. For example, 1050 represents 10.50.
string
Unique CommercePay Transaction Number.Maximum string length: 24
integer
An identifier that represents a CommercePay payments channel.
integer
Represents the redirectUrl type. This field returns 1 (URL redirection).
string
URL used for the customer to redirect to the payment page.

Response Payload Sample

Response_2XX

Error Responses

Response_400
Response_400