payment_link.completed
A payment link was paid successfully.
Payload
All webhook payloads follow a consistent top-level structure with event-specific data nested within the data object.
The payment link ID.
The link status. Always "succeeded" for this event.
The collected amount in cents (100 = $1.00).
The payment currency code.
The payment description shown to the customer.
The customer ID, or null when the link is not tied to a customer. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
The one-time invoice generated for this payment.
The human-readable invoice number.
The payment transaction ID for the settled charge.
{
"event": "payment_link.completed",
"timestamp": "2026-06-18T14:05:00.000Z",
"organizationId": "org_abc123",
"mode": "live",
"apiVersion": "2026-06-10",
"data": {
"paymentId": "pay_l1m2n3",
"status": "succeeded",
"amount": 5000,
"currency": "usd",
"description": "One-time onboarding fee",
"customerId": "user_123",
"invoiceId": "inv_n4o5p6",
"invoiceNumber": "INV-0044",
"paymentTransactionId": "ptx_q7r8s9"
}
}When this fires
When a customer pays a payment link on the hosted pay page and the charge settles. Commet generates a one-time invoice (invoiceType: "one_time_payment") and a payment transaction at the same time; the payload carries the invoiceId and paymentTransactionId.
This is the event to fulfill the purchase on — the money has been collected.
The event fires the same way whether your organization runs on the Stripe provider or the Commet sandbox provider.
How is this guide?