Back to reference
POST/webhooks/{provider}
Provider webhooks

Receive provider webhook

Provider-facing inbound webhook. Sign the exact payload with the provisioned provider secret and send timestamp plus stable event identifier.

Access tierprovider_onlyRate limitpay_apiIdempotencyprovider event idAuthenticationWebhookSignature + WebhookTimestamp
SourceLuxApi/Modules/PayWebhooks/Controllers/WebhookController.php::handleLuxPayProjects @ 146e98baa44e

Parameters

X-Request-IDheader
stringOptional

Client correlation identifier. LuxPay may generate one when omitted.

Example: req_01J...
providerpath
stringRequired

Provider code registered by LuxPay.

Example: wallet
X-Signatureheader
stringRequired

Provider signature.

X-Timestampheader
integerRequired

Unix timestamp used for replay protection.

X-Provider-Event-Idheader
stringOptional

Stable event identifier for deduplication.

Request body

ProviderWebhookPayloadRequired
{
  "type": "object",
  "description": "Provider-specific event payload. LuxPay verifies the signature before queueing the event.",
  "additionalProperties": true,
  "example": {
    "event_id": "evt_01JABC",
    "type": "payment.completed",
    "data": {
      "id": "provider_tx_123",
      "status": "completed"
    }
  }
}

JSON example

{
  "event_id": "evt_01JABC",
  "type": "payment.completed",
  "data": {
    "id": "provider_tx_123",
    "status": "completed"
  }
}

Code examples

The displayed sandbox host is a placeholder until an official host is provisioned. Never paste a production token into a public browser.
curl --request POST \
  --url 'https://sandbox-api.luxpay.example/v1/webhooks/wallet' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
  "event_id": "evt_01JABC",
  "type": "payment.completed",
  "data": {
    "id": "provider_tx_123",
    "status": "completed"
  }
}'

Responses

200Successful response.
status
string
Allowed: accepted, rejected
duplicate
boolean
{
  "status": "accepted",
  "duplicate": false
}
400
401
403Signature or timestamp verification failed.
status
string
Allowed: accepted, rejected
duplicate
boolean
{
  "status": "accepted",
  "duplicate": false
}
404
409
422
429
500
OpenAPI JSONOpenAPI YAMLPostman collection