Skip to content

Baskets

Access prerequisites

  • Permission (module): viewBaskets to list/view; manageBaskets to create, edit, allocate, and change status.
  • License/Feature: BASKETS enabled 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) or manageBaskets (write). Dual permission: CPM enum + dynamic module in the DB. The listing itself checks manageBaskets to enable management actions.
  • License/Feature: BASKETS enabled.
  • Dependencies: the parent offerings (crowdfundings) that make up the basket must exist; the NFT network and issuer must be available.

Step by step

  1. Go to Products → Baskets.
  2. Filter by channel, status, and search by name.
  3. Use Create basket to open the form in sections.
  4. Fill in Identity, Editorial, Distribution, Financial, and — depending on the mode — Composition (JIT) or Allocations (Upfront).
  5. Save. In each row use Edit, Dashboard, or Cancel.

Fields (form)

Identity and Editorial

FieldWhat it isRequired?Effect on system/backend
Name (name)Basket nameYesMax 255 characters.
Tagline / Description / Long descriptionCommercial textsNoEditorial content displayed to the investor.
Risk summary / guaranteesSummariesNoriskSummary, warrantiesSummary.
Cover imageCover URLNocoverImageUrl.

Distribution

FieldWhat it isRequired?Effect on system/backend
Channel (partnerChannel)INTERNAL or CHAINLESSYesDefault 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 UPFRONTYesJIT 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 basketYesDetermines the issuance network of the NFT delivered to investors.
NFT issuer (nftCreatorInstitution)Issuing institutionYesDetermines the NFT issuer.
JIT batch threshold (jitBatchThreshold)Value that triggers an allocation batch in JIT modeNoAccumulates contributions up to the threshold and then allocates the batch to the offerings.

Financial

FieldWhat it isRequired?Effect on system/backend
Accepted currency (acceptedCurrency)BRL, BRZ, or USDCYesDefault BRL.
Target fundraising (targetCapture)Fundraising goalYesString/BigNumber (never number); validates numeric format.
Minimum fundraising (minimumCapture)Minimum for the basket to be validYesBigNumber.
Minimum contribution (minimumContribution)Smallest contribution per investorYesBigNumber.
Expected annual yield (expectedYieldPctAnnual)Expected annual returnNoEditorial indicator.
Average term (months) (termMonthsAverage)Average term of the offeringsNoEditorial indicator.
Start/end datesFundraising windowNostartDate/finalDate (ISO).

Composition (JIT mode) / Allocations (Upfront mode)

FieldWhat it isRequired?Effect on system/backend
Composition (compositionTarget)List of {sourceOffering, weight}Yes in JITThe sum of weights must be 1 (validation: `
Allocations (upfrontAllocations)List of {sourceOffering, allocatedAmount}Yes in UpfrontPre-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, triggers createAllocationsBulk afterwards. 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 (or cancelled). The cycle reflects fundraising and the distribution phase.

Examples

Scenario 1 — Internal JIT basket with 3 offerings
  1. Channel INTERNAL → suggested mode JIT.
  2. Financial: currency BRL, target R$ 2,000,000, minimum R$ 500,000, minimum contribution R$ 500.
  3. Composition: Offering A weight 0.5, Offering B weight 0.3, Offering C weight 0.2 (sum 1.0).
  4. 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
  1. Mode UPFRONT.
  2. In Allocations, pre-allocate R$ 800,000 to Offering A and R$ 1,200,000 to Offering B.
  3. 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
  1. In the listing, click Cancel on the desired basket and confirm.
  2. Fundraising is terminated (cancelled); contributions are no longer accepted.