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

# Apply a check deposit to a payment link

> Applies money from a check you deposited into Nickel Banking to one of your payment links, marking it paid for that amount. The money is already in your account, so nothing moves: the application appears in the link's `externalPayments` with `nickelBankingTransferId` set, and in the deposit's `applications`. Undo it with [Void an external payment](/api-reference/payment-link/void-an-external-payment-on-a-payment-link).

A deposit can be applied while it is still `PROCESSING`. If the bank later returns or rejects the check, Nickel voids its applications and the payment links reopen.

Send an `externalReferenceId` to make the call safe to retry: a repeat with the same reference on the same payment link returns the application it made instead of applying the deposit again.



## OpenAPI

````yaml /nickel-api-docs.yaml post /nickelBanking/checkDeposits/{checkDepositId}/apply
openapi: 3.0.3
info:
  title: Nickel API
  description: >-
    This is the specification for the Nickel Rest API. The API lets you
    programmatically interact with the Nickel server. It uses resource oriented
    URLs, accepts and returns JSON encoded payloads and uses standard HTTP
    response codes. It is not a direct API to move money, but instead allows you
    to interact with Nickel as you would on a web interface.
  termsOfService: https://www.nickel.com/terms-of-service
  contact:
    email: support@nickel.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://rest.staging.nickel.com
    description: Sandbox / Staging
  - url: https://rest.nickel.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Payment
    description: Payments from your customers to you
  - name: Disbursement
    description: Payouts made from Nickel to you
  - name: Payment Link
    description: A request for payment against an invoice
  - name: Customer
    description: A customer record to request payments against
  - name: Charge Authorization
    description: >-
      An authorization for your customer to allow you to charge their payment
      method directly
  - name: Webhook
    description: Create a webhook for nickel to send updates to
  - name: File
    description: A file you can use to attach to invoices or debit authorizations
  - name: Vendor
    description: Manage vendors for accounts payable
  - name: Bill
    description: Bills from vendors and bill payments
  - name: Bill Payment Method
    description: >-
      A merchant's payment methods used to pay bills (bank accounts and cards on
      file)
  - name: Vendor Delivery Method
    description: >-
      How a vendor receives funds — bank account (ACH), check mailing address,
      or international wire (SWIFT) details
  - name: Nickel Banking
    description: Your Nickel Banking accounts, debit cards, check deposits and transactions
externalDocs:
  description: Find out more about Nickel
  url: https://nickel.com
paths:
  /nickelBanking/checkDeposits/{checkDepositId}/apply:
    post:
      tags:
        - Nickel Banking
      summary: Apply a check deposit to a payment link
      description: >-
        Applies money from a check you deposited into Nickel Banking to one of
        your payment links, marking it paid for that amount. The money is
        already in your account, so nothing moves: the application appears in
        the link's `externalPayments` with `nickelBankingTransferId` set, and in
        the deposit's `applications`. Undo it with [Void an external
        payment](/api-reference/payment-link/void-an-external-payment-on-a-payment-link).


        A deposit can be applied while it is still `PROCESSING`. If the bank
        later returns or rejects the check, Nickel voids its applications and
        the payment links reopen.


        Send an `externalReferenceId` to make the call safe to retry: a repeat
        with the same reference on the same payment link returns the application
        it made instead of applying the deposit again.
      operationId: applyCheckDeposit
      parameters:
        - name: checkDepositId
          in: path
          description: The deposit's `id` from List check deposits or Deposit a check.
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckDepositApplyRequest'
      responses:
        '200':
          description: The application and the re-derived payment link
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalPaymentResponse'
        '400':
          description: >-
            Invalid input, or the deposit can't be applied: it was returned or
            rejected, the amount is more than it has left to apply or more than
            the payment link has left to pay, or the link is archived or a
            reusable payment link
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          $ref: '#/components/responses/NickelBankingRefused'
        '404':
          description: The check deposit or the payment link was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            `externalReferenceId` is already used on this payment link for a
            different payment: another amount, another deposit, or money
            received outside Nickel (`code` is `REFERENCE_CONFLICT`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CheckDepositApplyRequest:
      required:
        - paymentLinkId
      type: object
      properties:
        paymentLinkId:
          type: string
          description: The payment link the check pays.
          example: cmq7ab3cd000gsf02e5f6g7h8
        amountCents:
          type: integer
          format: int64
          minimum: 1
          description: >-
            Cents to apply. Defaults to the smaller of the deposit's
            `unappliedAmountCents` and what the payment link has left to pay.
          example: 100000
        externalReferenceId:
          type: string
          maxLength: 255
          description: >-
            Your own id for this application. A repeat with the same id on the
            same payment link returns the existing application instead of
            applying the deposit again, and one that differs from it (another
            amount, another deposit, or money received outside Nickel) is a
            `409`. Voiding the application frees the id.
          example: apply_8f3a2c
    ExternalPaymentResponse:
      required:
        - externalPayment
        - paymentLink
      type: object
      properties:
        externalPayment:
          $ref: '#/components/schemas/ExternalPayment'
        paymentLink:
          $ref: '#/components/schemas/PaymentLink'
    Error:
      required:
        - error
      type: object
      properties:
        error:
          type: string
          description: >-
            A human-readable error message describing what went wrong. Note that
            some 500 responses may return a plain text string instead of this
            JSON object.
        code:
          type: string
          description: >-
            A stable machine-readable code, present on the errors a client can
            act on (e.g. `SHARED_ACCOUNT` on a 409 from the ACH debit
            authorization upload, `REFERENCE_CONFLICT` on a 409 from recording
            an external payment or a debit memo, `NICKEL_BANKING_NOT_ACTIVE` or
            `MISSING_PERMISSION` on a 403 from a Nickel Banking list). Absent
            otherwise.
    ExternalPayment:
      required:
        - id
        - amountCents
        - paidAt
        - voided
      type: object
      properties:
        id:
          type: string
          example: cmr9zx1bq000gsf02h1d5w4t8
        amountCents:
          type: integer
          format: int64
          example: 2500
        paidAt:
          type: string
          format: date
          description: The date the money moved, as you stated it (YYYY-MM-DD).
          example: '2026-08-30'
        voided:
          type: boolean
          description: >-
            Whether the record has been voided. A voided record counts toward
            nothing and is not listed on the payment link; it is only returned
            by the void endpoint.
          example: false
        externalReferenceId:
          type: string
          nullable: true
          description: >-
            Your own id for this money, as passed when the record was created.
            Null when none was given (records made in the Nickel dashboard).
          example: txn_8f3a2c
        nickelBankingTransferId:
          type: string
          nullable: true
          description: >-
            Set when this record applies a check you deposited into Nickel
            Banking rather than money received outside Nickel: the deposit's
            `transferId`, as [List check
            deposits](/api-reference/nickel-banking/list-check-deposits) reports
            it. Null for money received outside Nickel.
          example: null
    PaymentLink:
      required:
        - id
        - name
        - status
        - url
        - payments
        - externalPayments
        - debitMemos
        - debitMemoAmountCents
        - requestedAmountCents
        - completedAmountCents
      type: object
      properties:
        id:
          type: string
          example: clkqzo2y1000cx9tfohoiodq1
        requestedAmountCents:
          type: integer
          format: int64
          description: The total the link asks for, including its live debit memos.
          example: 12055
        name:
          type: string
          example: INV-123
        dueDate:
          type: string
          format: date
          nullable: true
        status:
          type: string
          example: ACTIVE
        payments:
          type: array
          items:
            $ref: '#/components/schemas/Payment'
        externalPayments:
          type: array
          description: >-
            Live payments recorded against this link outside Nickel (a mailed
            check, cash). Voided records are omitted. They count toward
            completedAmountCents alongside payments.
          items:
            $ref: '#/components/schemas/ExternalPayment'
        debitMemos:
          type: array
          description: >-
            Live amounts added to this link after it was issued (an NSF fee, a
            finance charge), oldest first. Voided memos are omitted. They are
            included in requestedAmountCents.
          items:
            $ref: '#/components/schemas/DebitMemo'
        debitMemoAmountCents:
          type: integer
          format: int64
          description: >-
            Sum of debitMemos. requestedAmountCents minus this is the link's own
            amount.
          example: 0
        customerId:
          type: string
          description: >-
            ID of the customer the payment link belongs to. Omitted for links
            created in the dashboard without a customer.
        url:
          type: string
          format: uri
          example: https://nickel.nickelpayments.com/pay/Ahndhz
        completedAmountCents:
          type: integer
          format: int64
        feePassthroughPercent:
          type: integer
          nullable: true
          description: >-
            Percent (0-100) of the card processing fee passed through to the
            payer for this payment link. null means no per-link override (the
            customer/organization setting applies).
          example: 100
        creditCardEnabled:
          type: boolean
          nullable: true
          description: >-
            Whether the payer can pay this link by credit card. null means no
            per-link override (the organization setting applies).
          example: true
        achEnabled:
          type: boolean
          nullable: true
          description: >-
            Whether the payer can pay this link by ACH/bank transfer. null means
            no per-link override (the organization setting applies).
          example: true
        amountEditable:
          type: boolean
          description: Whether the payer can edit the payment amount at checkout.
          example: false
    Payment:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          example: SUCCEEDED
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
        amountInCents:
          type: integer
          format: int64
          example: 10000
        chargedAmountInCents:
          type: integer
          format: int64
          example: 10290
        platformFeeInCents:
          type: integer
          format: int64
          example: 290
        paymentLinkId:
          type: string
          nullable: true
        paymentMethod:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        disbursement:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Disbursement'
        refunds:
          type: array
          items:
            $ref: '#/components/schemas/Refund'
        createdAt:
          type: number
        estimatedDisbursementDate:
          type: string
          nullable: true
    DebitMemo:
      required:
        - id
        - amountCents
        - description
        - voided
        - createdAt
      type: object
      properties:
        id:
          type: string
          example: cmrb2k7w1000hsf02q8d9x3vn
        amountCents:
          type: integer
          format: int64
          example: 3500
        description:
          type: string
          description: Shown to your customer on the payment page next to the amount.
          example: Returned check fee
        voided:
          type: boolean
          description: >-
            Whether the memo has been voided. A voided memo counts toward
            nothing and is not listed on the payment link; it is only returned
            by the void endpoint.
          example: false
        externalReferenceId:
          type: string
          nullable: true
          description: Your own id for the memo, as passed when it was recorded.
          example: DM-1042
        createdAt:
          type: string
          format: date-time
    Fee:
      type: object
      properties:
        type:
          type: string
          example: CREDIT_CARD_FEE
        amountInCents:
          type: integer
          format: int64
          example: 290
    PaymentMethod:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - ACH
            - Card
            - NickelBalance
          description: '`NickelBalance` is a Nickel Banking account.'
        achDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ACHDetails'
        cardDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CardDetails'
        nickelBalanceDetails:
          nullable: true
          description: Set when `type` is `NickelBalance`; null otherwise.
          allOf:
            - $ref: '#/components/schemas/NickelBalanceDetails'
        billingDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BillingDetails'
    Disbursement:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          example: PENDING
        amountInCents:
          type: integer
          format: int64
          example: 10000
        bankName:
          type: string
          example: JP Morgan Chase
        accountNumberLastFour:
          type: string
        paymentIds:
          type: array
          items:
            type: string
            example: clkqzo2y1000cx9tfohoiodq1
        createdAt:
          type: string
          format: date
          nullable: true
        paidAt:
          type: string
          format: date
          nullable: true
    Refund:
      type: object
      properties:
        id:
          type: string
        amountCents:
          type: integer
          format: int64
          example: 515
        refundDate:
          type: string
          format: date-time
        voided:
          type: boolean
    ACHDetails:
      type: object
      properties:
        bankName:
          type: string
          example: JP Morgan Chase
        routingNumber:
          type: string
        accountNumberLastFour:
          type: string
    CardDetails:
      type: object
      properties:
        brand:
          type: string
          nullable: true
          example: visa
        last4:
          type: string
          nullable: true
        holderName:
          type: string
          nullable: true
        expMonth:
          type: string
          nullable: true
          example: '2'
        expYear:
          type: string
          nullable: true
          example: '2030'
    NickelBalanceDetails:
      type: object
      description: The Nickel Banking account a `NickelBalance` payment method pays from.
      properties:
        nickname:
          type: string
          nullable: true
          description: The name you gave the account in the dashboard, if any.
          example: Operating
        accountNumberLastFour:
          type: string
          nullable: true
          example: '6789'
        spendableCents:
          type: integer
          format: int64
          nullable: true
          description: >-
            What the account can pay right now, in cents — its available balance
            less money already committed to other payments. A bill payment
            larger than this fails.
          example: 125000
    BillingDetails:
      type: object
      properties:
        name:
          type: string
          nullable: true
        companyName:
          type: string
          nullable: true
        street:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        zip:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
  responses:
    NickelBankingRefused:
      description: >-
        Nickel Banking data this API key can't read. `code` is
        `NICKEL_BANKING_NOT_ACTIVE` when your organization has no active Nickel
        Banking account, or `MISSING_PERMISSION` when the team member the API
        key belongs to lacks the permission this list needs; the message names
        it. Also returned, without a `code`, for an API key without REST API
        access.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````