Refund Flows
Learn about the Terminal's recommended refund flow as part of the integration.
This document provides best practices and clear guidelines for merchants using Inabit Terminal to manage the refund process. It explains how to structure refunds in a self-custody environment, ensuring compliance, transparency, and operational efficiency. Merchants remain in full control of their funds while following standardized steps to reduce risk and improve customer trust.
1. Core Principles
Self-Custody by Default: Merchants maintain full control of assets via API wallets; Inabit does not take custody, but provides orchestration (refund logic, rebalancing, swaps).
Separation of Flows: Refunds are logically separated from deposits to avoid operational confusion and improve auditability.
Security First: Every refund requires strict address verification and transaction simulation before execution.
Predictability: Fees and balances must always be simulated and validated prior to committing a refund transaction.
2. Standard Refund Workflow
Step 1 – Refund Request
The End-Customer requests a refund through the Merchant’s platform.
The request includes: end-customer wallet address, amount, and asset.
Step 2 – Address Verification
Merchant verifies the provided address:
Confirm valid blockchain format:
query IsValidAddress($where: WalletAddressValidateWhereInput!) {
isValidAddress(where: $where)
}Variables (Body):
{
"where": {
"address": "0x..."
"blockchainId": "clefn7d3k04ellc6rb2sdbowp",
"financialAssetId": "clefn78hd013rlc6rmjqa0k9t"
}
}
Step 3 – Refund Logic & Fee Simulation
Merchant platform simulates the refund:
Check fee cost vs. refund amount.
query ValidateTransactionFee($where: ValidateTransactionFeeInput!) {
validateTransactionFee(where: $where) {
isValid
priorities {
noPriority
verySlow
slow
medium
fast
veryFast
}
}
}Variables (Body):
{
"where": {
"amount": 0,
"organization:" {
"id": "currencyOrgId"
},
"wallet": {
"id": "clvxlyl7k00008o013v2q879r"
},
"financialAsset": {
"id": "clvxlyl7k00008o013v2q879r"
},
"blockchain": {
"id": "clvxlyl7k00008o013v2q879r"
}
}
} Apply refund logic (min amount, full refund, partial refund).
Step 4 – Balance Validation
If refund wallet (API wallet) has sufficient balance → create withdrawal request directly.
If insufficient balance → trigger one of two:
Master Wallet Refill – request funds from Inabit Master Wallet.
Swap – convert another asset into the required refund asset.
Step 5 – Withdrawal Execution
Refund API wallet executes withdrawal to the End-Customer’s wallet.
Transaction details logged for audit.

3. Best Practices for Merchants
A. Address Handling
Always verify the refund address before submission.
Maintain KYT/AML screening at refund step (not just deposit step).
Encourage refunds to original funding address unless policy explicitly allows otherwise.
B. Balances & Liquidity
Maintain a daily rebalancing schedule between Master Wallet and Refund API Wallet to ensure refund capacity.
Monitor minimum thresholds (e.g., ensure refund wallet has ≥ X daily refund volume).
Use Inabit’s swap service only when master wallet transfer cannot fulfill the request quickly.
C. Fees & Costs
Always simulate gas/fee costs prior to refund.
If fees exceed a set % of refund value, apply business logic (e.g., absorb fee vs. deduct from refund).
Document your fee-handling policy clearly for customers.
D. Security & Controls
Implement multi-sig policies on Master Wallet withdrawals.
Enforce withdrawal velocity limits (e.g., max N refunds per hour).
Keep strict audit logs: refund request ID, linked deposit ID, blockchain TX ID, timestamps.
E. Customer Transparency
Provide end-customers with refund confirmation including TX hash.
Communicate expected blockchain settlement time.
4. Operational Recommendations
Automation: Use Inabit APIs to automate refund initiation, balance checks, and KYT checks.
Exception Handling: Create fallback logic if refund wallet + master wallet + swaps cannot fulfill request (manual review).
Testing: Simulate refund flows regularly in sandbox before enabling for production.
Monitoring: Integrate refund activity into merchant dashboards with real-time alerts (e.g., failed withdrawals, low refund balance).
5. Example Flow Summary (Aligned with Diagram)
End-Customer requests refund → Merchant verifies & simulates.
If refund wallet balance sufficient → direct withdrawal.
If insufficient → Merchant triggers master wallet transfer or asset swap.
Refund API wallet executes withdrawal.
End-Customer receives refund → TX hash returned.
Last updated
Was this helpful?