WebsiteLog In

Webhook Notifications

Finmo uses webhooks to notify your application any time an events happens on your account. You can set up static webhook via the Dashboard. If you do not wish to use the static webhook you can also provide us with a dynamic webhook_url in most of the API that trigger a webhook.

NOTE: Finmo sends the webhook via HTTPS POST so you must provide a HTTPS url. If you do not provide a HTTPS url, Finmo will replace it with https before sending. If it does not find, it returns an error. For HTTPS you need to get a SSL certificate. You can use a tool like ngrok to make your endpoint available for receiving webhooks during testing.


Webhook Retry Logic

Finmo attempts to deliver your webhook six times with exponential backoff between each interval and will stop retrying until we have received response from your server or there is still no response yet. At any point in time, you can still retrigger the webhook manually.

Interval (Relative to first point of failure)Retry Number
15min1
1hr2
3hr3
6hr4
12hr5
24hr6

Webhook Security

Keeping your endpoints secure is critical to protecting your customers' information. Our platform provide few simplistic options to verify events are actually coming from Finmo in a secure manner.

Webhook Custom Header: Finmo can optionally sign the webhook notifications it sends to your endpoints. We do so by including a token in each event's x-security-token header. This allows you to verify that the events were sent by Finmo, not by a third party. You can define your custom header in the dashboard.

IP white-listing: You can white-list Finmo's IP address from where the webhook is originated. Please reach out to our Support team for the IP address.


Webhook Events

We have few built-in events on which the webhooks get triggered.

Refer to the table below for the various EVENT_TYPE and their EVENT_NAME supported on the platform today.

EVENT_TYPEEVENT_NAMEDESCRIPTION
CHECKOUTCHECKOUT_CREATEDCheckout page got generated successfully
CHECKOUT_COMPLETEDLikely that the Payment was made and checkout successfully returned the user to the return urls provided.
Always refer to PAYIN_COMPLETED if the payment was received by Finmo.
CHECKOUT_AWAITING_FUNDSPayment for the checkout has likely been made by user, but Finmo is still awaiting funds from its partner bank.
CHECKOUT_CANCELLEDCheckout session was cancelled by the user
CHECKOUT_EXPIREDCheckout page got expired
PAYINPAYIN_CREATEDPayment request was successful. You can create using a Hosted Checkout or a Direct API call. The status of the payment will be pending
PAYIN_COMPLETEDPayment was made by the user.
Funds got credited to one of the Finmo's bank account or it's network partners'. All your settlements are based on this
PAYIN_AWAITING_FUNDSPayment has likely been made, but Finmo is still awaiting funds from its partner bank.
PAYIN_CANCELLEDPayment was cancelled by the user. Typically follows after Checkout was cancelled
PAYIN_EXPIREDPayment instructions got expired
FEES_PAYMENTAny payment made to Fee wallet against an invoice raised by Finmo
TOPUPAny funds loaded to Payin (typically for refunds) or Payout wallet
VA_PAYIN_COMPLETEDFunds received on a static virtual account
REFUNDREFUND_CREATEDRefund request was created
REFUND_COMPLETEDRefund request was completed successfully
REFUND_FAILEDRefund request failed
CUSTOMERCUSTOMER_CREATEDCustomer object created successfully
CUSTOMER_UPDATEDCustomer object was updated. Typically when you update the details such as Address etc
CUSTOMER_DISABLEDCustomer status object was temporary marked as Disabled
CUSTOMER_ENABLEDCustomer status object is updated back to Active
CUSTOMER_DELETEDCustomer object is soft deleted on the platform
WALLETWALLET_CREATEDWallet object created successfully
VIRTUAL_ACCOUNTVIRTUAL_ACCOUNT_CREATEDVirtual Account was issued to a customer
VIRTUAL_ACCOUNT_DELETEDVirtual Account was deleted for a customer
PAYOUTPAYOUT_CREATEDPayout request was successful
PAYOUT_COMPLETEDPayout was processed from Finmo's end successfully. This is not an indicator of beneficiary in receipt of funds
PAYOUT_FAILEDPayout request failed
PAYOUT_RETURNEDPayout got completed earlier but the funds were returned due to some reason by the beneficiary's bank
WALLET_FUND_TRANSFERWALLET_FUND_TRANSFERWallet fund transfer completed

Webhooks have a two-layer structure:

The outer layer, or wrapper layer, containing basic information about the webhook.
The event_detail object inside the body object, containing the specific information generated by the trigger event.

Body Parameters

ParameterTypeDescription
webhook_notification_idstringWebhook ID
org_idstringYour Finmo organization id
event_idstringUnique id of the event
event_typestringType of the event for which the webhook has been created
event_namestringName of the event for which the webhook has been created
event_descriptionstringDescription of the event for which the webhook has been created
webhook_urlstringURL where the webhook was sent
event_detailJSONDetail about the corresponding event type
created_atdateUTC date (YYYY-MM-DD).
updated_atdateUTC date (YYYY-MM-DD).
http_responseJSONResponse that is received from client while sending webhook notification.
attempt_countNumberNumber of attempts made to send webhook notification.
headersJSONHeaders that are sent along with webhook notifications.

Example Webhooks

Checkout

Payin

Refund

Customer

Wallet

Virtual Account

Payout

Wallet Fund transfer