Baskets
Access prerequisites
- Permission (module):
viewBasketsto list/view;manageBasketsto create, edit, allocate, and change status. - License/Feature:
BASKETSenabled in the tenant license (Vault). - Menu container: GENERAL → Products group → Baskets
What it is / when to use
A Basket is an investment product that aggregates multiple parent offerings (crowdfundings) into a single vehicle. The investor contributes to the basket and the capital is distributed among the component offerings according to defined weights; the returns from the offerings flow back proportionally to the basket unit holders. It is the product that allows "diversification in one click".
The operator uses this area to compose the basket (which offerings, with what weight), define the allocation mode, the financial parameters, and track the fundraising. The basket issues an NFT for investors (configurable network and issuer).
Prerequisites
- Permission:
viewBaskets(read-only) ormanageBaskets(write). Dual permission: CPM enum + dynamic module in the DB. The listing itself checksmanageBasketsto enable management actions. - License/Feature:
BASKETSenabled. - Dependencies: the parent offerings (crowdfundings) that make up the basket must exist; the NFT network and issuer must be available.
Step by step
- Go to Products → Baskets.
- Filter by channel, status, and search by name.
- Use Create basket to open the form in sections.
- Fill in Identity, Editorial, Distribution, Financial, and — depending on the mode — Composition (JIT) or Allocations (Upfront).
- Save. In each row use Edit, Dashboard, or Cancel.
Fields (form)
Identity and Editorial
| Field | What it is | Required? | Effect on system/backend |
|---|---|---|---|
Name (name) | Basket name | Yes | Max 255 characters. |
| Tagline / Description / Long description | Commercial texts | No | Editorial content displayed to the investor. |
| Risk summary / guarantees | Summaries | No | riskSummary, warrantiesSummary. |
| Cover image | Cover URL | No | coverImageUrl. |
Distribution
| Field | What it is | Required? | Effect on system/backend |
|---|---|---|---|
Channel (partnerChannel) | INTERNAL or CHAINLESS | Yes | Default INTERNAL. Changing the channel suggests the allocation mode: CHAINLESS → Upfront; INTERNAL → Just‑in‑time (unless already manually changed). |
Allocation mode (allocationMode) | JUST_IN_TIME (JIT) or UPFRONT | Yes | JIT allocates as fundraising comes in (uses Composition with weights); UPFRONT pre-allocates fixed amounts per offering (uses Allocations). |
NFT network (nftNetworkId) | NFT network for the basket | Yes | Determines the issuance network of the NFT delivered to investors. |
NFT issuer (nftCreatorInstitution) | Issuing institution | Yes | Determines the NFT issuer. |
JIT batch threshold (jitBatchThreshold) | Value that triggers an allocation batch in JIT mode | No | Accumulates contributions up to the threshold and then allocates the batch to the offerings. |
Financial
| Field | What it is | Required? | Effect on system/backend |
|---|---|---|---|
Accepted currency (acceptedCurrency) | BRL, BRZ, or USDC | Yes | Default BRL. |
Target fundraising (targetCapture) | Fundraising goal | Yes | String/BigNumber (never number); validates numeric format. |
Minimum fundraising (minimumCapture) | Minimum for the basket to be valid | Yes | BigNumber. |
Minimum contribution (minimumContribution) | Smallest contribution per investor | Yes | BigNumber. |
Expected annual yield (expectedYieldPctAnnual) | Expected annual return | No | Editorial indicator. |
Average term (months) (termMonthsAverage) | Average term of the offerings | No | Editorial indicator. |
| Start/end dates | Fundraising window | No | startDate/finalDate (ISO). |
Composition (JIT mode) / Allocations (Upfront mode)
| Field | What it is | Required? | Effect on system/backend |
|---|---|---|---|
Composition (compositionTarget) | List of {sourceOffering, weight} | Yes in JIT | The sum of weights must be 1 (validation: ` |
Allocations (upfrontAllocations) | List of {sourceOffering, allocatedAmount} | Yes in Upfront | Pre-allocates fixed amounts per offering; sent in bulk after creating the basket. |
Actions and modals
- Save: validates the form (Angular Reactive Forms). In JIT mode, requires composition with weight sum = 1. Creates the basket (
create) or updates (update); in Upfront with allocations, triggerscreateAllocationsBulkafterwards. Redirects to the basket dashboard. - Status: in edit mode, it is possible to change the status (
onStatusChange); the change is only sent (updateStatus) if it differs from the current one. - Cancel (in the listing): confirms and calls
cancel— terminates the basket fundraising. - Dashboard: tracks allocations, orders, positions, and distributions for the basket.
Business rules / caveats
Attention
- JIT requires composition with weight sum = 1 (100%). Outside of this, the section is invalid and saving is blocked.
- The channel suggests the allocation mode, but the operator can override it — check the mode before saving (it defines which sections appear).
- NFT network and issuer are required (they sit in the Distribution section because they determine the NFT delivered to investors).
- Proportional distribution: returns and amortizations from parent offerings flow back to basket unit holders proportionally to their participation — the position (
IBasketPosition) tracks principal and interest received. - Financial values: all amounts arrive as string (serialized BigNumber) — never
number. No rounding. - Basket status:
inactive → active → minimum_reached → funded → distributing → closed(orcancelled). The cycle reflects fundraising and the distribution phase.
Examples
Scenario 1 — Internal JIT basket with 3 offerings
- Channel INTERNAL → suggested mode JIT.
- Financial: currency BRL, target R$ 2,000,000, minimum R$ 500,000, minimum contribution R$ 500.
- Composition: Offering A weight 0.5, Offering B weight 0.3, Offering C weight 0.2 (sum 1.0).
- Batch threshold R$ 50,000: for every R$ 50,000 raised, the batch is allocated 50/30/20 to the offerings.
Scenario 2 — Basket with Upfront allocation
- Mode UPFRONT.
- In Allocations, pre-allocate R$ 800,000 to Offering A and R$ 1,200,000 to Offering B.
- On save, the basket is created and the allocations are sent in bulk; the capital is reserved in those offerings.
Scenario 3 — Cancelling a basket
- In the listing, click Cancel on the desired basket and confirm.
- Fundraising is terminated (
cancelled); contributions are no longer accepted.