payment.paid
Sent when a payment (from a payment link
or a direct payment) reaches
succeeded.
Headers
Section titled “Headers”| Header | Description |
|---|---|
X-Baiyar-Signature |
t=<unix timestamp>,v1=<hex HMAC-SHA256> — see Verifying Webhook Signatures |
Content-Type |
application/json |
Payload
Section titled “Payload”{ "id": "018f1f29-a012-73e4-a310-744d2167fcb3", "type": "payment.paid", "created_at": "2026-09-02T09:12:00Z", "data": { "id": "018f1f29-9b21-73e4-a310-744d2167fca1", "project_id": "018f1f29-7c00-73e4-a310-744d2167fc60", "reference": "ORDER-2026-0002", "amount": 15000, "currency": "IDR", "status": "succeeded", "paid_at": "2026-09-02T09:12:00Z" }}| Field | Type | Description |
|---|---|---|
id |
string | Unique event ID — use it to deduplicate retried deliveries, not data.id |
type |
string | Always payment.paid |
created_at |
date-time | When the event was generated |
data.status |
string | Always succeeded for this event |
data.paid_at |
date-time | When the payment succeeded |
data is a summary, not the full payment. Call
GET /v1/payments/{data.id}
with your API key if you need the rest (fee breakdown, customer info,
payment instructions).
Testing
Section titled “Testing”curl -X POST https://api.baiyar.id/sandbox/payments/{providerPaymentID}/simulate \ -H "Content-Type: application/json" \ -d '{"outcome": "paid"}'See Sandbox Simulation and Handling Webhook Deliveries.
Next steps
Section titled “Next steps”payment.failed — the other transaction event.