Kotani Pay sends webhook notifications to inform your application about key lifecycle events—transaction status changes, payment confirmations, compliance updates, and scheduled system announcements. Use these callbacks to drive your automations instead of polling for status.Documentation Index
Fetch the complete documentation index at: https://manual.kotanipay.com/llms.txt
Use this file to discover all available pages before exploring further.
Supported Events
Configure one webhook endpoint per environment from the dashboard and opt in to any combination of events:- Transaction Status Updates – Deposit, withdrawal, or transfer status changes (e.g.,
PENDING→COMPLETED) - Payment Confirmations – Real-time acknowledgements when a payment settles on- or off-chain
- KYC Status Changes – Triggers when a customer’s verification outcome changes
- System Events – Low-volume operational notices and maintenance alerts
Event Types
The following event types are available: Transaction Events:transaction.deposit.status.updated- Deposit transaction status changedtransaction.withdrawal.status.updated- Withdrawal transaction status changedtransaction.onramp.status.updated- On-ramp transaction status changedtransaction.offramp.status.updated- Off-ramp transaction status changedtransaction.status.updated- (Deprecated) Generic transaction status update
payment.confirmed- Payment has been confirmed
kyc.status.changed- Customer verification status changed
system.event- Operational notices and maintenance alerts
Payload Format
Webhooks are sent as HTTPPOST requests with a JSON payload. The request body includes the event name, data payload, and a convenience copy of the signature. The canonical signature is delivered in the X-Kotani-Signature header.
Tip: The payload’s signature field is provided for quick sanity checks, but the header is the source of truth for verification.
Verifying Signatures
Every payload is signed with your dashboard-configured webhook secret. Validate the signature before acting on the event:- Parse the JSON payload from the request body.
- Remove the
signaturefield from the parsed payload. - Compute an HMAC-SHA256 digest of the remaining payload:
sha256=HMAC(secret, JSON.stringify(payloadWithoutSignature)). - Compare the digest with the
X-Kotani-Signatureheader using a timing-safe comparison.
Important: The signature is computed from only theeventanddatafields. You must exclude thesignaturefield itself when verifying.
Node.js helper
Example usage
Configuring Webhooks
- Log into the Kotani Pay dashboard.
- Navigate to Settings → Webhooks.
- Provide a publicly reachable HTTPS URL.
- Select the events you want to subscribe to.
- Copy or generate a signing secret and store it securely (e.g., an environment variable).
- Save your changes.