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

# Multiple Sources

> Move money from multiple sources to a single destination.

<Info>Available in version 0.6.0 and later.</Info>

## Overview

Blnk allows you to move money from multiple sources to a single destination in one transaction. This provides enhanced flexibility for complex money flows and makes tracking and reconciliation easier.

<Card title="Multiple destinations" href="multiple-destinations" icon="share-2">
  Move money from a single source to multiple destinations in one transaction.
</Card>

***

## What you'll learn

1. [How to send from multiple sources](#sending-from-multiple-sources)
2. [Distribution types available](#distribution-types)
3. [How transaction references work](#handling-transaction-references)

***

## Example scenario

A customer receives USD 30,000 from three sources. This is what the money movement map would look like:

<img src="https://mintcdn.com/blnk/QF1jzfAzr1t9zTYk/images/multiple-sources-flow.png?fit=max&auto=format&n=QF1jzfAzr1t9zTYk&q=85&s=816a4b72ca4da6d0ed5080a8cc229a54" alt="Multiple sources transaction flow" width="1039" height="542" data-path="images/multiple-sources-flow.png" />

[Explore the map yourself here](https://map.blnkfinance.xyz/GvPWMwzF3r)

|                       | Balance ID                                | Amount                       |
| :-------------------- | :---------------------------------------- | :--------------------------- |
| Alice                 | bln\_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f | 10% (USD 3,000)              |
| Bob                   | bln\_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d | USD 20,000                   |
| Charlie               | bln\_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b | Remaining amount (USD 7,000) |
| **Sarah (Recipient)** | bln\_92e4b9b6-0b85-4ef4-87a2-682c31500d38 | **Total: USD 30,000**        |

<Warning>
  When sending from multiple sources, you can only send to one destination.
</Warning>

***

## Create multiple sources transaction

Call the [Create Transaction](/reference/create-transaction) endpoint with these fields:

```bash cURL theme={"system"}
curl -X POST http://localhost:5001/transactions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "amount": 30000,
    "precision": 100,
    "reference": "ref_001adcfgf",
    "currency": "USD",
    "sources": [
        {
            "identifier": "bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f",
            "distribution": "10%"
        },
        {
            "identifier": "bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d",
            "distribution": "20000"
        },
        {
            "identifier": "bln_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b",
            "distribution": "left"
        }
    ],
    "destination": "bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38",
    "description": "Payment to Sarah"
  }'
```

| Field                  | Description                                                                            | Required | Type     |
| :--------------------- | :------------------------------------------------------------------------------------- | :------- | :------- |
| `amount`               | Total amount to be received                                                            | Yes      | `float`  |
| `precision`            | Converts amount to lowest unit. See [Understanding precision](/transactions/precision) | No       | `int64`  |
| `reference`            | Unique transaction reference                                                           | Yes      | `string` |
| `currency`             | Asset class code.                                                                      | Yes      | `string` |
| `sources`              | Array of source objects with `identifier` and `distribution` fields                    | Yes      | `array`  |
| `sources.identifier`   | Balance ID of the source account                                                       | Yes      | `string` |
| `sources.distribution` | Amount to send from this source (specific amount, percentage, or "left")               | Yes      | `string` |
| `destination`          | Recipient's balance ID                                                                 | Yes      | `string` |
| `meta_data`            | Custom transaction data                                                                | No       | `object` |

<Warning>
  When sending from multiple sources, do not include the `source` field in your payload. Use the `sources` array to group the participating balances in your payload.
</Warning>

***

## API response structure

When you create a multiple sources transaction, Blnk .

Blnk returns a response containing:

* A **main transaction ID** for the overall split transaction. If `inflight: true`, it can be used to commit or void all transactions at once.
* A **sources array** with individual transaction IDs for each source.

```json Response {7,23,28,33} theme={"system"}
{
    "precise_amount": 3000000,
    "amount": 30000,
    "rate": 1,
    "precision": 100,
    "overdraft_limit": 0,
    "transaction_id": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab",
    "parent_transaction": "",
    "source": "",
    "reference": "ref_001adcfgf",
    "currency": "USD",
    "description": "txn",
    "status": "QUEUED",
    "hash": "8cfdc0f2562ce30c3728ef624dc29fbd0e4207c77df9220df0c699d45de0eef",
    "allow_overdraft": true,
    "inflight": false,
    "skip_queue": false,
    "atomic": false,
    "sources": [
        {
            "identifier": "@test-2024",
            "distribution": "10%",
            "transaction_id": "txn_59347177-aa7e-d8ad-9f4f-d09628b32ec3"
        },
        {
            "identifier": "@test-21",
            "distribution": "20000",
            "transaction_id": "txn_7ddc8d4f-3b77-4b7d-a37f-240216ab074c"
        },
        {
            "identifier": "@test-218",
            "distribution": "left",
            "transaction_id": "txn_5aad04dd-ed53-4f77-9f01-4916d31fac5f"
        }
    ],
    "destination": "bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38",
    "created_at": "2025-09-18T01:26:30.648049042Z",
    "scheduled_for": "0001-01-01T00:00:00Z",
    "inflight_expiry_date": "0001-01-01T00:00:00Z",
    "meta_data": {
        "QUEUED_PARENT_TRANSACTION": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab"
    }
}
```

### Retrieving child transactions

You can retrieve all transactions in the split by searching for the main transaction ID in the `meta_data.QUEUED_PARENT_TRANSACTION` field:

```bash cURL theme={"system"}
curl -X POST "http://localhost:5001/search/transactions" \
  -H "X-Blnk-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "q": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab",
    "query_by": "meta_data.QUEUED_PARENT_TRANSACTION"
  }'
```

This will return all individual transactions that were created as part of the multiple sources transaction, allowing you to track and manage the complete set of related transactions.

***

## Distribution types

You can specify distribution amounts in three ways:

| Type                | Description                               | Example                   |
| :------------------ | :---------------------------------------- | :------------------------ |
| **Specific amount** | Fixed amount to send                      | `"distribution": "20000"` |
| **Percentage**      | Percentage of total amount                | `"distribution": "10%"`   |
| **Remaining**       | Leftover amount after other distributions | `"distribution": "left"`  |

<Warning>
  You can only use `"left"` once per transaction, and all distributions must sum to the total amount.
</Warning>

### Using `precise_distribution` with `precise_amount`

When a transaction uses `precise_amount`, use `precise_distribution` in place of `distribution` only for sources that specify an exact value.

For example:

```json Example with precise_amount {7} wrap theme={"system"}
{
  ...
  "precise_amount": 189207535698279000,
  "sources": [
    {
      "identifier": "bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f",
      "precise_distribution": "37841507139655800"
    },
    {
      "identifier": "bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d",
      "distribution": "20%"
    }
  ]
}
```

<Tip>
  For more information about precision and `precise_amount`, see [Transaction precision](/transactions/precision).
</Tip>

***

## Transaction references

Blnk automatically generates unique references for each transaction record by appending a counter to your original reference (starting from `1`).

**Example:** If your reference is `ref_001adcfgf`, the generated references will be:

* `ref_001adcfgf_1` (first source)
* `ref_001adcfgf_2` (second source)
* `ref_001adcfgf_3` (third source)

This ensures traceability while maintaining connection to the original transaction.

***

## Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool.

To ask questions or discuss issues, please [contact us](mailto:support@blnkfinance.com) or [join our Discord community](https://discord.gg/7WNv94zPpx).

***

<Tip>
  **Tip:** Connect to Blnk Cloud to see your Core data.

  You can view your transactions, manage identities, create custom reports, invite other team members to collaborate, and perform operations on your Core — all in one dashboard.

  [Check out Blnk Cloud →](https://www.blnkfinance.com/products/cloud)
</Tip>
