Skip to main content
Endpoint:
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-Here

Request 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.
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 Response

Main 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.
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" }.