Skip to main content
Webhooks are optional but recommended for tracking transaction status in real-time.

Overview

Webhooks allow you to receive automatic notifications when order events occur. Configure them in your Rampnow Partner Dashboard to stay updated on transaction statuses without polling.

Configuration Steps

1

Access API Hub

Navigate to the API Hub in your Rampnow Partner Dashboard.
2

Add Webhook URL

Enter your server endpoint URL that will receive webhook notifications.
Ensure you have a dedicated API endpoint set up on your server to handle incoming webhook events.
3

Select Event Types

Choose which events to receive:
  • All events - Get notified of every status change
  • Specific events - Select only the events you need

Order Events

Each event carries an eventType and the current orderStatus in its payload. Ramp-order events use the ramp_order.status_change type. The concrete status is always in the orderStatus field of the payload — not in the event name.

Order status semantics

The concrete status is in payload.orderStatus. The Webhook column shows which statuses are pushed to your endpoint — the rest are observable only by polling GET /ext/ramp_order/{uid}.
failed is not final. Do not close or refund on your side when you receive failed — Rampnow retries and re-settles. Wait for completed, or poll the order.
Every terminal state now emits a webhook — including expired, canceled and blocked — so you no longer need to poll to observe a terminal failure. completed is immutable once reached.

Implementation Example

Here’s a simple Flask server that receives webhook notifications:
Always return a 200 OK response to acknowledge receipt of the webhook.

Signature Verification

Every webhook is signed so you can verify it originated from Rampnow. Reject any request whose signature does not match. Algorithm: HMAC-SHA256, hex-encoded. Signing secret: your API secret — the same secret you use to sign outbound API calls (from the API Hub in the Partner Dashboard). There is no separate webhook secret. Signed message — the concatenation, in this exact order:
  • timestamp — the value of the X-RAMPNOW-TIMESTAMP header.
  • path — the path (and query string, if any) of the webhook URL you registered, e.g. /rampnow/webhook.
  • rawBody — the exact raw request body bytes, verified before any JSON re-serialization.
Capture the raw request body for verification. Frameworks that parse and re-serialize JSON can reorder keys or change whitespace, which changes the bytes and breaks the signature.

Webhook Payload Schema

The webhook payload for On/Off Ramp Orders is shown below.

Field Descriptions

Best Practices

  • Use HTTPS endpoints only
  • Always verify the X-RAMPNOW-SIGN signature (see Signature Verification) and reject requests that fail
  • Implement rate limiting on your endpoint
  • Log all incoming webhooks for debugging
  • Return 200 OK quickly (process async if needed)
  • Implement idempotency using orderUid
  • Handle duplicate webhook deliveries gracefully
  • Set up monitoring and alerts for failures
  • Always respond with status codes
  • Implement retry logic on your side if needed
  • Store failed webhooks for manual review
  • Contact support if webhooks stop arriving

Testing Your Webhook

1

Set Up Local Endpoint

Run your webhook server locally on the specified port.
2

Use Tunneling Tool

Use tools like ngrok to expose your local server:
3

Add Tunnel URL

Copy the ngrok URL and add it to your Rampnow dashboard.
4

Create Test Order

Create a test order and verify your endpoint receives the webhook.

Need Help?

If you encounter issues with webhook delivery or have questions about the payload structure, contact us at [email protected].