Update a payment link
Partially updates an existing payment link. Only provided fields will be updated. Features: - Partial updates: only send fields you want to update - Updates line items with adjustable quantities (if provided, replaces all existing line items) - Updates custom fields (if provided, replaces all existing custom fields) - Updates after-completion settings (if provided, replaces existing settings) - Recalculates amount from line items when line items are updated - Validates currency consistency across line items when line items are updated Notes: - If `lineItems` is provided, all existing line items are replaced - If `customFields` is provided, all existing custom fields are replaced - If `customFields` is an empty array, all custom fields are removed - `expiresAt` can be set to `null` to remove expiration
Partially updates an existing payment link. Only provided fields will be updated.
Features:
- Partial updates: only send fields you want to update
- Updates line items with adjustable quantities (if provided, replaces all existing line items)
- Updates custom fields (if provided, replaces all existing custom fields)
- Updates after-completion settings (if provided, replaces existing settings)
- Recalculates amount from line items when line items are updated
- Validates currency consistency across line items when line items are updated
Notes:
- If
lineItemsis provided, all existing line items are replaced - If
customFieldsis provided, all existing custom fields are replaced - If
customFieldsis an empty array, all custom fields are removed expiresAtcan be set tonullto remove expiration
Authorization
api-key API key for merchant integrations. Send as Authorization: Bearer <your key>.
In: header
Path Parameters
Payment link ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/payment-links/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "plink_abc123", "object": "payment_link", "merchantId": "mer_xyz789", "active": true, "expiresAt": "string", "currency": "EGP", "computedAmount": 100000, "nameCollection": false, "billingAddressCollection": false, "shippingAddressCollection": false, "phoneNumberCollection": false, "allowPromotionCodes": false, "submitType": "PAY", "customerCreation": "always", "afterCompletion": { "type": "redirect", "redirect": { "url": "string" }, "hostedConfirmation": { "customMessage": "string", "returnUrl": "string" } }, "lineItems": [ { "id": "string", "quantity": 0, "price": {}, "adjustableQuantity": {}, "amountSubtotal": 0, "amountTotal": 0, "amountDiscount": 0, "amountTax": 0, "currency": "EGP", "description": "string", "presentmentDetails": {} } ], "customFields": [ { "key": "string", "label": "string", "type": "TEXT", "isOptional": true, "hasLimits": true, "limitType": "AT_MOST", "minCharacters": 0, "maxCharacters": 0, "dropdownOptions": [ null ], "text": {}, "numeric": {}, "dropdown": {} } ], "feeConfig": { "feesPassThrough": true, "vatCollectionEnabled": true, "vatCollectionRate": 0 }, "metadata": { "property1": null, "property2": null }, "brandingSettings": { "colorMode": "light", "borderStyle": "rounded", "spacing": "condensed", "inputSize": "small", "inputStyle": "flat", "formLayout": "compact", "colors": { "primary": "string", "primaryForeground": "string", "background": "string", "foreground": "string", "border": "string", "input": "string", "ring": "string", "muted": "string", "mutedForeground": "string", "accent": "string", "accentForeground": "string", "destructive": "string" }, "fontFamily": "string" }, "paymentMethodConfigurationId": "string", "createdAt": "string", "updatedAt": "string"}Get a payment link by ID GET
Retrieves a payment link with all related data including: - Line items with prices and products - Custom fields with dropdown options - After-completion settings
Get product by ID GET
Retrieves product information including all associated prices. Response shape is identical to the `product.*` webhook payload. For per-price usage counts, call `GET /products/:id/stats`.