# Widget Types

## Widget Types in Our Terminal

Inabit Terminal provides two widget types to support a wide range of payment scenarios. Both handle deposit address generation, blockchain monitoring, and transaction confirmation. The main difference lies in how deposit addresses are assigned and reused.

### 1. Purchase Address Widget

Used for single-use or transaction-specific payments. This widget generates a unique deposit address for each new payment flow, enabling easy matching of transactions to specific purchases.

#### Common Use Cases:

* eCommerce checkout flows
* Invoices with expiration windows
* Donations or one-time contributions
* Payment links in emails or support chats

#### How It Works:

* A new deposit address is generated each time the widget is created.
* The customer sends crypto to this unique address.
* The widget listens for an on-chain deposit and triggers a webhook or terminal API callback.
* After the specified number of confirmations, the transaction is marked as complete.
* If payment is not received in time, the widget can expire and optionally generate a new quote or address.

#### Key Features:

* Unique address per transaction for clean reconciliation
* Supports expiration windows and partial payments
* Enables reuse of addresses across different purchases to reduce network fees
* Automatic rate refresh upon expiration (when enabled)
* Best for real-time, time-limited payments
* Highly auditable and secure

### 2. Customer Address Widget

Designed for long-term use, this widget assigns a persistent deposit address to a specific customer or account. All incoming payments to that address are monitored over time, allowing flexible, account-based payment handling.

#### Common Use Cases:

* Recurring user payments
* Wallet or account top-ups
* Subscription billing (manual)
* Developer platforms or marketplaces
* Multi-use crypto billing profiles

#### How It Works:

* A customer-specific deposit address is created once and reused for that customer.
* The address is monitored continuously by Inabit Terminal.
* Each incoming transaction to the address is tracked, confirmed, and pushed to your system via webhook or API.
* Multiple payments can be made to the same address over time.

#### Key Features:

* Persistent deposit address per customer or account
* Optimized for recurring or ongoing payments
* Simplifies deposit handling in user/account-based systems
* Configurable expiration, confirmation count, and other options
* Ideal for customer wallets, balances, or prepaid models

### Choosing the Right Widget

| Scenario                                          | Recommended Widget      |
| ------------------------------------------------- | ----------------------- |
| One-time eCommerce checkout                       | Purchase Address Widget |
| Physical store QR code payment                    | Purchase Address Widget |
| Invoice with expiration (e.g., due in 30 minutes) | Purchase Address Widget |
| Subscription top-ups or account funding           | Customer Address Widget |
| Multi-user platform that tracks deposits per user | Customer Address Widget |
| Recurring customer payments with the same address | Customer Address Widget |
| Donations with tracking per campaign              | Purchase Address Widget |
| Payment links sent via email or chat              | Purchase Address Widget |
| API-based integration for programmatic payouts    | Customer Address Widget |
| Service credit recharge by end users              | Customer Address Widget |

### Integration Notes

* Both widget types are created via the Inabit Terminal GraphQL API or from the Inabit Dashboard.
* All widgets support:
  * Blockchain and asset selection
  * Confirmation threshold configuration
  * Expiration timeouts
  * Partial payment tolerance
* Widgets can be embedded in web or mobile applications.
* Real-time payment updates are available via webhook or by polling the Terminal API.
* Sandbox and mainnet environments are supported for safe development and production deployments.
