Novicap Dynamic Discounting API

Dynamic discounting suppliers, invoices, payment instructions and adjustments.

OpenAPI Specification

novicap-dynamic-discounting-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Novicap Confirming Standard Dynamic Discounting API
  version: v1
  description: Novicap working-capital API. Transcribed faithfully from the published API Reference at https://developer.novicap.com/ (operations, paths, methods, parameters, auth scheme and documented HTTP error codes). Request/response property schemas are only partially documented by the provider; bodies are modelled as open objects and MUST NOT be treated as an authoritative field contract. Provider does not publish an OpenAPI document; this is an API Evangelist generation from the public docs.
  contact:
    name: Novicap Support
    email: support@novicap.com
    url: https://developer.novicap.com/
servers:
- url: https://api.novicap.com/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Dynamic Discounting
  description: Dynamic discounting suppliers, invoices, payment instructions and adjustments.
paths:
  /dynamic_discounting/suppliers:
    post:
      tags:
      - Dynamic Discounting
      operationId: addDynamicDiscountingSuppliers
      summary: Add dynamic discounting suppliers
      parameters:
      - $ref: '#/components/parameters/ProductId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplierInput'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    get:
      tags:
      - Dynamic Discounting
      operationId: retrieveDynamicDiscountingSuppliers
      summary: Retrieve dynamic discounting suppliers
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
  /dynamic_discounting/invoices:
    post:
      tags:
      - Dynamic Discounting
      operationId: addDynamicDiscountingInvoices
      summary: Add dynamic discounting invoices
      description: Invoices with a matching supplier and reference that are not yet part of a payment instruction are updated rather than duplicated.
      parameters:
      - $ref: '#/components/parameters/ProductId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceInput'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    get:
      tags:
      - Dynamic Discounting
      operationId: retrieveDynamicDiscountingInvoices
      summary: Retrieve dynamic discounting invoices
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
  /dynamic_discounting/invoices/{transaction_id}:
    delete:
      tags:
      - Dynamic Discounting
      operationId: deleteDynamicDiscountingInvoice
      summary: Delete a dynamic discounting invoice
      parameters:
      - $ref: '#/components/parameters/ProductId'
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /dynamic_discounting/payment_instructions:
    post:
      tags:
      - Dynamic Discounting
      operationId: createDynamicDiscountingPaymentInstruction
      summary: Create a dynamic discounting payment instruction
      parameters:
      - $ref: '#/components/parameters/ProductId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInstructionInput'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    get:
      tags:
      - Dynamic Discounting
      operationId: retrieveDynamicDiscountingPaymentInstructions
      summary: Retrieve dynamic discounting payment instructions
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
  /dynamic_discounting/payment_adjustments:
    post:
      tags:
      - Dynamic Discounting
      operationId: createDynamicDiscountingPaymentAdjustment
      summary: Create a dynamic discounting payment adjustment
      parameters:
      - $ref: '#/components/parameters/ProductId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentAdjustmentInput'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '201':
          $ref: '#/components/responses/Created'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
    get:
      tags:
      - Dynamic Discounting
      operationId: retrieveDynamicDiscountingPaymentAdjustments
      summary: Retrieve dynamic discounting payment adjustments
      parameters:
      - $ref: '#/components/parameters/ProductId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
  /dynamic_discounting/payment_adjustments/{transaction_id}:
    delete:
      tags:
      - Dynamic Discounting
      operationId: deleteDynamicDiscountingPaymentAdjustment
      summary: Delete a dynamic discounting payment adjustment
      parameters:
      - $ref: '#/components/parameters/ProductId'
      - $ref: '#/components/parameters/TransactionId'
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  responses:
    Forbidden:
      description: Forbidden — the endpoint is not enabled for this account. Contact support@novicap.com to request access.
    Created:
      description: Resource created (application/json).
      content:
        application/json:
          schema:
            type: object
            additionalProperties: true
    Unauthorized:
      description: Unauthorized — missing or invalid API key.
    Success:
      description: Successful response (application/json).
      content:
        application/json:
          schema:
            type: object
            additionalProperties: true
    ServerError:
      description: Server error (500 / 502 / 503 / 504).
    BadRequest:
      description: Bad Request — the request was malformed or invalid.
    NotFound:
      description: Not Found — the referenced resource does not exist.
  parameters:
    TransactionId:
      name: transaction_id
      in: path
      required: true
      description: Transaction identifier of the resource (e.g. DDI-ABCD, I-ABCD).
      schema:
        type: string
    ProductId:
      name: product_id
      in: query
      required: true
      description: Identifier of the Novicap product the request operates against.
      schema:
        type: integer
  schemas:
    InvoiceInput:
      type: object
      description: Invoice payload. Documented deduplication key is (supplier, reference). Remaining fields are only partially documented by the provider.
      additionalProperties: true
      properties:
        supplier:
          type: string
          description: Supplier reference the invoice belongs to.
        reference:
          type: string
          description: Invoice reference used for deduplication.
    SupplierInput:
      type: object
      description: Supplier payload. Field contract is only partially documented by the provider.
      additionalProperties: true
    PaymentAdjustmentInput:
      type: object
      description: Payment adjustment payload. Field contract is only partially documented.
      additionalProperties: true
    PaymentInstructionInput:
      type: object
      description: Payment instruction payload. Field contract is only partially documented.
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key issued from the Novicap user profile, sent as "Authorization: Bearer {api_key}". The key may alternatively be supplied as an "api_key" field in the JSON payload. OAuth 2.0 is available on request. A "product_id" is required on every request.'
x-provenance:
  generated: '2026-07-20'
  method: generated
  source: https://developer.novicap.com/