Update v2
Updates an existing payment link. True partial update — any field omitted from the request body is left untouched (unlike v1, which recomputes several fields to their “not sent” defaults and silently clears them). Rejected outright with 422 if the link is already expired or already closed (status=closed), before any field is processed. See UpdatePaymentLinkV2Request for per-field behavior.
Authorizations
JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.
Merchant API key (Credential.api_key). Required on every request.
Path Parameters
Payment link identifier (payment_links.id).
Body
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.
Updates the payment link description. Send an empty string/null to clear it.
255"Updated description"
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.
0 <= x <= 9995
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.
"2026-08-10T00:00:00+07:00"
Updates the payment link lifecycle status. Omit to leave unchanged.
open, closed, expired "closed"
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.
Updates the success redirect URL. Omit to leave unchanged.
2048"https://merchant.example.com/payment/success"
Updates the expired redirect URL. Omit to leave unchanged.
2048"https://merchant.example.com/payment/expired"
Updates the merchant-defined metadata. Omit to leave unchanged.
Only applied when the link is (or is being made) multi-use. Omit to leave unchanged.
false
Only applied when the link is (or is being made) multi-use. Omit to leave unchanged.
true
