Marketplaces
The easiest way to track moneymovement in a marketplace
A wallet for each buyer and seller. Hold the payment until delivery, then split the fee and let the ledger tell you how much to pay out per user.
Priya Shah
BuyerElena Rossi
SellerOmar Farouk
BuyerNoah Williams
SellerA wallet for every buyer and seller.
Create a balance for each buyer and seller, and link it to their identity. Deposits, holds, and payouts post against that wallet, so you always know who owns what.
PS Priya Shah
| Balance | $ 400.00 |
|---|---|
| Inflight debit Amount waiting to be sent | $ 0.00 |
- Delivery
- Inspection
- Release
ER Elena Rossi
| Balance | $ 1,240.00 |
|---|---|
| Inflight credit Amount waiting to be received | $ 0.00 |
Ship escrow features in days, not weeks.
When the buyer pays, post the amount inflight. Commit it when the seller delivers, settle part of it, or void it back to the buyer.
Track reserved and available funds for every buyer and seller
The held amount sits as reserved on the wallet. Available is what they can still spend. Reserved funds stay put until you commit or void the hold.
const response = await blnk.Transactions.create({ precise_amount: 18650, precision: 100, currency: 'USD', source: 'bal_priya_shah', destinations: [ { identifier: '@FeesUSD', distribution: '5%' }, { identifier: '@TaxUSD', distribution: '8%' }, { identifier: '@RevenueUSD', distribution: '10%' }, { identifier: 'bal_elena_rossi', distribution: 'left' } ], reference: 'ref_order_1842', description: 'Order 1842', inflight: true, atomic: true,});if (checksComplete) { await blnk.Transactions.updateStatus( response.data.transaction_id, { status: 'commit' }, );} else { await blnk.Transactions.updateStatus( response.data.transaction_id, { status: 'void' }, );} transaction, resp, err := client.Transaction.Create( blnkgo.CreateTransactionRequest{ ParentTransaction: blnkgo.ParentTransaction{ PreciseAmount: big.NewInt(18650), Precision: 100, Currency: "USD", Source: "bal_priya_shah", Destinations: []blnkgo.Source{ { Identifier: "@FeesUSD", Distribution: "5%" }, { Identifier: "@TaxUSD", Distribution: "8%" }, { Identifier: "@RevenueUSD", Distribution: "10%" }, { Identifier: "bal_elena_rossi", Distribution: "left" } }, Reference: "ref_order_1842", Description: "Order 1842", }, Inflight: true, Atomic: true, },)if checksComplete { transaction, resp, err = client.Transaction.Update( transaction.TransactionID, blnkgo.UpdateStatus{ Status: blnkgo.InflightStatusCommit }, )} else { transaction, resp, err = client.Transaction.Update( transaction.TransactionID, blnkgo.UpdateStatus{ Status: blnkgo.InflightStatusVoid }, )} response = blnk.transactions.create({ "precise_amount": 18650, "precision": 100, "currency": "USD", "source": "bal_priya_shah", "destinations": [ { "identifier": "@FeesUSD", "distribution": "5%" }, { "identifier": "@TaxUSD", "distribution": "8%" }, { "identifier": "@RevenueUSD", "distribution": "10%" }, { "identifier": "bal_elena_rossi", "distribution": "left" } ], "reference": "ref_order_1842", "description": "Order 1842", "inflight": True, "atomic": True,})if checks_complete: blnk.transactions.update_status( response["transaction_id"], {"status": "commit"}, )else: blnk.transactions.update_status( response["transaction_id"], {"status": "void"}, ) ApiResponse<JsonNode> response = blnk.transactions().create( CreateTransactions.create() .preciseAmount(18650) .precision(100) .currency("USD") .source("bal_priya_shah") .destinations(List.of( MultipleSourcesT.create().identifier("@FeesUSD").distribution("5%"), MultipleSourcesT.create().identifier("@TaxUSD").distribution("8%"), MultipleSourcesT.create().identifier("@RevenueUSD").distribution("10%"), MultipleSourcesT.create().identifier("bal_elena_rossi").distribution("left") )) .reference("ref_order_1842") .description("Order 1842") .inflight(true) .atomic(true));if (checksComplete) { blnk.transactions().updateStatus( response.data().get("transaction_id").asText(), UpdateTransactionStatus.create().status("commit"));} else { blnk.transactions().updateStatus( response.data().get("transaction_id").asText(), UpdateTransactionStatus.create().status("void"));} Manage your fee splits and platform revenue
Commit the hold as a split: fee, tax, and seller. The ledger posts each leg. The payout is what that split says the seller is owed.
Create your Cloud account
Sign up to Blnk Cloud, deploy a sandbox, and start building in minutes.
Create your account