Managing multiple sources
Learn how to process transactions with multiple sources
Overview
Blnk provides a powerful tool that lets you process similar transactions from multiple sources to a single destination, providing your application with more customization and efficiency.
Simplified flow of how multiple sources work
This provides enhanced flexibility and control over complex money flows within your application. By consolidating multiple sources into one single transaction, you can monitor and manage transactions more effectively, contextualize your transaction, and facilitate easier tracking and reconciliation.
See also → Managing multiple destinations.
How it works
Say a customer wants to receive USD 30,000 from 3 people. Person A sends 10%, Person B sends USD 20,000, and Person C sends the rest.
Here’s a sample overview of their balance information:
User | Balance ID | Expectation |
---|---|---|
Recipient | bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38 | Will receive a total of USD 30,000 |
Person A | bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f | Will send 10% of USD 30,000 |
Person B | bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d | Will send USD 20,000 |
Person C | bln_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b | Will send the remaining amount left |
Define your transaction parameters
Define the total amount to be sent, the source balances you are sending from, and the destination balance you are sending to.
Parameters | Description |
---|---|
Amount | Total amount to be received by the recipient (USD 30,000). |
Sources | Balance IDs of all the balances the amount is sourced from. |
Destination | Balance ID of the recipient. |
When sending from multiple sources, you can only send to one destination.
Initiate the transaction
Call the Record Transaction endpoint and provide the following required fields.
Field | Description | Required | Type |
---|---|---|---|
amount | Total amount of money to be received. | Yes | float |
precision | Converts the transaction amount to the lowest unit possible. See also → Understanding precision. | No | int64 |
reference | Unique transaction reference. | Yes | string |
currency | Short code for your asset class. See also → Defining asset classes. | Yes | string |
sources | Contains information about the sources from where the money is being sent from. Each object within this array represents a source and has 2 required fields — identifier and distribution . | Yes | |
identifier | Sender’s balance ID | Yes | string |
distribution | Specific amount being drawn from the respective source. | Yes | string |
narration | Specific description for the respective source | No | string |
destination | Recipient’s balance ID. | Yes | string |
meta_data
object (optional) in your request when sending money from multiple sources. source
field in your payload. Use the sources
array to group the participating balances in your payload.Send your request
Once your request is received, Blnk automatically creates separate transaction records for each source with their respective amounts. This is crucial because Blnk runs on the Double Entry Accounting Principle.
Blnk computes, queues and processes the transactions like this:
Reference | Currency | Amount | Source | Destination |
---|---|---|---|---|
ref_001adcfgf1 | USD | 3000 | bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f | bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38 |
ref_001adcfgf2 | USD | 20000 | bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d | bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38 |
ref_001adcfgf3 | USD | 7000 | bln_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b | bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38 |
At the end of the transaction, the recipient’s balance will have a received a total of 30000.
Transactions are queued by default waiting to be applied. We will notify you via the transaction.applied
webhook once they are done.
Distribution types
There are three ways you can specify how the amount should be distributed among the sources as you’ve seen in the example above.
Distribution type | Description | Example |
---|---|---|
Specific amount | Provide the specific amount of money to be sent | "distribution": "20000" - Means USD 20,000 from the total amount should be sent |
Percentage | Calculates a percentage of the total amount to be sent | "distribution": "10%" - Means 10% of the total amount should be sent |
”left” | Calculates the remaining amount not assigned to a source | "distribution": "left" - Means the remaining amount left after others have been deducted should be sent |
left
distribution type, you can only use it in one instance per payload.It is crucial to ensure that the total sum of your distribution
fields is exactly equal to the value specified in the amount
field.
Transaction references
Blnk auto-generates a unique transaction reference for each transaction record based on the original reference you provided in your transaction request.
A counter, starting at 1
, is appended for each transaction record created ensuring that the individual transaction records have unique references derived from the original transaction reference. This makes sure that each transaction record is unique through its modified reference ensuring traceability and management while preserving the integrity of the original transaction’s reference.
To track your transaction, call the Get Transaction endpoint and provide the transaction id
or reference
to track a specific transaction in your Blnk Ledger.
See also → Search your Blnk data.
See also
Managing multiple destinations
Send funds to multiple destinations
Understanding precision
Improve the correctness of your ledger
Handling concurrency
How Blnk queues transactions
Managing notifications
Set up how you receive notifications
Need help?
Are you stuck? Do you have a question that isn’t answered in this doc? Have you run into a problem you can’t solve? Want to file a bug report?
Join our Discord server and share your questions/thoughts with other developers building financial applications like you.
Was this page helpful?