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

# Upload an ACH Debit Authorization PDF



## OpenAPI

````yaml /nickel-api-docs.yaml post /customer/{customerId}/uploadACHDebitAuthorizationPdf
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 Payout Method
    description: Vendor bank account and delivery method management
externalDocs:
  description: Find out more about Nickel
  url: https://nickel.com
paths:
  /customer/{customerId}/uploadACHDebitAuthorizationPdf:
    post:
      tags:
        - Charge Authorization
      summary: Upload an ACH Debit Authorization PDF
      operationId: uploadACHDebitAuthorizationPdf
      parameters:
        - name: customerId
          in: path
          description: ID of the customer that needs to be fetched
          required: true
          schema:
            type: string
      requestBody:
        description: ACH debit authorization details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DebitAuthorizationUploadPDFRequest'
        required: true
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeAuthorization'
        '400':
          description: >-
            Invalid input (e.g. validation error, wrong file type, or invalid
            expiration date)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: File does not belong to your account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: File not found
          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:
    DebitAuthorizationUploadPDFRequest:
      required:
        - accountNumber
        - accountType
        - fileId
        - routingNumber
      type: object
      properties:
        routingNumber:
          type: string
        accountNumber:
          type: string
        accountType:
          type: string
          enum:
            - checking
            - savings
        fileId:
          type: string
        memo:
          type: string
          nullable: true
        transactionLimitCents:
          type: integer
          format: int64
          nullable: true
        expirationDate:
          type: string
          format: date
          nullable: true
    ChargeAuthorization:
      type: object
      properties:
        id:
          type: string
        customerId:
          type: string
        paymentMethod:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        transactionLimitInCents:
          type: integer
          format: int64
          nullable: true
        expiresAt:
          type: number
          nullable: true
          description: Expiration timestamp as epoch milliseconds
        active:
          type: boolean
        url:
          type: string
          nullable: true
    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.
    PaymentMethod:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - ACH
            - Card
        achDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ACHDetails'
        cardDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CardDetails'
        billingDetails:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BillingDetails'
    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'
    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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````