What is Webhook Setup?
Setting up a webhook tells Revolv3 where to send event notifications. Once configured, Revolv3 will automatically send HTTP POST requests to your server when events occur (like payments completing, invoices changing status, etc.). Why you need this:- Real-time updates: Get notified immediately when events happen
- Essential for ACH: ACH payments take days—webhooks tell you when they complete
- Better user experience: Update your UI instantly
- Efficient: No need to constantly poll the API
Prerequisites
Before creating a webhook, you need:- Public endpoint: Your webhook URL must be publicly accessible (not localhost)
- HTTPS: Use HTTPS for security (webhooks contain sensitive data)
- Endpoint ready: Your server should be able to receive POST requests
- Revolv3 account: Access to the Revolv3 portal
Step 1: Prepare Your Webhook Endpoint
Before configuring in Revolv3, make sure your endpoint is ready to receive webhooks.Your Endpoint Should:
- Accept HTTP POST requests
- Return 200 OK quickly (process asynchronously if needed)
- Be publicly accessible (not behind a firewall or localhost)
- Use HTTPS (required for security)
- Handle the webhook payload (JSON with Body and Entropy fields)
Example Endpoint (Node.js/Express)
Step 2: Create Webhook in Revolv3 Portal
- Log in to the Revolv3 Portal:
- Production: portal.revolv3.com
- Sandbox: portal-sandbox.revolv3.com
- Navigate to Webhooks:
- Go to the Webhooks page in the portal
- Create a new webhook:
- Click the button to create a new webhook
- Configure the webhook:
- URL: Enter your webhook endpoint URL (must be HTTPS and publicly accessible)
- Webhook Type: Select “Object” (the “Event” type is deprecated)

- Copy your Webhook Key:
- After creating the webhook, you’ll see a Webhook Key
- Copy this immediately—you’ll need it to verify signatures
- Store it securely (like your API keys)
Step 3: Test Your Connection
Before saving, test that Revolv3 can reach your endpoint:- Click “Test Connection” in the portal
- Revolv3 sends a test webhook to your endpoint
- Your endpoint should return 200 OK
- If successful: The “Save” button will be enabled
- If failed: Check your endpoint, make sure it’s accessible and returns 200 OK
WebhookTest event to verify your endpoint is reachable and responds correctly.
Step 4: Save Your Configuration
Once the test connection succeeds:- Click “Save” to save your webhook configuration
- Your webhook is now active and will receive events
- Monitor your endpoint to ensure webhooks are being received
Understanding Webhook Security: Signature Verification
Revolv3 includes a signature in each webhook request so you can verify it came from Revolv3.The x-revolv3-signature Header
Each webhook request includes anx-revolv3-signature header containing a hashed signature of the payload.
Why it matters: This signature proves the webhook came from Revolv3 and wasn’t tampered with.
How to Verify Signatures
Revolv3 uses HMAC-SHA256 to generate the signature:- Concatenate:
{your-webhook-url}${request-body}- Note the
$delimiter between URL and body
- Note the
- Create HMAC: Use HMAC-SHA256 with your webhook key
- Encode: Base64 encode the result
- Compare: This should match the
x-revolv3-signatureheader
Verification Code Examples
C# Example
PHP Example
JavaScript/Node.js Example
Important Notes
Webhook Type: Use “Object”
- Use “Object” type: This is the current format
- Don’t use “Event” type: It’s deprecated and will be removed
URL Requirements
- Must be HTTPS: Webhooks require secure connections
- Must be publicly accessible: Can’t use localhost or private IPs
- Must return 200 OK: Your endpoint should respond quickly with 200 status
Webhook Key Security
- Store securely: Treat webhook keys like API keys
- Never expose: Don’t commit to version control
- Use environment variables: Store in secrets manager
Testing Your Webhook
Test Connection Button
The “Test Connection” button in the portal:- Sends a
WebhookTestevent to your endpoint - Waits for a 200 OK response
- Enables the Save button if successful
Manual Testing
You can also test manually by:- Making a test payment in sandbox
- Checking if your endpoint receives the webhook
- Verifying the signature is correct
- Ensuring you process the event correctly
Troubleshooting
Test Connection Fails
Possible issues:- Endpoint not publicly accessible (localhost won’t work)
- Endpoint not returning 200 OK
- Firewall blocking Revolv3’s requests
- Incorrect URL format
- Use a service like ngrok for local testing
- Ensure your endpoint responds with 200 OK
- Check server logs for incoming requests
- Verify the URL is correct and uses HTTPS
Webhooks Not Received After Setup
Check:- Is your endpoint publicly accessible?
- Is it returning 200 OK?
- Are you checking the correct URL?
- Check Revolv3 portal for webhook delivery status
Signature Verification Fails
Check:- Are you using the correct webhook key?
- Is the URL exactly as configured (including https://)?
- Are you concatenating URL + ”$” + body correctly?
- Are you using HMAC-SHA256 and Base64 encoding?
Best Practices
- Always verify signatures: Never process webhooks without signature verification
- Respond quickly: Return 200 OK immediately, process asynchronously
- Handle duplicates: Make your handler idempotent
- Log everything: Log all webhooks for debugging and auditing
- Test thoroughly: Test in sandbox before production
- Monitor delivery: Check webhook delivery status in the portal
Next Steps
- Webhook Guide — Learn about webhook events and how to handle them
- Invoice Status — Understand statuses you’ll receive in webhooks
- Subscriptions — Learn about subscription webhook events

