# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.inabit.com/inabit-terminal/terminal-guide/widget-types.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
