Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
What is gas sweeping and how it works in our terminal
Gas Sweeping is an essential part of how inabit automates the secure movement of funds across deposit addresses and wallets. Every widget created within the inabit Terminal collects user deposits to unique, on-chain addresses. To ensure these funds are accessible and manageable at scale, inabit uses sweeping mechanisms to transfer them into centralized organization wallets.
Gas Sweeping refers to this automated fund consolidation, and requires blockchain-native gas fees to execute transactions securely and efficiently.
When users deposit funds via a widget (e.g., USDT on Tron or Ethereum), the funds initially sit in a dedicated deposit address generated for that session. To make these funds usable for your organization, the Terminal automatically "sweeps" them into a central wallet.
Sweeping is triggered based on the widget's configuration:
Daily, Weekly, On-demand, or Never
Each sweep consumes gas fees (TRX for Tron, ETH for Ethereum, etc.)
To prevent failed or stuck transactions, inabit handles sweeping gas from a separate station wallet, not from the customer’s deposit address
Gas Separation: Gas for sweeping is drawn from your organization's gas station wallet, not from the deposit address, ensuring funds are always sweepable.
Fail-safe Logic: inabit’s infrastructure monitors sweep attempts and retries if gas is insufficient.
Fee Control: You can configure whether the gas cost is covered by you (the merchant) or passed on to the end user at the widget level.
On the Terminal Dashboard, you’ll find a section showing gas balances per blockchain:
Tron
Ethereum
BSC (Binance Smart Chain)
Polygon
These balances represent how much gas is available to support sweep transactions.
Keep your gas balances topped up to avoid failed sweeps.
Monitor the gas status from the dashboard.
Use the "Add Gas" feature (explained below) to easily fund your sweep stations.
Advanced settings of our POS widgets before creation
Enabled – The same deposit address will be used for each transaction.
Useful for recurring or identifiable customers.
Can be reused for new deposits without creating a new widget.
Set a time window (in minutes) for how long the widget will remain valid after being opened.
Example: 15 minutes
, 60 minutes
.
What should happen when the widget expires?
Fail the request – The transaction is invalidated.
Update the rate of the POS transaction – The widget remains usable, but the rate will refresh based on current market price.
Choose how many blockchain confirmations are required before the deposit is considered final.
You have two options:
1. Organization Default
These defaults vary by chain and can be edited in organization settings:
Tron (TRC20) – 19 confirmations
Ethereum (ERC20) – 12 confirmations
Polygon – 128 confirmations
Bitcoin – 3 confirmations
BSC – 15 confirmations
2. Custom
Customize confirmations per blockchain according to your preference, directly in this widget. This gives you more control and flexibility!
Enabled – The widget will accept any amount deposited, even if it doesn’t match the target amount.
Use this when the deposit can vary or when customer balance might be uncertain.
Learn about our gas funding & sweeping as part of the terminal's operations
inabit’s Terminal includes robust gas management features that ensure seamless blockchain operations at scale. From automating transaction costs to allowing easy refueling, the Gas Features in the Terminal give your organization full control and reliability over how blockchain-native gas is handled across your payment infrastructure.
Whenever a user makes a deposit through a widget, the funds are initially stored in a dedicated blockchain address. To centralize and secure these funds, inabit automatically sweeps them into your organization's main wallet using a process called Gas Sweeping.
This process requires gas fees (e.g., ETH, TRX, MATIC), which are not deducted from the user’s deposit. Instead, they are handled through your organization’s Gas Station Wallet, ensuring reliability and avoiding failed transactions.
Sweeping frequency is fully configurable:
Daily
Weekly
On-demand
Never (manual sweep only)
To support sweeping and other blockchain operations, inabit provides an easy way to top up gas balances directly from the Terminal.
You can refuel your Gas Station Wallet by:
Paying with a credit card (select chain, amount, and billing details)
Sending crypto to a dedicated funding address per blockchain
These funds are stored securely and used exclusively to cover gas fees for sweep operations — not user balances or purchases.
No need to rely on user deposits having spare gas
Automated fund consolidation keeps your assets secure and organized
Reduce operational risk with proactive refueling and monitoring
Works across multiple blockchains: Ethereum, Tron, Polygon, BSC, and more
Disabled – A new, unique deposit address is generated per session/transaction.
Partial deposits will still be marked successful and trigger webhook notifications if applicable.
➡️ Read more about
➡️ Read more about
Create inabit API wallets in your organization
The CreateApiWalletAddress mutation allows API admins to create a new inabit API wallet with a designated address for a given asset & blockchain.
Remember to authenticate to call our graphQL API using an access token (bearer) with your API Admin credentials. (If you're not sure how, refer to Authentication)
Don't have an API Admin user yet? contact us at support@inabit.com to create one!
blockchainId*
string
ID of the blockchain in inabit
financialAssetId*
string
ID of the financial asset in inabit (can be token/native)
organizationId*
string
ID of the organization in inabit
Example body:
In the mutation's response, you will receive the created api wallet ID including the associated blockchain address.
Create inabit API wallets in your organization
The CreateApiWalletAddress mutation allows API admins to create a new inabit API wallet with a designated address for a given asset & blockchain.
Remember to authenticate to call our graphQL API using an access token (bearer) with your API Admin credentials. (If you're not sure how, refer to Authentication)
Don't have an API Admin user yet? contact us at support@inabit.com to create one!
blockchainId*
string
ID of the blockchain in inabit
financialAssetId*
string
ID of the financial asset in inabit (can be token/native)
organizationId*
string
ID of the organization in inabit
Example body:
In the mutation's response, you will receive the created api wallet ID including the associated blockchain address.
Create inabit API wallets in your organization
The CreateApiWalletAddress mutation allows API admins to create a new inabit API wallet with a designated address for a given asset & blockchain.
Remember to authenticate to call our graphQL API using an access token (bearer) with your API Admin credentials. (If you're not sure how, refer to Authentication)
Don't have an API Admin user yet? contact us at support@inabit.com to create one!
blockchainId*
string
ID of the blockchain in inabit
financialAssetId*
string
ID of the financial asset in inabit (can be token/native)
organizationId*
string
ID of the organization in inabit
Example body:
In the mutation's response, you will receive the created api wallet ID including the associated blockchain address.
Creating clearing-ready POS widgets through our interface
POS Widgets in inabit’s Terminal are embeddable components that enable merchants to accept cryptocurrency payments directly from users. These widgets are highly customizable and connected to your organization’s internal wallet infrastructure, giving you full control over supported assets, payout behavior, fees, expiration rules, and more.
A POS (Point of Sale) Widget is a payment interface you can generate inside your Terminal to receive deposits from end users or customers in a specific cryptocurrency. You can configure it to:
Support specific assets (e.g., USDT on Tron or Ethereum)
Sweep funds to your wallets automatically
Apply expiration and confirmation logic
Choose who pays the fees (merchant or customer)
Embed it into your app, website, or customer flow
These widgets are ideal for:
Subscription billing
Pay-per-use tools
Partner platforms
In-app payments
From the Terminal dashboard:
A widget creation drawer will appear on the right side with the following fields:
1. Widget Name
A unique name to identify your widget (e.g., Basic Plan Payment).
Visible internally and optionally to users.
2. Description
A short explanation of what this widget is used for.
Optional but helps for internal tracking.
3. Merchant Name (Optional)
Name of the merchant displayed to the end user (if applicable).
4. Assets (Supported Assets)
Select which cryptocurrencies the widget will accept.
Example: USDT (TRC20), USDC (ERC20), ETH.
Dropdown field with multi-select options.
You can also search for a specific asset code you're looking for using the search bar.
This defines how and when collected funds will be transferred from the widget deposit addresses to your organization wallet.
Options:
Daily – Sweeps once per day to the configured wallet.
Weekly – Sweeps once per week.
Never – Funds remain in the widget wallet until manual transfer.
On-Demand – Funds are swept only when triggered via API or Terminal manually.
Choose based on your operational and liquidity needs.
Select the wallet address to which collected funds will be swept.
Dropdown field pulling from your organization's whitelisted wallet list.
Choose who pays the gas/processing fee when sweeping occurs:
Charge Merchant (Myself) – Your organization covers the sweep cost.
Charge Customer – Fees are deducted from the user's deposit amount.
Once all the fields are set:
Your new POS Widget will be added to the list and ready for use.
That's it! You can now embed it, monitor its activity, and manage its funds directly from the Terminal.
Click the blue “Add New Widget” button on the top right.
Refer to the page to learn more.
Click “Create Widget”
You can also click on the "Preview Widget" to review your changes live, the widget will then appear on your screen as an example to how it will be shown on your application/website:
Retrieve notifications through webhooks on transaction events and status changes
Receive notifications/alerts on every new transaction or transaction status change in any of your inabit organizations within your account, as well as fee updates for a transaction.
There are two endpoints you can use with our Webhooks:
Our webhook service is currently limited to 1 subscription per organization.
Events Handled:
New Transaction Event
Transaction Status Updates (Incl. txn fee updates)
Supported transaction types:
Received (Deposits)
Sent (Withdrawals)
In order to create a subscription on our GraphQL API, you'll need to call the following mutation:
Content-Type
application/json
Authorization
Bearer <token>
id*
string
ID of the organization in inabit
url*
string
URL for the webhook service to send notifications towards
Example body:
In the mutation's response, the following is retrieved:
ID - The ID of the subscription that was created.
Token - A unique token generated by inabit.
The token will be the identifying the webhook resource for the subscriber set as a header: 'authorization' : (i.e. - sub_c028ef8d-b8b9-49c0-b5a9-f7451884b834
)
Remember - You can always query data and fetch all of an organization's subscriptions in case its hard to keep track, see query below.
id*
string
ID of the organization in inabit
In order to delete a subscription, the following mutation needs to be used:
Content-Type
application/json
Authorization
Bearer <token>
id*
string
Subscription ID
Example body:
Retrieve notifications through webhooks on transaction events and status changes
Receive notifications/alerts on every new transaction or transaction status change in any of your inabit organizations within your account, as well as fee updates for a transaction.
There are two endpoints you can use with our Webhooks:
Our webhook service is currently limited to 1 subscription per organization.
Events Handled:
New Transaction Event
Transaction Status Updates (Incl. txn fee updates)
Supported transaction types:
Received (Deposits)
Sent (Withdrawals)
In order to create a subscription on our GraphQL API, you'll need to call the following mutation:
Content-Type
application/json
Authorization
Bearer <token>
id*
string
ID of the organization in inabit
url*
string
URL for the webhook service to send notifications towards
Example body:
In the mutation's response, the following is retrieved:
ID - The ID of the subscription that was created.
Token - A unique token generated by inabit.
The token will be the identifying the webhook resource for the subscriber set as a header: 'authorization' : (i.e. - sub_c028ef8d-b8b9-49c0-b5a9-f7451884b834
)
Remember - You can always query data and fetch all of an organization's subscriptions in case its hard to keep track, see query below.
id*
string
ID of the organization in inabit
In order to delete a subscription, the following mutation needs to be used:
Content-Type
application/json
Authorization
Bearer <token>
id*
string
Subscription ID
Example body:
- registering to the subscription service
- deleting an existing subscription
For further information regarding transaction types (events), refer to the subpage.
- registering to the subscription service
- deleting an existing subscription
For further information regarding transaction types (events), refer to the subpage.
Part of the Docker setup in order to automate signing transactions (approvals/rejections)
On a transaction creation in Inabit, Inabit will send a request to the Approver to handle the requested transaction approval, and sign on the approve/reject decision.
In order to handle transaction approvals:
Approver (API Signer) needs to be in Paired
status.
Configure an external validation url ('endpoint'), implementing the Approver's required approval logics:
The external validation endpoint is expected to expose a 'post' http endpoint for validation purpose.
**connectivity to the endpoint must be enabled.
The endpoint will automatically be passed a TransactionValidationData
json object at the body of the http 'post' call. with the following structure:
The endpoint is expected to return a response with the following structure:
In case of an exception a retry will be scheduled to execute in 3 minutes time, up to 10 times (10 * 3 minutes).
On receiving a validation url call response, a signed approval (using Approver's key) will be sent back automatically to Inabit, for further processing (policy enforcement).
It is also possible to mock external validation url using a predefined endpoint (transaction/validate) on the Approver, and control the required outcome. Using the following configuration
What is gas refueling and how it works in our terminal
Gas Refueling allows your organization to top up blockchain-native gas (e.g., ETH, TRX, MATIC) used for sweeping deposit funds from customer addresses into your central wallet.
This gas is stored in a dedicated "Station Wallet", separate from any user-facing deposit address — ensuring you maintain uninterrupted operations without worrying about gas availability on each incoming address.
You’ll need to refuel gas when:
You see gas balances running low on any supported chain
You anticipate high transaction volume requiring many sweep operations
You want to proactively ensure sweeping never fails due to gas shortages
On the main Terminal dashboard, locate the “Gas Balance” panel.
A popup will open with funding options.
This flow enables you to directly buy gas using fiat.
Steps:
Select Blockchain to fund (e.g., Ethereum, Tron).
Enter Company Name.
Select Country.
Enter your Credit Card Details.
Enter the Amount to purchase.
Confirm and complete the payment.
Once approved, gas will be instantly credited to the selected station wallet.
Prefer to move gas from an existing crypto wallet?
Steps:
Select the Blockchain you'd like to fund.
A dedicated deposit address will be generated along with a QR code.
Send the required gas (e.g., TRX, ETH) to the address shown.
The station wallet will be updated once the transaction is confirmed.
All gas refuels are automatically tracked and reflected in your dashboard.
There is no expiration for gas balances.
You can refuel at any time, and all balances are held in enterprise-grade custody infrastructure.
Uses
Covers sweeping transaction fees
Payment Options
Credit Card / Crypto Transfer
Chains Supported
Ethereum, Tron, BSC, Polygon
Where to Access
Terminal Dashboard → Gas Section
Best Practice
Keep balances above minimum recommended levels
Docker setup and configuration to simulate inabit approvals remotely on your server
This standalone project is designed to be deployed on a user's own server, enabling integration with inabit from remote.
Its primary purpose is to facilitate the approval of pending transactions within a gated approvals flow. This is essentially replacing an owner/approver's mobile approvals app, allowing users to control approvals on their server.
Upon running, the application must successfully initialize and communicate with Inabit. This involves several steps depending on the initiation state. If the 'signer' is approved, the handling of pending transaction flow may proceed.
During the first run, a pairing process is initiated. This includes:
Logging into Inabit using the provided login token.
Validating the user's current state.
Requesting a pairing token.
Producing an encrypted key used for signing, saving it to a mapped volume.
Sending pairing data to Inabit and requesting the 'Owner' to authorize the approver.
Refreshing the login token i.e. acquiring automatically a new valid login token.
For subsequent runs, after validating that the user is paired, the application continues its operation as usual.
If anything goes wrong during the initiation stage, the approver initiation process will be aborted.
An initial login token of a valid user within Inabit with the role: 'apiSigner'.
Enabled communication with the Inabit server (valid URL and whitelisted IPs and ports).
From within the root directory inabit/inabit-remote
:
The login token is approver's token valid for 30 days, allowing authentication with Inabit.
The token is automatically refreshed, i.e. switched to a new 30 days valid token, on:
each docker init.
every 15 days (configurable)
The refreshed login token is saved to a mapped volume on host machine.
The login token must be mapped to a selected location in the host filesystem for initialization and persistency.
Create a folder named refresh
.
Set into the folder the login token file r.dat
(which includes the login token).
Map the folder in the docker-compose.prod.yml
:
Add the following environment variables in correspondence:
The required config can be provided in 2 ways:
Baked into the docker by building the docker with a valid .env
file.
Through the docker-compose.prod.yml
file variables override section environment
.
In case using .env
is selected, remember to modify or remove the environment:
section, from docker-compose.prod.yml
. In case of a change of the .env
, a new docker image build must proceed.
The approvers' key must be mapped to a selected location in the host filesystem for persistency. This is the required combination of env variables:
In the Docker Compose file:
Ensure Correspondence
Ensure there is correspondence between the volume mapping and the selected KEY_FILE_PATH
settings. The volume mapping in the Docker Compose file should reflect the chosen KEY_FILE_PATH
for persisting the encrypted key:
On Docker init , it is first checked if the approver is in status Paired
or WaitingForApproval
.
If not, a pairing flow starts:
Within the flow interaction with Inabit,
a pairing data is exchanged with Inabit including the public signing key of the approver.
an approval message is sent to the owner of the organization.
a pairing code is produced in the approver start up log trace, and must be passed directly to the owner for pairing completion.
Explore which notifications you can receive from our subscriptions
Notifications from Inabit's webhook service provide real-time updates on transaction events and status changes, ensuring that you stay informed about crucial activities within your organization. Below are the different types of notifications you can expect to receive:
New Transaction Event:
Date and Time: Timestamp indicating when the transaction occurred.
Transaction Type: Whether it's a deposit (received) or a withdrawal (sent).
Transaction ID: Unique identifier for the transaction.
Transaction Status: Current status of the transaction.
Wallet ID: Identifier for the wallet associated with the transaction.
Wallet Name: Name of the wallet involved in the transaction.
Address Name: Name of the address involved in the transaction.
Coin/Asset Symbol: Symbol representing the cryptocurrency involved.
Blockchain: Name of the blockchain associated with the transaction.
Cryptocurrency Amount: Amount of cryptocurrency transacted.
Fee in Cryptocurrency: Transaction fee in cryptocurrency.
Fee (in Organization's Base Currency): Transaction fee converted to the organization's base currency.
Amount (in Organization's Base Currency): Transaction amount converted to the organization's base currency.
Transaction Hash: Unique hash identifying the transaction.
Source Address (From): Address from which the cryptocurrency was sent.
Destination Address (To): Address to which the cryptocurrency was sent.
Transaction Status Updates (Including Transaction Fee Updates):
Similar details as the new transaction event, with updates on the transaction status and associated fees + transaction hash (if completed).
These notifications empower you to track and manage transactions effectively, enabling timely decision-making and ensuring transparency and security within your crypto service.
This notification is received for every transaction status change.
Here are the possible changes you can receive notifications on:
Status changed to Processing:
Once you approve a transaction, its status should change to this.
Status changed to Broadcasting:
The transaction entered the mempool and is being broadcasted to the blockchain.
Status changed to Completed:
The transaction was completed in the blockchain.
In this notification you'll also receive additional data that includes:
The transaction fees breakdown.
The transaction's hash.
Status changed to Failed:
Transaction failures can occur in the blockchain during broadcasting process or before that, in the processing phase in case any issue occured. (For example - insufficient gas fees to broadcast the transaction)
Status changed to Rejected:
If the approver/s rejected the transaction in the mobile app, the status will be turned "Rejected".
Status changed to Expired:
Transactions have a 5 hour window to be approved/rejected.
In case the time limit was reached, the transaction is expired and its status changes to "Expired".
Status changes to Broadcasting:
Status changes to Completed:
Once you receive updates on completion of transactions (status changes to completed), the fees are also updated and are given in the notification data (no longer null
):
Notice the fees are given in both the crypto native currency (in the example above - ethereum) but also in the base currency, which is the base currency of the organization (EUR/USD).
fee
baseCurrencyFee
You will also receive the transactionHash
of the completed transaction in this notification.
Explore which notifications you can receive from our subscriptions
Notifications from Inabit's webhook service provide real-time updates on transaction events and status changes, ensuring that you stay informed about crucial activities within your organization. Below are the different types of notifications you can expect to receive:
New Transaction Event:
Date and Time: Timestamp indicating when the transaction occurred.
Transaction Type: Whether it's a deposit (received) or a withdrawal (sent).
Transaction ID: Unique identifier for the transaction.
Transaction Status: Current status of the transaction.
Wallet ID: Identifier for the wallet associated with the transaction.
Wallet Name: Name of the wallet involved in the transaction.
Address Name: Name of the address involved in the transaction.
Coin/Asset Symbol: Symbol representing the cryptocurrency involved.
Blockchain: Name of the blockchain associated with the transaction.
Cryptocurrency Amount: Amount of cryptocurrency transacted.
Fee in Cryptocurrency: Transaction fee in cryptocurrency.
Fee (in Organization's Base Currency): Transaction fee converted to the organization's base currency.
Amount (in Organization's Base Currency): Transaction amount converted to the organization's base currency.
Transaction Hash: Unique hash identifying the transaction.
Source Address (From): Address from which the cryptocurrency was sent.
Destination Address (To): Address to which the cryptocurrency was sent.
Transaction Status Updates (Including Transaction Fee Updates):
Similar details as the new transaction event, with updates on the transaction status and associated fees + transaction hash (if completed).
These notifications empower you to track and manage transactions effectively, enabling timely decision-making and ensuring transparency and security within your crypto service.
This notification is received for every transaction status change.
Here are the possible changes you can receive notifications on:
Status changed to Processing:
Once you approve a transaction, its status should change to this.
Status changed to Broadcasting:
The transaction entered the mempool and is being broadcasted to the blockchain.
Status changed to Completed:
The transaction was completed in the blockchain.
In this notification you'll also receive additional data that includes:
The transaction fees breakdown.
The transaction's hash.
Status changed to Failed:
Transaction failures can occur in the blockchain during broadcasting process or before that, in the processing phase in case any issue occured. (For example - insufficient gas fees to broadcast the transaction)
Status changed to Rejected:
If the approver/s rejected the transaction in the mobile app, the status will be turned "Rejected".
Status changed to Expired:
Transactions have a 5 hour window to be approved/rejected.
In case the time limit was reached, the transaction is expired and its status changes to "Expired".
Status changes to Broadcasting:
Status changes to Completed:
Once you receive updates on completion of transactions (status changes to completed), the fees are also updated and are given in the notification data (no longer null
):
Notice the fees are given in both the crypto native currency (in the example above - ethereum) but also in the base currency, which is the base currency of the organization (EUR/USD).
fee
baseCurrencyFee
You will also receive the transactionHash
of the completed transaction in this notification.
Docker setup and configuration to simulate inabit approvals remotely on your server
This standalone project is designed to be deployed on a user's own server, enabling integration with inabit from remote.
Its primary purpose is to facilitate the approval of pending transactions within a gated approvals flow. This is essentially replacing an owner/approver's mobile approvals app, allowing users to control approvals on their server.
Upon running, the application must successfully initialize and communicate with Inabit. This involves several steps depending on the initiation state. If the 'signer' is approved, the handling of pending transaction flow may proceed.
During the first run, a pairing process is initiated. This includes:
Logging into Inabit using the provided login token.
Validating the user's current state.
Requesting a pairing token.
Producing an encrypted key used for signing, saving it to a mapped volume.
Sending pairing data to Inabit and requesting the 'Owner' to authorize the approver.
Refreshing the login token i.e. acquiring automatically a new valid login token.
For subsequent runs, after validating that the user is paired, the application continues its operation as usual.
If anything goes wrong during the initiation stage, the approver initiation process will be aborted.
An initial login token of a valid user within Inabit with the role: 'apiSigner'.
Enabled communication with the Inabit server (valid URL and whitelisted IPs and ports).
From within the root directory inabit/inabit-remote
:
The login token is approver's token valid for 30 days, allowing authentication with Inabit.
The token is automatically refreshed, i.e. switched to a new 30 days valid token, on:
each docker init.
every 15 days (configurable)
The refreshed login token is saved to a mapped volume on host machine.
The login token must be mapped to a selected location in the host filesystem for initialization and persistency.
Create a folder named refresh
.
Set into the folder the login token file r.dat
(which includes the login token).
Map the folder in the docker-compose.prod.yml
:
Add the following environment variables in correspondence:
The required config can be provided in 2 ways:
Baked into the docker by building the docker with a valid .env
file.
Through the docker-compose.prod.yml
file variables override section environment
.
In case using .env
is selected, remember to modify or remove the environment:
section, from docker-compose.prod.yml
. In case of a change of the .env
, a new docker image build must proceed.
The approvers' key must be mapped to a selected location in the host filesystem for persistency. This is the required combination of env variables:
In the Docker Compose file:
Ensure Correspondence
Ensure there is correspondence between the volume mapping and the selected KEY_FILE_PATH
settings. The volume mapping in the Docker Compose file should reflect the chosen KEY_FILE_PATH
for persisting the encrypted key:
On Docker init , it is first checked if the approver is in status Paired
or WaitingForApproval
.
If not, a pairing flow starts:
Within the flow interaction with Inabit,
a pairing data is exchanged with Inabit including the public signing key of the approver.
an approval message is sent to the owner of the organization.
a pairing code is produced in the approver start up log trace, and must be passed directly to the owner for pairing completion.
Docker setup and configuration to simulate inabit approvals remotely on your server
This standalone project is designed to be deployed on a user's own server, enabling integration with inabit from remote.
Its primary purpose is to facilitate the approval of pending transactions within a gated approvals flow. This is essentially replacing an owner/approver's mobile approvals app, allowing users to control approvals on their server.
Upon running, the application must successfully initialize and communicate with Inabit. This involves several steps depending on the initiation state. If the 'signer' is approved, the handling of pending transaction flow may proceed.
During the first run, a pairing process is initiated. This includes:
Logging into Inabit using the provided login token.
Validating the user's current state.
Requesting a pairing token.
Producing an encrypted key used for signing, saving it to a mapped volume.
Sending pairing data to Inabit and requesting the 'Owner' to authorize the approver.
Refreshing the login token i.e. acquiring automatically a new valid login token.
For subsequent runs, after validating that the user is paired, the application continues its operation as usual.
If anything goes wrong during the initiation stage, the approver initiation process will be aborted.
An initial login token of a valid user within Inabit with the role: 'apiSigner'.
Enabled communication with the Inabit server (valid URL and whitelisted IPs and ports).
From within the root directory inabit/inabit-remote
:
The login token is approver's token valid for 30 days, allowing authentication with Inabit.
The token is automatically refreshed, i.e. switched to a new 30 days valid token, on:
each docker init.
every 15 days (configurable)
The refreshed login token is saved to a mapped volume on host machine.
The login token must be mapped to a selected location in the host filesystem for initialization and persistency.
Create a folder named refresh
.
Set into the folder the login token file r.dat
(which includes the login token).
Map the folder in the docker-compose.prod.yml
:
Add the following environment variables in correspondence:
The required config can be provided in 2 ways:
Baked into the docker by building the docker with a valid .env
file.
Through the docker-compose.prod.yml
file variables override section environment
.
In case using .env
is selected, remember to modify or remove the environment:
section, from docker-compose.prod.yml
. In case of a change of the .env
, a new docker image build must proceed.
The approvers' key must be mapped to a selected location in the host filesystem for persistency. This is the required combination of env variables:
In the Docker Compose file:
Ensure Correspondence
Ensure there is correspondence between the volume mapping and the selected KEY_FILE_PATH
settings. The volume mapping in the Docker Compose file should reflect the chosen KEY_FILE_PATH
for persisting the encrypted key:
On Docker init , it is first checked if the approver is in status Paired
or WaitingForApproval
.
If not, a pairing flow starts:
Within the flow interaction with Inabit,
a pairing data is exchanged with Inabit including the public signing key of the approver.
an approval message is sent to the owner of the organization.
a pairing code is produced in the approver start up log trace, and must be passed directly to the owner for pairing completion.
Docker setup and configuration to simulate inabit approvals remotely on your server
This standalone project is designed to be deployed on a user's own server, enabling integration with inabit from remote.
Its primary purpose is to facilitate the approval of pending transactions within a gated approvals flow. This is essentially replacing an owner/approver's mobile approvals app, allowing users to control approvals on their server.
Upon running, the application must successfully initialize and communicate with Inabit. This involves several steps depending on the initiation state. If the 'signer' is approved, the handling of pending transaction flow may proceed.
During the first run, a pairing process is initiated. This includes:
Logging into Inabit using the provided login token.
Validating the user's current state.
Requesting a pairing token.
Producing an encrypted key used for signing, saving it to a mapped volume.
Sending pairing data to Inabit and requesting the 'Owner' to authorize the approver.
Refreshing the login token i.e. acquiring automatically a new valid login token.
For subsequent runs, after validating that the user is paired, the application continues its operation as usual.
If anything goes wrong during the initiation stage, the approver initiation process will be aborted.
An initial login token of a valid user within Inabit with the role: 'apiSigner'.
Enabled communication with the Inabit server (valid URL and whitelisted IPs and ports).
From within the root directory inabit/inabit-remote
:
The login token is approver's token valid for 30 days, allowing authentication with Inabit.
The token is automatically refreshed, i.e. switched to a new 30 days valid token, on:
each docker init.
every 15 days (configurable)
The refreshed login token is saved to a mapped volume on host machine.
The login token must be mapped to a selected location in the host filesystem for initialization and persistency.
Create a folder named refresh
.
Set into the folder the login token file r.dat
(which includes the login token).
Map the folder in the docker-compose.prod.yml
:
Add the following environment variables in correspondence:
The required config can be provided in 2 ways:
Baked into the docker by building the docker with a valid .env
file.
Through the docker-compose.prod.yml
file variables override section environment
.
In case using .env
is selected, remember to modify or remove the environment:
section, from docker-compose.prod.yml
. In case of a change of the .env
, a new docker image build must proceed.
The approvers' key must be mapped to a selected location in the host filesystem for persistency. This is the required combination of env variables:
In the Docker Compose file:
Ensure Correspondence
Ensure there is correspondence between the volume mapping and the selected KEY_FILE_PATH
settings. The volume mapping in the Docker Compose file should reflect the chosen KEY_FILE_PATH
for persisting the encrypted key:
On Docker init , it is first checked if the approver is in status Paired
or WaitingForApproval
.
If not, a pairing flow starts:
Within the flow interaction with Inabit,
a pairing data is exchanged with Inabit including the public signing key of the approver.
an approval message is sent to the owner of the organization.
a pairing code is produced in the approver start up log trace, and must be passed directly to the owner for pairing completion.
Read our documentation and get up to speed on how to access our API capabilities.
The inabit Terminal is your command center for managing digital assets, processing payments, and automating Web3 operations — all in one secure, intuitive interface.
Whether you're embedding crypto widgets into your platform, automating fund flows, or fueling cross-chain transactions, this documentation will guide you through everything you need to know to get started and scale confidently.
The Terminal is a powerful platform designed for crypto-native teams, fintechs, and enterprises to manage wallets, payments, and infrastructure effortlessly.
With the Terminal, you can:
Create embeddable crypto payment widgets
Automate gas and sweeping operations
Process crypto-to-fiat purchases
Manage your organization’s wallets, transactions, and webhooks
Maintain full control while relying on secure, compliant infrastructure
This documentation is organized into two main sections:
Step-by-step guidance for using the inabit Terminal through the web interface.
Everything you need to integrate Terminal features into your backend systems.
In this section you'll find all of the prerequisites & configuration that must be done before creating widgets in order to fully automate the terminal's clearing process. This is a must-have step.
Click the small “Add Gas” icon on the top right of the gas section.
Refer to the next page to understand how to using our docker!
Remember, you can through Inabit's GraphQL API, and manage your subscriptions conveniently to tailor notifications to your specific needs.
Remember, you can through Inabit's GraphQL API, and manage your subscriptions conveniently to tailor notifications to your specific needs.
Refer to the next page to understand how to using our docker!
Refer to the next page to understand how to using our docker!
Refer to the next page to understand how to using our docker!
Set up powerful POS-style payment widgets to collect crypto directly from your users.
Learn how gas sweeping and refueling work to keep your operation smooth.
Convert crypto to fiat seamlessly using trusted payment partners.
– Programmatically create and manage payment widgets
– Initiate and track crypto-fiat transactions
– View transaction history and details
– Manage metadata, settings, and defaults
– Get notified in real-time when key events occur
- Build a docker with the remote approver application in it for your API signer.
- This process is for signing transactions through the docker using the signer automatically.
Start by exploring the or jump into the to start building. For support or business inquiries, contact us at support@inabit.com
Which blockchains & protocols inabit currently supports
inabit supports major blockchain protocols (mainnet) and nearly limitless digital assets in its system. This page gives an overview of all of the blockchains we support.
Not all blockchains function identically, so we support different features depending on the technical constraints of each blockchain. In the table below, you can compare which broad feature sets are supported on which blockchains.
The list below is relevant only for inabit native wallets.
If you connected an exchange, all of its blockchains and assets are automatically supported in inabit.
Which assets & tokens inabit currently supports
inabit supports multiple assets
It is important to note that all assets and tokens within standards we support such as ERC-20 (or equivalent, e.g. BEP-20 or TRC-20) are supported by our wallets.
The table below provides the native assets (Blockchain assets) that we supports (that aren't tokens).
Table Columns:
Financial Asset - the name of the digital asset
Blockchain Code - the blockchain on which the asset exists
Bitcoin
✓ (Acceleration using CPFP)
Ethereum
✓ (ERC-20 + ERC-1155)
Binance Smart Chain
✓
Polygon
✓
Solana
✓
Tron
✓ (TRC-20 + TRC-10)
XRP (Ripple)
✓
Bitcoin Cash
Coming soon
Litecoin
Coming soon
As for tokens, inabit will support all tokens within the blockchains and standards that it currently supports. See supported blockchains list .
BTC
bitcoin
ETH
ethereum
TRX
tron
BNB
binance-smart-chain
SOL
solana
XRP
XRP
MATIC
polygon