Skip to content

payment_link.created

Sent when a payment link is created, via POST /v1/payment-links — see Payment Links for how they work.

Header Description
X-Baiyar-Signature t=<unix timestamp>,v1=<hex HMAC-SHA256> — see Verifying Webhook Signatures
Content-Type application/json
{
"id": "evt_QpL9jZ4mR1sVn6TdWX78",
"type": "payment_link.created",
"created_at": "2026-09-02T08:00:00Z",
"data": {
"id": "pl_test_8Kx3mQ9dPz2Nc7RwAB12",
"project_id": "project_IChAi2NR4vzKN3SgEYPI",
"merchant_name": "Zara Store",
"reference": "001/P/IX/26",
"title": "Invoice August",
"description": "",
"amount": 125000,
"currency": "IDR",
"fee_bearer": "merchant",
"fee_previews": [
{ "payment_method": { "type": "qris" }, "fee_amount": 875, "customer_amount": 125000, "merchant_net": 124125 }
],
"allowed_payment_methods": [{ "type": "qris" }],
"usage_type": "single_use",
"customer_fields": { "name": false, "email": false, "phone": false, "address": false },
"status": "active",
"created_at": "2026-09-02T08:00:00Z"
}
}
Field Type Description
id string Unique event ID — use it to deduplicate retried deliveries, not data.id
type string Always payment_link.created
created_at date-time When the event was generated
data.id string The payment link’s public ID
data.fee_bearer string merchant or customer — resolved: the link’s own override if set, otherwise the project’s default
data.fee_previews array Estimated fee/net amount per allowed payment method
data.usage_type string single_use (default) or reusable
data.status string Always active at creation

data doesn’t include the checkout URL — construct it yourself as https://checkout.baiyar.id/p/<data.id>, the same format returned by the synchronous POST /v1/payment-links response.

There’s no sandbox simulator for this event — trigger it by actually creating a sandbox payment link (POST /v1/payment-links, or from the dashboard) and watching your endpoint receive the delivery within a few seconds.

payment_link.cancelled — the other payment link event.