> ## Documentation Index
> Fetch the complete documentation index at: https://developer.9squid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Complete loan tape upload

> Step 2 of the upload flow. After uploading the file, call this endpoint with the deal ID and file name. The gateway verifies the file is CSV or XLSX, registers the file entry, and marks the deal as IN_REVIEW.



## OpenAPI

````yaml api-reference/openapi.json POST /v1/api/originator/loans/complete
openapi: 3.0.3
info:
  title: 9Squid Platform API Gateway
  description: >-
    Unified entry point for all Originator and Investor workflows on the 9Squid
    securitization platform.
  version: '1.0'
  x-readme:
    id: 9squid-docs
  contact: {}
servers:
  - url: https://api.9squid.com
    description: Production
  - url: https://sandbox.api.9squid.com
    description: Sandbox
security: []
tags:
  - name: Originator - Loans
    description: Loan tape upload and management
  - name: Originator - Pools
    description: Securitization pool management
  - name: Originator - Analytics
    description: ALM / TCT Risk analytics
  - name: Originator - Selection Criteria
    description: Stratification check runs and exceptions
  - name: Deal Room - Documents
    description: Document upload and management
  - name: Investor - Deals
    description: Browse and evaluate securitization deals
  - name: Investor - Portfolio
    description: Portfolio positions, summary and reports
  - name: Investor - Subscriptions & Allocations
    description: Order and allocation management
  - name: Alerts
    description: Notifications and alert management
  - name: Webhooks
    description: Webhook subscription and delivery management
paths:
  /v1/api/originator/loans/complete:
    post:
      tags:
        - Originator - Loans
      summary: Complete loan tape upload
      description: >-
        Step 2 of the upload flow. After uploading the file, call this endpoint
        with the deal ID and file name. The gateway verifies the file is CSV or
        XLSX, registers the file entry, and marks the deal as IN_REVIEW.
      operationId: LoansController_completeLoan
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - deal_id
                - file_name
              properties:
                deal_id:
                  type: string
                  description: Deal ID returned from the initiate step
                  example: deal_abc123
                file_name:
                  type: string
                  description: file_name returned from the initiate step
                  example: a1b2c3d4.upload
      responses:
        '201':
          description: Upload completed — deal moved to IN_REVIEW
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  data:
                    type: object
                    properties:
                      deal_id:
                        example: deal_abc123
                        type: string
                      deal_status:
                        type: string
                        example: IN_REVIEW
        '400':
          description: deal_id or file_name is missing
        '401':
          description: Unauthorized — invalid or missing API key
      security:
        - bearer: []
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````