> ## 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.

# Deposit a check

> Deposits a check into one of your Nickel Banking accounts from photos of its front and back, sent as `multipart/form-data`. The deposit starts `PROCESSING`; the money is yours once it is `DEPOSITED`.

Pass `applications` to apply the check to the invoices it pays in the same request. If any application is refused, nothing is deposited.

Retrying is safe. The photos identify the check: sending the same two photos again returns the deposit they already made, and nothing is sent to the bank twice. `applications` sent with a repeat are not written, so check the returned deposit's `applications` and apply any that are missing with [Apply a check deposit to a payment link](/api-reference/nickel-banking/apply-a-check-deposit-to-a-payment-link).



## OpenAPI

````yaml /nickel-api-docs.yaml post /nickelBanking/checkDeposits
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:
    post:
      tags:
        - Nickel Banking
      summary: Deposit a check
      description: >-
        Deposits a check into one of your Nickel Banking accounts from photos of
        its front and back, sent as `multipart/form-data`. The deposit starts
        `PROCESSING`; the money is yours once it is `DEPOSITED`.


        Pass `applications` to apply the check to the invoices it pays in the
        same request. If any application is refused, nothing is deposited.


        Retrying is safe. The photos identify the check: sending the same two
        photos again returns the deposit they already made, and nothing is sent
        to the bank twice. `applications` sent with a repeat are not written, so
        check the returned deposit's `applications` and apply any that are
        missing with [Apply a check deposit to a payment
        link](/api-reference/nickel-banking/apply-a-check-deposit-to-a-payment-link).
      operationId: createCheckDeposit
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CheckDepositCreateRequest'
      responses:
        '200':
          description: The deposit, as created or as these photos already made it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckDepositResponse'
        '400':
          description: >-
            A missing or unreadable photo, invalid fields, an application an
            invoice refuses, or Nickel Banking not enabled for your organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          $ref: '#/components/responses/NickelBankingRefused'
        '404':
          description: The account, or a payment link in `applications`, was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: A photo is larger than 25 MB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: >-
            Internal server error. Retrying with the same photos is safe: it
            cannot deposit the check twice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CheckDepositCreateRequest:
      required:
        - front
        - back
        - accountId
        - amountCents
      type: object
      properties:
        front:
          type: string
          format: binary
          description: >-
            A photo of the front of the check, with the payer, the amount and
            the MICR line along the bottom. JPEG, PNG or WebP, up to 25 MB.
        back:
          type: string
          format: binary
          description: A photo of the back of the check. JPEG, PNG or WebP, up to 25 MB.
        accountId:
          type: string
          description: >-
            The Nickel Banking account to deposit into (an `id` from List Nickel
            Banking accounts).
        amountCents:
          type: integer
          format: int64
          minimum: 1
          description: The check's amount in cents, exactly as written on it.
          example: 155055
        payerName:
          type: string
          description: Who wrote the check, as printed on it.
          example: Acme Corp
        description:
          type: string
          description: A note on the deposit, for example what the check is for.
        applications:
          type: string
          description: >-
            A JSON array of the payment links the check pays, applied with the
            deposit: `[{"paymentLinkId": "...", "amountCents": 100000}]`.
            `amountCents` is optional on each and defaults to the smaller of
            what the check has left and what the link has left to pay. Together
            the amounts can't exceed the check.
          example: '[{"paymentLinkId":"cmq7ab3cd000gsf02e5f6g7h8","amountCents":100000}]'
    CheckDepositResponse:
      type: object
      properties:
        checkDeposit:
          $ref: '#/components/schemas/CheckDeposit'
    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.
    CheckDeposit:
      type: object
      properties:
        id:
          type: string
          example: cmf2dep0001qz8x4k2v7c9d3e
        transferId:
          type: string
          nullable: true
          description: >-
            The Nickel Banking transfer the deposit books in through — what a
            payment link's `externalPayments[].nickelBankingTransferId` names
            when this deposit paid it. Null only on deposits made before
            deposits carried a transfer; those can't be applied.
          example: cmf2nbt0001qz8x4k2v7c9d3e
        accountId:
          type: string
          description: The account the check was deposited into.
        amountCents:
          type: integer
          format: int64
          description: >-
            The amount entered when the check was deposited, in cents. The bank
            may accept less.
          example: 155055
        status:
          type: string
          description: >-
            `PROCESSING` until the bank settles the check (including while it
            reviews it). `DEPOSITED` once the money is yours. `REJECTED` if the
            bank refused it outright. `RETURNED` if the bank reversed it after
            depositing it.
          enum:
            - PROCESSING
            - DEPOSITED
            - RETURNED
            - REJECTED
        payerName:
          type: string
          nullable: true
          example: Acme Corp
        description:
          type: string
          nullable: true
          example: Q3 retainer
        returnReason:
          type: string
          nullable: true
          description: The bank's reason, when `RETURNED`.
        rejectionReason:
          type: string
          nullable: true
          description: The bank's reason, when `REJECTED`.
        createdAt:
          type: string
          format: date-time
        depositedAt:
          type: string
          format: date-time
          nullable: true
          description: When the money settled into the account. Null until `DEPOSITED`.
        unappliedAmountCents:
          type: integer
          format: int64
          description: >-
            Money on the check not yet applied to a payment link, in cents: the
            smaller of the entered and accepted amounts, less the live
            applications, and zero once the check is returned or rejected.
          example: 55055
        applications:
          type: array
          description: Every application, voided ones included, newest first.
          items:
            $ref: '#/components/schemas/CheckDepositApplication'
    CheckDepositApplication:
      type: object
      description: >-
        One payment link paid from a check deposit. It is the same record the
        payment link lists in `externalPayments`, and its `id` is what [Void an
        external
        payment](/api-reference/payment-link/void-an-external-payment-on-a-payment-link)
        takes to unapply it.
      properties:
        id:
          type: string
          example: cmr9zx1bq000gsf02h1d5w4t8
        amountCents:
          type: integer
          format: int64
          example: 100000
        paymentLinkId:
          type: string
          nullable: true
          example: cmq7ab3cd000gsf02e5f6g7h8
        voided:
          type: boolean
          description: >-
            True once voided. A voided application counts toward nothing, and
            its money is available to apply again.
        voidReason:
          type: string
          nullable: true
          description: >-
            Set when Nickel voided the application itself: the bank returned
            (`DEPOSIT_RETURNED`) or rejected (`DEPOSIT_REJECTED`) the check, or
            accepted less than had been applied (`AMOUNT_ADJUSTED`). Null for a
            live application and for one you unapplied.
          enum:
            - DEPOSIT_RETURNED
            - DEPOSIT_REJECTED
            - AMOUNT_ADJUSTED
  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

````