The product to edit 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
Update Payment Link
(POST /payment-links/{id}/update).Authorization
string
required
Example:
Authorization | Bearer Paste-Your-API-Key-HereRequest Body
string
required
Unique identifier of the generic payment link product to edit. This is read
from the request body.
string
Generic payment link product name.
string
Generic 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 generic payment link product data.
data Structure (Object)
string
Unique identifier of the generic 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" }.