The product to update is identified by the
id field in the request body, not
by the {id} segment in the URL path. This endpoint shares the same handler as
Edit Payment Link
(POST /products/payment-link/{id}/update).Authorization
string
required
Example:
Authorization | Bearer Paste-Your-API-Key-HereRequest Body
string
required
Unique identifier of the payment link product to update. This is read from the
request body.
string
Payment link product name.
string
Payment link product description.
integer
Product price amount.
string
URL where the customer will be redirected after completing payment.
string
Optional slug that replaces the product’s public URL path. The slug is normally
fixed at creation from the original
name; sending link moves the public URL,
e.g. { "id": "...", "link": "superapp-demo-saas" } answers
data.link: "https://<merchant>.myr.id/pl/superapp-demo-saas".string
Additional notes for the payment link.
string | datetime
Payment link expiration date in ISO 8601 format.
Response
Successful ResponseMain Structure (Root)
integer
Status code from API.
string
Status message that describes the status code.
object
The updated payment link product data.
data Structure (Object)
string
Unique identifier of the payment link product.
string
Public payment link URL of the updated product.
Errors
object
When the request body fails validation, the endpoint responds with HTTP
400
and sets messages to failed, returning the validator errors in data:
{ "statusCode": 400, "messages": "failed", "data": [ ... ] }.object
Returned when the body carries
id but no updatable field:
{ "statusCode": 400, "messages": "At least one field to update is required" }.
name and amount are optional — the body must contain at least one of
name, description, amount, redirectUrl, link, coverImage,
expiredAt, limit, notes, or tax.object
For membership-family products (
membership, saas, credit), amount is
required: { "statusCode": 400, "messages": "amount is required to update a membership product" }.object
Returned when the product does not belong to the authenticated account:
{ "statusCode": 401, "messages": "Unauthorized" }.object
Returned when the product does not exist:
{ "statusCode": 404, "messages": "Product not found" }.