Defacto Loan API

The Loan API from Defacto — 7 operation(s) for loan.

Operations 9

GET /loan/{loan_id}/events /loan/{loan_id}/events #
GET /loan/{loan_id} /loan/{loan_id} #
PATCH /loan/{loan_id} /loan/{loan_id} #
GET /loans /loans #
POST /loans /loans #
POST /loan/documents/{document_type} /loan/documents/{document_type} #
POST /loan/{loan_id}/cancel /loan/{loan_id}/cancel #
POST /loan/{loan_id}/validate /loan/{loan_id}/validate #
PUT /loan/repayment-terms /loan/repayment-terms #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/defacto-loan-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

defacto-loan-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Defacto Accounting Loan API
  version: v1.0.0
  description: Defacto provides instant, embedded financing for SMBs across Europe. This REST API lets partners onboard borrowers, test eligibility and credit limits, upload business/bank data, create invoices, request and manage loans, handle repayments and recollection, issue and manage credit cards, bill fees, and subscribe to webhooks. Reconstructed by API Evangelist from the per-operation OpenAPI fragments published on Defacto's ReadMe developer portal (developers.getdefacto.com/llms.txt). operationId values are the provider's ReadMe reference slugs; summaries are the reference page titles.
  contact:
    email: contact@getdefacto.com
    url: https://developers.getdefacto.com/
servers:
- url: https://api.getdefacto.com
  description: Production
- url: https://api-sandbox.getdefacto.com
  description: Sandbox
security:
- Bearer: []
tags:
- name: Loan
paths:
  /loan/{loan_id}/events:
    get:
      description: Get the activity eligibility_request of a loan.
      parameters:
      - in: path
        name: loan_id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TypedApiPage2'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: get_loan-loan-id-events
      summary: /loan/{loan_id}/events
  /loan/{loan_id}:
    get:
      description: Retrieve a loan by its ID. Returns the full loan details including status, amounts, repayment schedule, borrower information, and related documents.
      parameters:
      - in: path
        name: loan_id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LoanAPI'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: get_loan-loan-id
      summary: /loan/{loan_id}
    patch:
      description: '

        Updates a loan.

        - When the loan is SUBMITTED or TO_VALIDATE, all the below fields can be updated.

        - When the loan is VALIDATED or SCHEDULED, the references and to_repay_at fields can be updated.

        - When the loan is TO_REPAY, only the to_repay_at change be changed. The earliest acceptable date being loan.earliest_to_repay_at.


        This operation is not available when the loan is in another status.

        '
      parameters:
      - in: path
        name: loan_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIPatchLoan'
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LoanAPI'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: patch_loan-loan-id
      summary: /loan/{loan_id}
  /loans:
    get:
      description: List loans with pagination. Returns a paginated list of loans filterable by borrower, status, dates, and loan type.
      parameters:
      - description: Search by borrower company number (e.g. SIREN or NIF)
        in: query
        name: borrower
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - description: Returns loans where contractual_repayment_date field is greater or equal to this date.
        in: query
        name: contractual_repayment_date_from
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Returns loans where contractual_repayment_date field is lower to this date.
        in: query
        name: contractual_repayment_date_to
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Pagination cursor from the previous response's next_page field. Omit to get the first page.
        in: query
        name: cursor
        required: false
        x-nullable: true
        schema:
          type: string
          default: null
      - description: Returns loans for which the guarantee was called
        in: query
        name: guarantee_called
        required: false
        x-nullable: true
        schema:
          type: boolean
          default: null
      - description: Entity legally responsible to payback the loan
        in: query
        name: guarantor
        required: false
        x-nullable: true
        schema:
          type: string
          default: null
      - description: Filter by one or more loan UUIDs.
        in: query
        name: id
        required: false
        explode: true
        schema:
          type: array
          items:
            format: uuid
            type: string
      - in: query
        name: loan_type
        required: false
        explode: true
        schema:
          type: array
          items:
            enum:
            - CREDIT_CARD_FINANCING
            - FUNDING_OBLIGATION_CONSOLIDATION
            - INVENTORY_FINANCING
            - INVOICE_BASED_FINANCING
            - WALLET_FINANCING
            type: string
      - description: Maximum number of items to return per page.
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 100
      - description: Returns loans that have been postponed
        in: query
        name: postponed
        required: false
        x-nullable: true
        schema:
          type: boolean
          default: null
      - description: 'Search for loans based on one or more of the following fields: loan ID, invoice number, amount, estimated fees, status, or counterparty name.'
        in: query
        name: query
        required: false
        x-nullable: true
        schema:
          type: string
          default: null
      - description: 'Specify the sorting field and order. Default sorting: created_at DESC. Possible values: [''created_at:asc'', ''created_at:desc'', ''to_repay_at:asc'', ''to_repay_at:desc'', ''to_pay_at:asc'', ''to_pay_at:desc'']'
        in: query
        name: sort_by
        required: false
        x-nullable: true
        schema:
          type: string
          enum:
          - created_at:asc
          - created_at:desc
          - to_pay_at:asc
          - to_pay_at:desc
          - to_repay_at:asc
          - to_repay_at:desc
          - null
          default: null
      - description: 'Loan statuses. Possible values: [''SUBMITTED'', ''PENDING_VALIDATION'', ''TO_VALIDATE'', ''DECLINED'', ''VALIDATED'', ''CANCELED'', ''SCHEDULED'', ''INITIATED'', ''TO_REPAY'', ''TO_REPAY_FEES'', ''CLOSED'', ''ISSUE_DETECTED'', ''DELETED'']'
        in: query
        name: status
        required: false
        explode: true
        schema:
          type: array
          items:
            enum:
            - CANCELED
            - CLOSED
            - DECLINED
            - DELETED
            - INITIATED
            - ISSUE_DETECTED
            - PENDING_VALIDATION
            - SCHEDULED
            - SUBMITTED
            - TO_REPAY
            - TO_REPAY_FEES
            - TO_VALIDATE
            - VALIDATED
            type: string
      - description: Returns loans where pay_at field is greater or equal to this date.
        in: query
        name: to_pay_at_from
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Returns loans where pay_at field is lower to this date.
        in: query
        name: to_pay_at_to
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Returns loans where repay_at field is greater or equal to this date.
        in: query
        name: to_repay_at_from
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Returns loans where repay_at field is lower to this date.
        in: query
        name: to_repay_at_to
        required: false
        x-nullable: true
        schema:
          type: string
          format: date-time
          default: null
      - description: Shorthand alias for to_repay_at_from=now() and to_repay_at_to=now().plus(x, 'days'). Mutually exclusive with to_repay_at_from & to_repay_at_to.
        in: query
        name: to_repay_at_within_days
        required: false
        x-nullable: true
        schema:
          type: integer
          default: null
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TypedApiPage1'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: get_loans
      summary: /loans
    post:
      description: '

        ## Request a new loan.


        If you haven''t visited the guide: [how to make your first loan?](https://developers.getdefacto.com/reference/make-your-first-loan) we recommend you to visit it first.


        **Key Parameters**:

        As the loan request is a complex operation, it has many parameters. The most important ones are:

        - borrower

        - amount

        - to_pay_at

        - to_repay_at

        - salt_id: ⚠️ In order to avoid accidental duplication in requested loans we recommend you to set the <code>salt_id</code> parameter to a unique value for each request.


        **Timeout after**: 30 seconds (status code will be 504 in such a case)


        For loan related to invoices, at the moment, we don''t support multiple-invoices financing.

        - You can either request a loan for an existing invoice, in which case you should set <code>invoice_ids</code>.

        - Or you can create the invoice and request a loan with a single call to this API.

        - If you pass an invoice in <code>invoices</code>, the base64-encoded value of the PDF of the invoice is required under the <code>document</code> property. You can for example use <a href=''https://base64.guru/converter/encode/pdf''>base64guru</a>.



        ### Behavior

        When you send this API request, our system will:

        1. Create a loan (you will get its id in the response)

        2. Start evaluating your loan request. Here you should choose between 2 behaviors:

        a. (default) Getting the decision asynchronously. The status of the returned loan will always be PENDING_VALIDATION. Webhooks will tell you if it goes approved or declined. In can happen from a few seconds after the request up to a few days after it.

        b. Getting the decision synchronously. This is recommended if this endpoint is called directly from a frontend. To activate this option, set <code>"wait_for_validation": true</code>. In such a case, the returned loan status will be:

        i. if the loan is automatically accepted by Defacto -> the status of the loan will be TO_VALIDATE if you set <code>"auto_validate": false</code>, or one of: VALIDATED, SCHEDULED, INITIATED, TO_REPAY. Fore more information on this, see section "Why the status of the loan in the response vary?" below.

        ii. if the loan is automatically declined by Defacto -> the status of the loan will be DECLINED and the <code>denial_reason</code> will be set.

        iii. if the loan validation takes longer than 20s (max response time is 2 business days) -> the status of the loan will be PENDING_VALIDATION. It is therefore very important to think about how to communicate with the end-user. While its not an issue for validated loans, it can get frustrating for declined loans. Users must be alerted of loans that gets declined few hours after their request.

        3. If the loan is accepted by Defacto, it will then move forward and its status will be updated regularly. Subscribe to webhooks to get live notifications of this.


        **Why the status of the loan in the response vary?**

        The status vary because our system is asynchronous and the steps moving the loan forward may be executed immediately or not depending on the current load on our system.


        **What should I do if the status of the loan is __TO_VALIDATE__?**

        TO_VALIDATE means that Defacto accepted the loan as is.

        The next step is to get the user consent for this loan offer.

        When obtained, call [<code>POST /loan/{loan_id}/validate</code>](https://developers.getdefacto.com/reference/post_loan-loan-id-validate).


        Most of the time the user does not want to do this manual consent. To avoid requiring this, you can set <code>"auto_validate": true</code> in your request. When setting this option, please ensure that its very explicit for the user that the loan may be automatically accepted and paid so that they won''t be able to cancel it. Users can cancel the loan only before Defacto sends the money to the beneficiary, which happens 24 to 48 hours before the <code>"to_pay_at"</code> date.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIPostLoan'
      responses:
        '201':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LoanAPI'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: post_loans
      summary: /loans
  /loan/documents/{document_type}:
    post:
      description: Generates a link to an archive of loan documents
      parameters:
      - in: path
        name: document_type
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiFetchLoanDocuments'
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ApiLoanDocuments'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: post_loan-documents-document-type
      summary: /loan/documents/{document_type}
  /loan/{loan_id}/cancel:
    post:
      description: Use this function to cancel a loan proposal. Available for TO_VALIDATE,VALIDATED and SCHEDULED loans.
      parameters:
      - in: path
        name: loan_id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LoanAPI'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: post_loan-loan-id-cancel
      summary: /loan/{loan_id}/cancel
  /loan/{loan_id}/validate:
    post:
      description: Use this function to accept a loan proposal. Available for TO_VALIDATE loans only.
      parameters:
      - in: path
        name: loan_id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LoanAPI'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: post_loan-loan-id-validate
      summary: /loan/{loan_id}/validate
  /loan/repayment-terms:
    put:
      description: "\n<div>\n<h3>Change repayment terms of some loans</h3>\n<p>Changing the payment method and / or date is only possible on loans that are TO_REPAY or\n TO_REPAY_FEES.\n</p>\n<p>Postponing loan repayment date is only possible once. </p>\n<p>If loan is supposed to be repaid using a sepa direct-debit, you may not be able to change the\n debited account number less than 3 days before the scheduled payment date because payment has already\n been instructed. In such case you'll get a 400 error telling you that the payment cannot be\n cancelled anymore.\n</p>\n</div>\n"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APILoanSetRepaymentTerms'
      responses:
        '200':
          description: ''
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TypedApiPage3'
      security:
      - Bearer: []
      tags:
      - Loan
      operationId: put_loan-repayment-terms
      summary: /loan/repayment-terms
components:
  schemas:
    APIRequiredInvoiceCreation:
      properties:
        address:
          allOf:
          - $ref: '#/components/schemas/Address'
          default: null
        buyer:
          $ref: '#/components/schemas/CounterpartyCreation'
        currency:
          default: EUR
          description: Currency of the invoice. Use ISO 4217 currency code.
          enum:
          - EUR
          - GBP
          type:
          - string
          - 'null'
        document:
          description: PDF binary (format base64 string)
          type: string
        due_at:
          format: date-time
          type: string
        invoice_number:
          description: Invoice number as displayed on the invoice
          type: string
        invoice_type:
          default: USER
          enum:
          - DEFACTO
          - USER
          type:
          - string
          - 'null'
        issued_at:
          format: date-time
          type: string
        metadata:
          additionalProperties: {}
          default: null
          description: This object is yours, it enables you to add custom data.
          type:
          - object
          - 'null'
        net_amount:
          default: null
          description: Amount before tax, in cents
          type:
          - integer
          - 'null'
        seller:
          $ref: '#/components/schemas/CounterpartyCreation'
        tax_amount:
          default: null
          description: Amount of tax, in cents
          type:
          - integer
          - 'null'
        to_account:
          allOf:
          - $ref: '#/components/schemas/APIAccountCreation'
          default: null
          description: Beneficiary account as mentioned on the invoice. Note that this does not determine the account where the loan payment will be made.That is done separately when calling the POST /loans endpoint.
        to_pay_amount:
          default: null
          description: Remaining amount due by buyer to seller, in cents. Set at 0 for fully paid invoices.
          type:
          - integer
          - 'null'
        total_amount:
          description: Sum of net amount and tax amount, in cents
          type: integer
      required:
      - buyer
      - document
      - due_at
      - invoice_number
      - issued_at
      - seller
      - total_amount
      type: object
    APIReadLoanDocument:
      properties:
        about_business:
          allOf:
          - $ref: '#/components/schemas/BusinessIdentifierRequired'
          default: null
        document_name:
          default: null
          description: Name of the document with the file extension
          type:
          - string
          - 'null'
        document_type:
          enum:
          - credit_card_expenses
          - invoice
          - pro_forma
          - public_procurement_ownership_act
          - public_procurement_single_copy
          - sale_purchase_agreement
          - time_sheet
          type: string
        document_url:
          type: string
        uploaded_at:
          default: null
          format: date-time
          type:
          - string
          - 'null'
        user_input:
          additionalProperties: {}
          default: null
          type:
          - object
          - 'null'
      required:
      - document_type
      - document_url
      type: object
    APICounterpartyContact:
      properties:
        email:
          format: email
          type: string
        first_name:
          type: string
        last_name:
          type: string
        phone_number:
          type: string
      required:
      - email
      - first_name
      - last_name
      - phone_number
      type: object
    LoanApiEvent:
      properties:
        entity_type:
          enum:
          - account
          - account_detail_verification
          - bill
          - borrower
          - borrower_financial_product
          - business
          - business_exposure
          - business_financial_product
          - contract
          - counterparty
          - country
          - credit_card
          - credit_line
          - data_request
          - deposit
          - due_interest
          - eligibility_request
          - enrollment
          - entity_eligibility
          - financial_product
          - flag
          - installment
          - invoice
          - loan
          - loan_log
          - mandate
          - max_exposure_deployment
          - onboarding
          - onboarding_financial_product
          - payment
          - people
          - rac
          - raw_data
          - recollection_document
          - revenue_share
          - sandbox_invoice
          - underwriting_check
          type: string
        payload:
          additionalProperties: {}
          type: object
        status:
          enum:
          - CANCELED
          - CLOSED
          - DECLINED
          - DELETED
          - INITIATED
          - ISSUE_DETECTED
          - PENDING_VALIDATION
          - SCHEDULED
          - SUBMITTED
          - TO_REPAY
          - TO_REPAY_FEES
          - TO_VALIDATE
          - VALIDATED
          type: string
        timestamp:
          format: date-time
          type: string
        transition_name:
          default: null
          type:
          - string
          - 'null'
      required:
      - entity_type
      - status
      type: object
    APIAccountCreation:
      properties:
        account_holder:
          allOf:
          - $ref: '#/components/schemas/APIBusinessIdentifier'
          default: null
          description: The business owning the account.
        account_number:
          description: The account identifier. Only IBANs are supported at the moment.
          type: string
        account_number_type:
          default: iban
          description: The type of account number (e.g. IBAN).
          enum:
          - account_number
          - iban
          - internal_id
          type: string
        bank_identifier:
          default: null
          description: The identifier of the bank.
          type:
          - string
          - 'null'
        bank_identifier_type:
          default: bic
          description: The type of bank identifier (e.g. BIC).
          enum:
          - bic
          - name
          - routing_number
          - undefined
          type: string
      required:
      - account_number
      type: object
    APICreditCardExpensesInformation:
      properties:
        counterparty:
          allOf:
          - $ref: '#/components/schemas/APICounterpartyCreation'
          description: 'Counterparty associated with the credit card expenses. Note: all expenses must be related to the same counterparty.'
        expenses:
          description: List of individual credit card expense details.
          items:
            $ref: '#/components/schemas/APICreditCardExpenseDetail'
          type: array
      required:
      - counterparty
      - expenses
      type: object
    LoanInstallment:
      properties:
        amount:
          type: integer
        date:
          format: date-time
          type: string
      required:
      - amount
      - date
      type: object
    APILoanAttachmentToCreate:
      properties:
        additional_document_data:
          additionalProperties: {}
          default: null
          description: Any additional structured data about the provided document
          type:
          - object
          - 'null'
        credit_card_expenses:
          allOf:
          - $ref: '#/components/schemas/APICreditCardExpensesInformation'
          default: null
        description:
          default: null
          description: A human readable description of the document
          type:
          - string
          - 'null'
        document_type:
          enum:
          - credit_card_expenses
          - invoice
          - pro_forma
          - public_procurement_ownership_act
          - public_procurement_single_copy
          - sale_purchase_agreement
          - time_sheet
          type: string
        invoice:
          allOf:
          - $ref: '#/components/schemas/APIInvoiceAttachmentInformation'
          default: null
        pro_forma:
          allOf:
          - $ref: '#/components/schemas/APIInvoiceAttachmentInformation'
          default: null
        public_procurement_ownership_act:
          allOf:
          - $ref: '#/components/schemas/APIPublicProcurementOwnershipActInformation'
          default: null
        public_procurement_single_copy:
          allOf:
          - $ref: '#/components/schemas/APIPublicProcurementSingleCopyInformation'
          default: null
        sale_purchase_agreement:
          allOf:
          - $ref: '#/components/schemas/APISalePurchaseAgreementAttachmentInformation'
          default: null
        time_sheet:
          allOf:
          - $ref: '#/components/schemas/APITimeSheetInformation'
          default: null
      required:
      - document_type
      type: object
    TypedApiPage3:
      properties:
        count:
          type: integer
        data:
          items:
            $ref: '#/components/schemas/LoanAPI'
          type: array
        next_page:
          default: null
          type:
          - string
          - 'null'
        page_size:
          type: integer
        previous_page:
          default: null
          type:
          - string
          - 'null'
        total:
          default: null
          type:
          - integer
          - 'null'
      required:
      - count
      - page_size
      type: object
    LoanAPI:
      properties:
        amount:
          description: 'Loan amount in cents. Maximum: 200,000 €.'
          type: integer
        beneficiary:
          allOf:
          - $ref: '#/components/schemas/LightBusiness'
          description: Entity receiving the money
        borrower:
          allOf:
          - $ref: '#/components/schemas/LightBusiness'
          description: Entity legally contracting the loan
        borrower_financial_product_id:
          default: null
          description: Specify your borrower financial product to use. This field is required only if you propose multiple financial products (which is rare)
          format: uuid
          type:
          - string
          - 'null'
        closed_at:
          default: null
          description: Loan full repayment date
          format: date-time
          type:
          - string
          - 'null'
        contract_url:
          default: null
          type:
          - string
          - 'null'
        contractual_repayment_date:
          default: null
          description: Loan repayment date at the time the loan contract was signed
          format: date-time
          type:
          - string
          - 'null'
        currency:
          description: ISO 4217 currency code.
          enum:
          - EUR
          - GBP
          type: string
        denial_reason:
          default: null
          enum:
          - ACTIVITY_DOCUMENTS_REQUIRED
          - ACTIVITY_NOT_ELIGIBLE_BORROWER
          - ALREADY_USING_FACTORING_OR_DAILLY
          - AMOUNT_SUPERIOR_TO_AVAILABLE_BALANCE
          - AVERAGE_INVOICE_SIZE_TOO_HIGH
          - BLACKLISTED_FACTORED_COUNTERPARTY
          - BORROWER_AND_COUNTERPARTY_HAVE_COMMON_DIRECTOR
          - BORROWER_CHURNED
          - BORROWER_DEFAULTED
          - BORROWER_STATUS
          - BORROWER_TO_SIGN
          - BUSINESS_AGE_BELOW_THRESHOLD
          - BUSINESS_AML_EXTREME_RISK
          - BUSINESS_COMPLIANCE_ISSUE_DETECTED
          - BUSINESS_HARD_COLLECTION
          - BUSINESS_HAS_NO_PROFESSIONAL_EMAIL
          - BUSINESS_INSOLVENCY_PROCEDURE_EXISTS
          - BUSINESS_INSOLVENCY_PROCEDURE_UNKNOWN_STATUS
          - BUSINESS_LEGAL_FORM_NOT_ELIGIBLE
          - BUSINESS_MISSING_INFORMATION
          - BUSINESS_NOT_DIFFUSIBLE
          - BUSINESS_NOT_REGISTERED
          - BUSINESS_NOT_REGISTERED_TO_RCS
          - BUSINESS_NOT_REGISTERED_TO_RCS_OR_RNE
          - BUSINESS_RADIATED
          - BUSINESS_REGION_NOT_COVERED
          - BUSINESS_UNKNOWN
          - BUSINESS_UNKNOWN_BUYER
          - BUSINESS_UNKNOWN_SELLER
          - CAPPING_EXCEEDED
          - CASHED_IN_NOT_REPAID
          - CCSF_TRANSACTION_DETECTED
          - CCSF_TRANSACTION_PENDING_DATA_REQUEST
          - CCSF_TRANSACTION_WAITING_END_INSTALLMENT_PLAN
          - COUNTERPARTY_DATA_MISSING
          - COUNTERPARTY_INSOLVENCY_PROCEDURE_EXISTS
          - COUNTERPARTY_INSOLVENCY_PROCEDURE_UNKNOWN_STATUS
          - COUNTERPARTY_KPI_MISSING
          - COUNTERPARTY_NOT_REGISTERED
          - COUNTERPARTY_NOT_SELECTED_FOR_FINANCING
          - COUNTRY_CAPPING_EXCEEDED
          - COUNTRY_NOT_ELIGIBLE_BORROWER
          - COUNTRY_NOT_ELIGIBLE_COUNTERPARTY
          - CREDIT_RISK_NOT_ELIGIBLE
          - CREDIT_RISK_NOT_ELIGIBLE_COUNTERPARTY
          - DATA_STILL_REFRESHING
          - DEBT_ARREARS_PENDING_GRACE_PERIOD
          - DEPRECATED_LATE_REPAYMENT
          - DOES_NOT_MATCH_ELIGIBILITY_CRITERIA
          - DOUBLE_MOBILIZATION
          - DPD_15_LATE_REPAYMENT_BORROWER
          - DPD_15_LATE_REPAYMENT_BUYER
          - DPD_15_LATE_REPAYMENT_SELLER
          - ELLISPHERE_RISK_INDEX
          - EXCEEDED_PARTNER_CREDIT_LINE
          - EXCESSIVE_AMOUNT_LOAN_REQUEST
          - EXCESSIVE_DURATION_LOAN_REQUEST
          - EXPOSURE_TOO_OLD
          - FILL_INVOICE_BUYER_INFORMATION
          - FILL_INVOICE_SELLER_INFORMATION
          - FINANCIAL_PRODUCT_DEACTIVATED
          - FINANCIAL_PRODUCT_NOT_IN_RELEASE
          - FINANCIAL_STATEMENT_BAD_KPI
          - FINANCIAL_STATEMENT_PARSING_ISSUE
          - HIGH_BUSINESS_RISK_INDEX
          - HIGH_LOAN_DEFAULT_INDEX
          - HIGH_LYSTA_RISK_INDEX
          - INDUSTRY_CODE_NOT_ELIGIBLE_BORROWER
          - INDUSTRY_CODE_NOT_ELIGIBLE_COUNTERPARTY
          - INSOLVENCY_EARLY_SIGNAL_DETECTED
          - INSOLVENCY_PROCEDURE_EXISTS_BORROWER
          - INSOLVENCY_PROCEDURE_EXISTS_BUYER
          - INSOLVENCY_PROCEDURE_EXISTS_SELLER
          - INSTALLMENT_PLAN_DETECTED_FOR_TAX
          - INSTALLMENT_PLAN_DETECTED_FOR_URSSAF
          - INSURANCE_QUOTE_EXPIRED
          - INVOICE_ALREADY_FINANCED
          - INVOICE_AUTO_LIQUIDATION
          - INVOICE_BLACKLIST_WORDS
          - INVOICE_COMPLIANCE_ISSUE_DETECTED
          - INVOICE_DOES_NOT_MATCH_ELIGIBILITY_CRITERIA
          - INVOICE_LME_NON_COMPLIANT
          - INVOICE_MISSING_ACCOUNT_NUMBER
          - INVOICE_MISSING_LEGAL_MENTION
          - INVOICE_MULTIPLE_STAGE
          - INVOICE_NON_ELIGIBLE_USE_CASE
          - INVOICE_NOT_ELIGIBLE_TO_CREDIT_INSURANCE
          - INVOICE_NOT_ISSUED_YET
          - INVOICE_NOT_RELATED_TO_WCR
          - INVOICE_OVERDUE
          - INVOICE_PAYABLE_BORROWER_IS_ACCOUNT_HOLDER
          - INVOICE_RECEIVABLE_ACCOUNT_MISSING_LIVE_CONNECTION
          - INVOICE_RECEIVABLE_ACCOUNT_MISSING_MANDATE
          - INVOICE_RECEIVABLE_BORROWER_IS_NOT_ACCOUNT_HOLDER
          - INVOICE_REPAYMENT_DATE_TOO_FAR_60D
          - KPI_MISSING
          - KPI_SCREENING_NOT_ELIGIBLE_BORROWER
          - KYB_PENDING
          - KYB_PENDING_USER_ACTION
          - KYC_PENDING
          - KYC_PENDING_USER_ACTION
          - LATE_REPAYMENT_BORROWER
          - LEGAL_FORM_NOT_ELIGIBLE_BORROWER
          - LEGAL_FORM_NOT_ELIGIBLE_BUYER
          - LEGAL_FORM_NOT_ELIGIBLE_COUNTERPARTY
          - LINKED_BUSINESS_IS_BLOCKED
          - LOAN_REQUEST_EXPIRED
          - LOW_CASH_BALANCE
          - LOW_FREE_CASH_FLOW
          - MAX_AMOUNT_EXCEEDED
          - MAX_AMOUNT_EXCEEDED_BORROWER
          - MAX_AMOUNT_EXCEEDED_BUYER
          - MAX_AMOUNT_EXCEEDED_SELLER
          - MISSING_COUNTERPARTY_CONTACT_INFORMATION
          - MISSING_PUBLIC_PROCUREMENT_DOCUMENT
          - NEED_BANKING_INTEGRATION
          - NOT_AN_

# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/defacto/refs/heads/main/openapi/defacto-loan-api-openapi.yml