Skip to main content
Webhooks allow you to receive real-time notifications when events occur in your Rinne account. Instead of polling the API, Rinne sends HTTP POST requests to your server when important events happen.

Webhook events

Rinne sends webhooks for the following events:

Transaction events

  • transaction.created: New transaction created
  • transaction.status-changed: Transaction status updated

Affiliation events

  • affiliation.created: New affiliation created
  • affiliation.status-changed: Affiliation status updated

Company events

  • company.created: New company created
  • company.status-changed: Company status updated

KYC events

  • kyc.completed: KYC check finished for a merchant company

Banking events

  • cashout.created: New cashout request created
  • cashout.status-changed: Cashout status updated
  • internal-transfer.created: New internal transfer created
  • internal-transfer.status-changed: Internal transfer status updated

Ledger entry events

  • ledger-entry.settled: Ledger entry settled

Webhook payload structure

All webhooks follow a consistent structure:

Common fields

  • id: Unique event identifier
  • type: Event type (e.g., transaction.status-changed)
  • version: Event schema version
  • timestamp: When the event occurred (ISO 8601)
  • source: Service that generated the event
  • company_id: Company associated with the event
  • correlation_id: ID for tracking related events
  • payload: Event-specific data

Setting up webhooks

Contact Rinne support to configure your webhook endpoint URL. We’ll create a webhook configuration for your organization.

Webhook endpoint requirements

Your endpoint must:
  • Accept POST requests
  • Respond with 2xx status code within 5 seconds
  • Use HTTPS (required for production)
  • Handle duplicate events (idempotency)

Webhook security

Rinne uses Svix for webhook delivery, which provides:
  • Request signing for verification
  • Automatic retries with exponential backoff
  • Webhook dashboard for monitoring
  • Replay functionality for testing

Verifying webhook signatures

Verify that webhooks are from Rinne by checking the signature:

Handling webhook events

Transaction status changed

Refund failure handling

When a refund fails, you’ll receive a transaction.status-changed webhook where:
  • old_status is PENDING_REFUND
  • new_status is APPROVED (if no other refunds exist) or remains PENDING_REFUND (if other refunds are still processing)
This allows you to handle refund failures appropriately in your system and notify customers when a refund could not be processed.

Affiliation status changed

The provider_status_message field contains additional context from the payment provider when available, including possible error messages.

Cashout created

Cashout status changed

KYC completed

See KYC Verification for rule names, statuses, and the full payload.

Internal transfer status changed

Webhook dashboard

Access your webhook dashboard to:
  • View webhook delivery history
  • Replay failed webhooks
  • Test webhook endpoints
  • Monitor delivery success rates
Get your dashboard URL:

Retry behavior

If your endpoint returns an error or times out, Rinne automatically retries:
  • Immediate retry
  • After 5 seconds
  • After 5 minutes
  • After 30 minutes
  • After 2 hours
  • After 5 hours
  • After 10 hours
  • After 24 hours
After all retries fail, the webhook is marked as failed in your dashboard.

Best practices

Return a 200 status code immediately, then process the webhook asynchronously. Don’t perform long-running operations in the webhook handler.
Use the event id to track processed events and ignore duplicates. Webhooks may be delivered more than once.
Always verify webhook signatures to ensure requests are from Rinne.
Use correlation_id to track related events across different webhook types.
Regularly check your webhook dashboard for failed deliveries and fix issues promptly.

Testing webhooks

Local testing with ngrok

Use ngrok to expose your local server for webhook testing:
Provide the ngrok URL to Rinne support for webhook configuration.

Webhook replay

Use the webhook dashboard to replay events to your endpoint for testing.

Example webhook handler

Next steps

API Reference

Explore all webhook event schemas

Error Handling

Handle errors and edge cases