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

# Register direct payment

> Register money the debtor paid straight to you rather than to your debt collection partner, against the case voucher it settles.

Reference the case voucher by your own `referenceId` — the invoice number you sent it under — or by the `caseVoucherId` Debbie returned when it was created; exactly one of the two. The whole payment is applied to that one voucher, so a payment of 1,200.00 on an invoice of 1,200.00 settles it. A payment that covers several invoices has to be sent as one request per invoice.

The payment is always registered with source `CREDITOR`; there is no field for it. That is what tells the settlement it never passed through your debt collection partner.

Send an `Idempotency-Key` header, one per request, so a retry within 48 hours is answered with the original result instead of registering the payment again. See [Idempotency](/api-reference/idempotency).

**Required scope:** `write:case-vouchers`



## OpenAPI

````yaml POST /v1/{tenantId}/direct-payments
openapi: 3.1.0
info:
  title: Debbie Creditor API Docs
  description: >-
    The Debbie Creditor API is a RESTful interface allowing you, as a creditor,
    to programmatically send data to your debt collection partner and access
    your data in the platform. It provides predictable URLs for accessing
    resources, and uses built-in HTTP features to receive commands and return
    responses. This makes it easy to integrate with your own systems, for
    example your ERP or invoicing system.
  version: v1.0.0
  x-logo:
    url: https://debbie-platform.github.io/creditor-api-docs/deb-logo.svg
servers:
  - url: https://api.debbiecollect.com
security:
  - bearerAuth: []
tags:
  - name: Customers
    description: Endpoints for interacting with customers
  - name: Files
    description: Endpoints for interacting with files
  - name: Documents
    description: Endpoints for attaching documentation to a case or to your creditor
  - name: Direct payments
    description: Endpoints for registering payments made directly to you
  - name: Voucher types
    description: >-
      Endpoints for reading the voucher types available on your debt collection
      partner
  - name: Billings
    description: Endpoints for reading how a settlement is made up
externalDocs:
  description: Find out more about Debbie here
  url: https://debbiecollect.com
paths:
  /v1/{tenantId}/direct-payments:
    post:
      tags:
        - Direct payments
      summary: Register direct payment
      description: >-
        Register money the debtor paid straight to you rather than to your debt
        collection partner, against the case voucher it settles.


        Reference the case voucher by your own `referenceId` — the invoice
        number you sent it under — or by the `caseVoucherId` Debbie returned
        when it was created; exactly one of the two. The whole payment is
        applied to that one voucher, so a payment of 1,200.00 on an invoice of
        1,200.00 settles it. A payment that covers several invoices has to be
        sent as one request per invoice.


        The payment is always registered with source `CREDITOR`; there is no
        field for it. That is what tells the settlement it never passed through
        your debt collection partner.


        Send an `Idempotency-Key` header, one per request, so a retry within 48
        hours is answered with the original result instead of registering the
        payment again. See [Idempotency](/api-reference/idempotency).


        **Required scope:** `write:case-vouchers`
      operationId: create-direct-payment
      parameters:
        - in: path
          name: tenantId
          schema:
            type: string
            format: uuid
          required: true
          description: >-
            Id of your debt collection partner's tenant. You can find it on the
            API page in the creditor portal.
        - in: query
          name: creditorId
          schema:
            type: string
            format: uuid
          required: true
          description: >-
            Your creditor id. You can find it on the API page in the creditor
            portal.
      requestBody:
        description: The payment
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewDirectPayment'
            example:
              caseVoucherReferenceId: D12412347
              amount: 120000
              date: '2026-06-04'
              currency: DKK
        required: true
      responses:
        '201':
          description: The payment was registered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectPayment'
              example:
                caseId: 3f1c2d4e-5a6b-7c8d-9e0f-1a2b3c4d5e6f
                caseVoucherId: 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
                amount: 120000
                currency: DKK
                date: '2026-06-04T00:00:00.000Z'
                paidCaseVoucher:
                  caseVoucherId: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
                  referenceId: D12412347
                  amount: -120000
        '400':
          description: >-
            The payment cannot be placed on the referenced case voucher.
            `message` says why:


            - `Reference id … matches more than one case voucher, so the payment
            cannot be placed` — send `caseVoucherId` instead.

            - `Payment is in … but case voucher … is in …` — the `currency` sent
            does not match the voucher's.

            - `Case voucher … is expired and can no longer be paid`.

            - `Case voucher … is not a debt` — the voucher is a payment or a
            credit note, not an invoice or a fee.

            - `Amount … exceeds the … still outstanding on case voucher …` — the
            amount is more than what is left on the voucher, counting payments
            already registered against it.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: >-
            No case voucher matched: `No case voucher found with id …` or `No
            case voucher found with reference id …`. The voucher does not exist
            within your creditor, has been deleted, or is not on a case yet.
        '422':
          $ref: '#/components/responses/UnprocessableContent'
components:
  schemas:
    NewDirectPayment:
      type: object
      properties:
        caseVoucherId:
          type: string
          format: uuid
          description: >-
            Debbie's id of the case voucher the money paid off, as returned when
            the voucher was created. It must belong to the creditor. Give either
            this or `caseVoucherReferenceId`, not both.
        caseVoucherReferenceId:
          type: string
          description: >-
            Your reference for the case voucher the money paid off — normally
            the invoice number. It is looked up within your creditor, and must
            match exactly one case voucher. Give either this or `caseVoucherId`,
            not both.
        amount:
          type: integer
          description: >-
            The amount paid, positive, in the minor unit. 1,200.00 is sent as
            120000. It cannot exceed what is still outstanding on the referenced
            case voucher.
        date:
          type: string
          description: The date the money was received. Defaults to now.
        currency:
          $ref: '#/components/schemas/Currency'
          description: >-
            Optional. When given, it must match the currency of the referenced
            case voucher — it is a check, not a conversion.
        text:
          type: string
          description: Free text shown on the payment.
      required:
        - amount
      description: >-
        Exactly one of `caseVoucherId` and `caseVoucherReferenceId` must be
        given; the other may be left out or null. A body with both or neither is
        rejected with `Give exactly one of caseVoucherId and
        caseVoucherReferenceId`.
    DirectPayment:
      type: object
      properties:
        caseId:
          type: string
          format: uuid
          description: Id of the case the payment was registered on
        caseVoucherId:
          type: string
          format: uuid
          description: Id of the created deposit
        amount:
          type: integer
        currency:
          $ref: '#/components/schemas/Currency'
        date:
          type: string
        paidCaseVoucher:
          type: object
          description: The case voucher the payment was applied to
          properties:
            caseVoucherId:
              type: string
              format: uuid
            referenceId:
              type:
                - string
                - 'null'
            amount:
              type: integer
              description: The full amount of the voucher, negative because it is a debt
    Currency:
      type: string
      enum:
        - DKK
        - SEK
        - NOK
        - USD
        - EUR
        - GBP
        - CHF
      description: Currency
  responses:
    UnauthorizedError:
      description: Access token missing or invalid
    UnprocessableContent:
      description: Unable to process the contained instructions.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authentication with an API key can be done by using a bearer token in
        the Authorization header. This is done using the following format
        `Authorization: Bearer {token}`. API keys are issued and revoked
        directly from the creditor portal under Developers > API.

````