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

# Register or update an assignment fund

> Creates or replaces the registration of one fund and its administrator, keyed by fundTaxId within the validated tenant. Identifier and creation instant of an existing registration are preserved, so this is the update path as well as the create path.



## OpenAPI

````yaml /es/openapi/v3-current/lender.yaml post /api/v1/assignment/funds
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Code-first OpenAPI 3.1 surface for the Lender service. Routes that move
    money are at-most-once per X-Idempotency: when one answers 5xx, the
    X-Idempotency-Fenced response header says whether that key is now refusing
    resends (true) or free to retry (false or absent). See
    docs/contracts/money-route-idempotency.md.
  license:
    name: Lerian Studio General License
  title: Lender API
  version: 1.0.0
servers:
  - url: https://lender.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Caller session projection: validated subject and effective permissions for
      the presented token.
    name: Session
  - description: >-
      Ledger accounting operations: journal entries and accrual postings for
      loan accounts.
    name: Accounting
  - description: >-
      Loan application intake and lifecycle: submission, decisioning, and
      status.
    name: LoanApplications
  - description: >-
      Loan product catalog: definition, versioning, and activation of lending
      products.
    name: LoanProducts
  - description: >-
      Loan account servicing operations: balances, schedules, and account-level
      actions.
    name: Loan Accounts
  - description: >-
      Portfolio dashboard read operations: aggregated portfolio and performance
      views.
    name: Dashboard
  - description: >-
      Jurisdiction registry: supported jurisdiction profiles and their
      capabilities.
    name: Jurisdictions
  - description: >-
      Jurisdiction-specific loan application operations (Brazil origination
      surface).
    name: Loan Applications
  - description: >-
      Tax computation operations for jurisdiction-specific lending (e.g. Brazil
      IOF).
    name: Tax
  - description: >-
      Brazil consignado privado operations: contract lifecycle, exclusion
      repair, and compensating adjustments.
    name: Consignado
  - description: >-
      Credit-instrument document template registry: versioned drafting and
      publication of CCB clausulado.
    name: DocumentTemplates
paths:
  /api/v1/assignment/funds:
    post:
      tags:
        - AssignmentFunds
      summary: Register or update an assignment fund
      description: >-
        Creates or replaces the registration of one fund and its administrator,
        keyed by fundTaxId within the validated tenant. Identifier and creation
        instant of an existing registration are preserved, so this is the update
        path as well as the create path.
      operationId: upsertAssignmentFund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertAssignmentFundHumaInputBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentFundHumaBody'
          description: OK
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
components:
  schemas:
    UpsertAssignmentFundHumaInputBody:
      additionalProperties: false
      properties:
        administratorName:
          description: Fund administrator name.
          maxLength: 256
          minLength: 1
          type: string
        administratorTaxId:
          description: >-
            Fund administrator registration identifier (opaque; no jurisdiction
            format is assumed).
          maxLength: 64
          minLength: 1
          type: string
        assignmentRate:
          description: >-
            Monthly effective cession rate as a decimal fraction string in [0,
            1] with at most 8 decimals (0.0175 = 1.75% per month). Zero means
            assignment at par.
          examples:
            - '0.0175'
          type: string
        assignorConcentrationLimit:
          description: >-
            Regulation concentration limit per assignor as a decimal fraction
            string in (0, 1] with at most 8 decimals.
          examples:
            - '0.30'
          type: string
        eligibilityMode:
          description: >-
            Whether our eligibility verification is authoritative (full) or runs
            as a pre-filter before the administrator's own (prefilter).
          enum:
            - full
            - prefilter
          type: string
        fundName:
          description: Fund name.
          maxLength: 256
          minLength: 1
          type: string
        fundTaxId:
          description: >-
            Fund registration identifier. Re-posting the same value REPLACES
            that fund's configuration and keeps its identifier. Bounded at 32
            bytes because this is the one value carried into the fixed-width
            offer file, which refuses rather than truncates.
          maxLength: 32
          minLength: 1
          type: string
        offerFileLayoutRef:
          description: >-
            Versioned reference to the custodian export layout. Letters, digits
            and -_.: only.
          examples:
            - custodian-cnab240.v1
          maxLength: 128
          minLength: 1
          type: string
        paidToTransferredWindowSeconds:
          description: >-
            Orphan-detector window for "paid without transferred", in whole
            seconds.
          examples:
            - 172800
          format: int64
          maximum: 31536000
          minimum: 1
          type: integer
        paymentSourceConcentrationLimit:
          description: >-
            Regulation concentration limit per payment source as a decimal
            fraction string in (0, 1] with at most 8 decimals (e.g. "0.15").
          examples:
            - '0.15'
          type: string
        registryProvider:
          description: >-
            Which registry governs this fund's cession. REQUIRED, and none must
            be stated rather than omitted: this call REPLACES the stored
            registration, so a save that stayed silent would turn a fund whose
            acceptance is fenced by a confirmed title movement into one that is
            not. none means registration at a registry is dispensable for this
            fund and its absence never blocks a cession. Any other value must be
            a registry one of this deployment's jurisdictions declares —
            deliberately NOT an enum here, because the set is open per
            jurisdiction and a fixed list would pin the contract to one country.
            A value nobody declared is refused, and the refusal names what is
            declared.
          examples:
            - none
          type: string
        repeatedCutLimit:
          description: >-
            How many times this fund may cut the same receivable in its remessa
            before the receivable stops returning to the pool automatically.
            Omit to take the default of 2.
          format: int64
          minimum: 1
          type: integer
        riskRetention:
          description: >-
            Whether assigning to this fund leaves substantial risk with the
            assignor (Res. CMN 4.966). REQUIRED, and the only accepted value is
            none — assignment transferring substantially all risks and rewards,
            which is what this service books: the receivable is derecognized and
            the gain or loss recognized on the sale date. Assignment WITH
            retained risk keeps the asset on the balance sheet, turns the price
            into a liability and appropriates the result over the remaining
            term; that treatment does not exist yet and any other value is
            refused rather than approximated. Deliberately NOT an enum here, so
            the refusal can say what is missing instead of reading as a
            malformed field.
          examples:
            - none
          type: string
        termMode:
          description: Who generates the endorsement term.
          enum:
            - lender_emitted
            - administrator_generated
          type: string
        transferredToAcceptedWindowSeconds:
          description: >-
            Orphan-detector window for "transferred without accepted", in whole
            seconds.
          examples:
            - 86400
          format: int64
          maximum: 31536000
          minimum: 1
          type: integer
      required:
        - administratorName
        - administratorTaxId
        - fundName
        - fundTaxId
        - termMode
        - eligibilityMode
        - paymentSourceConcentrationLimit
        - assignorConcentrationLimit
        - assignmentRate
        - offerFileLayoutRef
        - registryProvider
        - riskRetention
        - paidToTransferredWindowSeconds
        - transferredToAcceptedWindowSeconds
      type: object
    AssignmentFundHumaBody:
      additionalProperties: false
      properties:
        administratorName:
          description: Fund administrator name.
          type: string
        administratorTaxId:
          description: Fund administrator registration identifier.
          type: string
        assignmentRate:
          description: >-
            Monthly effective cession rate as a decimal fraction string, scale 8
            (e.g. "0.01750000").
          type: string
        assignorConcentrationLimit:
          description: >-
            Regulation concentration limit per assignor, as a decimal fraction
            string, scale 8.
          type: string
        createdAt:
          description: Creation timestamp (RFC3339, UTC).
          type: string
        eligibilityMode:
          description: >-
            full (our verification is authoritative) or prefilter (the
            administrator verifies; the same engine runs ahead of the offer
            file).
          type: string
        fundName:
          description: Fund name.
          type: string
        fundTaxId:
          description: >-
            Fund registration identifier; the natural key of the registration
            within a tenant.
          type: string
        id:
          description: >-
            Fund registration identifier (uuid). Stable across configuration
            changes.
          type: string
        offerFileLayoutRef:
          description: Versioned reference to the custodian export layout.
          type: string
        paidToTransferredWindowSeconds:
          description: Orphan-detector window for "paid without transferred", in seconds.
          format: int64
          type: integer
        paymentSourceConcentrationLimit:
          description: >-
            Regulation concentration limit per payment source, as a decimal
            fraction string, scale 8 (e.g. "0.15000000").
          type: string
        registryProvider:
          description: >-
            Which registry governs this fund's cession. none means no registry
            governs it; any other value is a registry declared by one of this
            deployment's jurisdictions.
          type: string
        repeatedCutLimit:
          description: >-
            How many times this fund may cut the same receivable before it stops
            returning to the pool automatically.
          format: int64
          type: integer
        riskRetention:
          description: >-
            Whether assigning to this fund leaves substantial risk with the
            assignor (Res. CMN 4.966). Always none today: the receivable is
            derecognized and the result recognized on the sale date.
          type: string
        termMode:
          description: >-
            Who generates the endorsement term: lender_emitted or
            administrator_generated.
          type: string
        transferredToAcceptedWindowSeconds:
          description: >-
            Orphan-detector window for "transferred without accepted", in
            seconds.
          format: int64
          type: integer
        updatedAt:
          description: Last-update timestamp (RFC3339, UTC).
          type: string
      required:
        - id
        - administratorName
        - administratorTaxId
        - fundName
        - fundTaxId
        - termMode
        - eligibilityMode
        - paymentSourceConcentrationLimit
        - assignorConcentrationLimit
        - assignmentRate
        - repeatedCutLimit
        - offerFileLayoutRef
        - registryProvider
        - riskRetention
        - paidToTransferredWindowSeconds
        - transferredToAcceptedWindowSeconds
        - createdAt
        - updatedAt
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````