Skip to main content
PUT
Update v2

Authorizations

Authorization
string
header
required

JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.

X-PARTNER-ID
string
header
required

Merchant API key (Credential.api_key). Required on every request.

Path Parameters

Payment link identifier (payment_links.id).

Body

application/json

True partial update — unlike v1's update (which recomputes several fields to their "not sent" defaults, silently clearing them when omitted), every field here is optional and any field left out of the request body is left completely untouched. reff_no, title, payment_link_type, total_amount, items, and customer_name/customer_email/customer_phone are immutable after creation and not accepted here.

description
string | null

Updates the payment link description. Send an empty string/null to clear it.

Maximum string length: 255
Example:

"Updated description"

max_usage
integer | null

Updates the usage cap. 0 means unlimited. Cannot be set below the current usage count (422). Also re-derives is_multiple_payment/is_unlimited_usage/required_customer_detail. Rejected with 422 if this payment link has customer_name/customer_email/customer_phone and/or a notification/reminder configuration set — those only work for single-use links, so changing max_usage could silently move the link to multi-use and break them. Omit to leave unchanged.

Required range: 0 <= x <= 999
Example:

5

expired_at
string<date-time> | null

Updates the expiration timestamp (must be in the future). Rejected with 422 if this payment link already has a reminder notification configured (i.e. reminder_at is set from reminder_unit/reminder_period sent at creation) — reminder_at is only computed once and would otherwise desync from the new expiry. Omit to leave unchanged.

Example:

"2026-08-10T00:00:00+07:00"

status
enum<string> | null

Updates the payment link lifecycle status. Omit to leave unchanged.

Available options:
open,
closed,
expired
Example:

"closed"

whitelisted_payment_method
string[] | null

Updates the allowed payment method codes. Send null/an empty array to re-auto-select eligible methods based on the link's existing total_amount. Omit the field entirely to leave the current whitelist untouched.

success_redirect_url
string<uri> | null

Updates the success redirect URL. Omit to leave unchanged.

Maximum string length: 2048
Example:

"https://merchant.example.com/payment/success"

expired_redirect_url
string<uri> | null

Updates the expired redirect URL. Omit to leave unchanged.

Maximum string length: 2048
Example:

"https://merchant.example.com/payment/expired"

optional_metadata
object | null

Updates the merchant-defined metadata. Omit to leave unchanged.

required_customer_number
boolean | null

Only applied when the link is (or is being made) multi-use. Omit to leave unchanged.

Example:

false

required_customer_email
boolean | null

Only applied when the link is (or is being made) multi-use. Omit to leave unchanged.

Example:

true

Response

Updated

status
integer
required

HTTP status code.

Example:

200

success
boolean
required

Indicates whether the request was successful.

Example:

true

data
object

Payment link resource payload.