> ## Documentation Index
> Fetch the complete documentation index at: https://developer.obiex.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Business Collections

> Collect fiat payments from your customers with identity matching and automatic settlement

Business Collections lets a Business account collect payments directly from its own end customers, rather than from itself. For each collection, Obiex issues a one-time virtual bank account tied to a specific customer and amount. When the customer pays into that account, Obiex automatically checks that the payer's name matches the customer you registered, then settles the funds to your USDT wallet.

<Warning>
  Business Collections is currently **access-gated** and not enabled by default. To get access, reach out to our marketing team via **[sales@obiex.finance](mailto:sales@obiex.finance)** to explain your use case (e.g. what you're collecting, expected volume, and your customer base) so it can be enabled on your business account.
</Warning>

<Note>
  Business Collections is a separate feature from [Collections (deposit addresses)](/features/collections). Deposit addresses are for receiving crypto into your own wallet; Business Collections is for collecting fiat payments *from* your customers on your behalf, with identity verification built in.
</Note>

<Warning>
  Only NGNX (Nigerian Naira) fiat collections are supported at this time.
</Warning>

## Key Features

### Customer Identification

Every collection is tied to a customer identified by their **BVN** and **NIN** (both 11-digit numbers). The first time you initiate a collection for a given BVN/NIN pair, Obiex creates a customer record for your business. Subsequent collections for the same BVN and NIN reuse that same customer record instead of creating a duplicate.

<Note>
  If a BVN or NIN partially matches an existing customer (for example, the BVN matches but the NIN doesn't), the request is rejected rather than silently reused. Double-check the values before retrying.
</Note>

### Initiate a Collection

Use the **Initiate Collection** endpoint to start a collection. You provide the customer's details, the currency, and the amount. Obiex responds with a one-time virtual bank account (bank name, account name, and account number) that expires in **30 minutes**.

Share these account details with your customer so they can pay directly into that account before it expires.

### Automatic Name Matching and Settlement

When a payment arrives at the virtual account, Obiex compares the payer's bank account name against the customer's name on the collection:

* **Name matches** — the payment is converted to USDT at the current rate and credited to your business wallet. The transaction is marked `COMPLETED`.
* **Name doesn't match** — the funds are not lost, but the transaction is marked `HELD` for manual review rather than settled automatically.
* **Payment arrives after the virtual account expires** — the transaction is marked `FAILED` and the destination is marked `EXPIRED`.

### Notifications

Once a collection is created and as it progresses, you'll receive a `COLLECTION` webhook notification so you can track its status without polling.

### Sample Collection Webhook

```json theme={null}
{
  "type": "COLLECTION",
  "reference": "col_9f639b9f2a4a4b0e8e0e2d9c9d7a9d3e",
  "customerId": "9b1d6a3d-df3e-4e33-9f2b-1c2e3a9b6a11",
  "collectionType": "FIAT",
  "status": "COMPLETED",
  "sourceCurrency": "NGNX",
  "sourceAmount": 5000,
  "targetCurrency": "USDT",
  "targetAmount": 3.31,
  "senderInfo": {
    "senderName": "Ada Okafor",
    "senderAccount": "0123456789",
    "bank": "GTBank"
  },
  "accountNumber": "9012345678",
  "accountName": "Obiex-Ada Okafor",
  "bankName": "Wema Bank",
  "walletAddress": null,
  "network": null,
  "accountExpiresAt": "2026-08-17T10:47:00.000Z",
  "createdAt": "2026-08-17T10:17:00.000Z",
  "lastUpdated": "2026-08-17T10:19:32.000Z"
}
```

<Warning>
  Only process collections with a **COMPLETED** status as settled. A `HELD` status means the payment arrived but the payer's name didn't match — review it manually before treating it as paid.
</Warning>

## Collection Statuses

**Transaction status** (`CollectionTransactionStatus`):

| Status      | Meaning                                                                                |
| ----------- | -------------------------------------------------------------------------------------- |
| `PENDING`   | Awaiting payment into the virtual account                                              |
| `HELD`      | Payment received, but the payer's name didn't match the customer — needs manual review |
| `COMPLETED` | Payment received, name matched, and funds settled to your wallet                       |
| `FAILED`    | The virtual account expired before payment was received                                |

**Destination status** (`CollectionDestinationStatus`):

| Status    | Meaning                                                 |
| --------- | ------------------------------------------------------- |
| `ACTIVE`  | The virtual account can still receive a payment         |
| `USED`    | A payment was received and settled against this account |
| `EXPIRED` | The 30-minute window elapsed without payment            |

## Requirements

<Note>
  Business Collections is only available to accounts with a Business account type. Requests from personal accounts will be rejected.
</Note>

<Note>
  Access to this feature is granted on request. See the note at the top of this page for how to get access.
</Note>

## Key Endpoints

| Method | Endpoint                       | Description                                                                  |
| ------ | ------------------------------ | ---------------------------------------------------------------------------- |
| POST   | `/collections`                 | Initiate a collection and generate a one-time virtual account for a customer |
| GET    | `/collections/customers/me`    | List the customers you've collected payments from                            |
| GET    | `/collections/customers/{id}`  | Get a single collection customer by ID                                       |
| GET    | `/collections/destinations/me` | List the virtual accounts generated for your collections                     |
| GET    | `/collections/transactions/me` | List your collection transactions                                            |
