Finmo - AUD Deposits & Withdrawals
The Finmo plugin automates Australian dollar (AUD) deposits and withdrawals through your Finmo account. Each verified user gets their own deposit account (a PayID and a BSB and account number). Money paid into it is credited to the user's AUD balance automatically, and withdrawals are paid out to the user's own verified Australian bank account.
What you need
- The Enterprise plan on HollaEx Cloud.
- A Finmo account with a secret key, an access key and a webhook key (the key Finmo sends with each notification).
- AUD listed as an asset on your exchange.
- The Bank plugin, so users can add an Australian bank account and you can verify it. Finmo pays withdrawals only to a verified account that has an account name, account number and BSB number stored by the Bank plugin. HollaEx sets the Bank plugin up on request: see Bank.
- Identity verification (KYC) on your exchange. A user must be verified, with a full name on their profile, before a deposit account is created for them.
Set it up
-
Open a ticket to have the Bank plugin added, with Account name, Account number and BSB number required.
-
Get your secret key, access key and webhook key from Finmo.
-
Install finmo from Operator Controls → Exchange → Plugins.
-
Open the plugin, enter the settings below and save.
-
In Finmo, set the notification (webhook) address to this, with your exchange's API domain in place of
<your-api-domain>:https://<your-api-domain>/plugins/finmo/notificationSee Base URLs to find your API domain.
-
Set the fees and limits for each user tier. The plugin creates these settings for every tier the first time it starts.
-
Test with a verified user: create their deposit account, send a small deposit, then withdraw a small amount to a verified bank account.
| Setting | What it does |
|---|---|
| secretKey | Secret, from Finmo. Your Finmo API secret key. Required. |
| accessKey | Secret, from Finmo. Your Finmo API access key. Required. |
| webhookKey | Secret, from Finmo. The key Finmo sends with each notification. Notifications without it are rejected. Required. |
| payId | Optional. Your exchange's own PayID for receiving deposits. |
| bankAccountName | Optional. The name of your exchange's receiving account. It's shown to users on the deposit page. |
| bankAccountBsb | Optional. The BSB of your exchange's receiving account. |
| bankAccountNumber | Optional. The account number of your exchange's receiving account. |
| depositFee1, depositFee2, … | The deposit fee in AUD for users on each tier. Default 0. |
| withdrawalFee1, withdrawalFee2, … | The withdrawal fee in AUD for users on each tier. Starts at the AUD asset's withdrawal fee. |
| depositLimit1, depositLimit2, … | The 24-hour deposit limit in AUD for each tier. 0 means no limit. -1 means every deposit is held for review. Default 0. |
| withdrawalLimit1, withdrawalLimit2, … | The 24-hour withdrawal limit in AUD for each tier. 0 means no limit. -1 turns withdrawals off for that tier. Default 0. |
What your users see
The AUD Deposit and Withdraw pages in the user's wallet use Finmo.
- Deposit: a user who hasn't completed verification is asked to do so first. A verified user generates their own deposit account once, and then sees its PayID, BSB and account number. They send AUD from their bank to those details, and the deposit is credited automatically.
- Withdraw: the user picks one of their verified bank accounts and an amount, and confirms with their 2FA code if they've turned 2FA on. They can withdraw by bank transfer, or by PayID (Osko) if their bank account has a PayID stored.
How it works
Deposits
- The plugin accepts a notification only if it carries your webhook key.
- It then looks the payment up with Finmo and credits it only if Finmo's record shows the same amount, in AUD, paid in full.
- Each payment is credited once. A payment that's already recorded is refused.
- The deposit fee for the user's tier is taken from the amount.
- Deposits held for review: a deposit that takes the user over their tier's 24-hour limit (or any deposit, if the limit is
-1) is created as a pending deposit for you to review, instead of being credited.
Withdrawals
- The plugin checks the user's 2FA code (if they've turned it on), that the bank account is theirs and verified, that their balance covers the amount plus the fee, and their tier's 24-hour limit.
- It takes the amount plus the fee from the user's balance as a pending withdrawal.
- It asks Finmo to pay the user's bank account.
- If Finmo accepts, the withdrawal is completed. If Finmo refuses, or can't be reached, the withdrawal is cancelled and the funds go back to the user's balance.
A withdrawal is cancelled when the plugin gets no clear answer from Finmo, for example after a timeout. In rare cases Finmo may still have sent the money. If a cancelled AUD withdrawal shows as paid in your Finmo dashboard, the user has been refunded and paid. Reconcile your Finmo payouts against your exchange's AUD withdrawals regularly.
Troubleshooting
- "Finmo plugin currently not available": the secret key or access key isn't set.
- "User has not done the KYC verification yet" or "User is not verified and does not yet have a name": the user must complete identity verification, with a full name on their profile, before they can get a deposit account.
- "Verified bank with given id not found": the user's bank account isn't approved yet, or is missing the account name, account number or BSB. For PayID withdrawals, it also needs a PayID.
- A deposit is pending: it went over the user's 24-hour deposit limit. Review it and approve or reject it.
- A deposit wasn't credited at all: a deposit that isn't larger than the deposit fee, doesn't match Finmo's record or has already been recorded is refused. Check the payment in your Finmo dashboard. Open a ticket if you need help finding out why.
Need help? Open a ticket from your HollaEx dashboard.