Skip to main content
Finup can send server-to-server webhook events to your HTTPS endpoint after account activity changes. Subscribe once per account, get the signing secret from the subscription details endpoint, and verify every delivery with the x-webhook-signature header.
Webhook subscription endpoints use API key authentication. Send your API key in the x-api-key header.

Subscribe

Create a subscription with the URL that should receive webhook events.
The response contains the created subscription record.
Use GET /webhooks/webhooks after creation as the source for the usable plaintext signing secret. Do not use the create or update response as the source of truth for signature verification. Only one subscription is allowed per account. Creating a second subscription returns 404 with Account Already subscribed.

Manage a subscription

Get the current subscription and plaintext signing secret:
Store secret server-side. Use it to verify the x-webhook-signature header on every delivery. Update the destination URL or pause delivery:
Use status: "disabled" to pause delivery. Disabled subscriptions do not receive new webhook events. When a subscription already exists, a successful update returns:
There is no delete endpoint and no separate secret rotation endpoint. If you need a new secret, contact support.

Delivery format

Finup sends a POST request to your subscription URL.
The signature is HMAC-SHA256(JSON.stringify(body), secret) encoded as lowercase hex. Verify against the exact JSON body Finup sent.
Return any 2xx response when your system has accepted the event. Finup stores your response body and status code in delivery history.

Retries

Finup sends the first attempt immediately. If your endpoint returns a non-2xx response or the request fails, the event remains pending and is retried. After the final retry fails, the delivery status becomes fail. A successful retry changes the delivery status to success. Your endpoint should be idempotent. Finup may deliver the same event more than once when a previous attempt failed or timed out.

Delivery history

Use delivery history to inspect sent events, retry status, response bodies, and response status codes.
Each history item includes: Example response:

Event types

Every event has a webhook_type field. Use it to route the payload. Backend currently emits CardUpdate. The Webhooks microservice also uses the same account subscription for Transaction, Deposit, Otp, and OtpWallet.

CardUpdate

Sent when the Backend service updates card status data.

Transaction

Sent when a card transaction is created or updated.

Deposit

Sent when a crypto or invoice deposit is approved.

Otp

Sent when a payment OTP is created for a card.

OtpWallet

Sent when an Apple Pay or Google Pay wallet OTP is created for a card.