Search code examples
javaquickbooks-onlineintuit-partner-platform

Quickbooks API - How to create a charge using stored bank account


I am using QuickBooks Online. Using payments api I have stored customer's bank account info to Quickbooks. Now I want to create a charge against the stored bank account using payments api. I couldn't find a way to do that. I know how to create a charge using stored credit card but I couldn't find a way to provide bank account info instead while making /quickbooks/v4/payments/charges api call.

Can a charge be created against stored bank account?


Solution

  • Read the docs on eChecks / debits:

    Specifically, this section:

    Create a debit

    REQUEST URL

    Sandbox Base URL: https://sandbox.api.intuit.com

    Production Base URL: https://api.intuit.com

    Operation:

    POST /quickbooks/v4/payments/echecks

    Content type: application/json

    To process an E-check, you create a new debit object.

    Where it shows an example like this:

    {  
      "amount":"1.11",
      "bankAccount":{  
          "name":"Fname LName",
          "routingNumber":"490000018",
          "accountNumber":"11000000333456781",
          "accountType":"PERSONAL_CHECKING",
          "phone":"1234567890"
      },
      "context":{  
          "deviceInfo":{  
            "id":"1",
            "type":"type",
            "longitude":"longitude",
            "latitude":"",
            "phoneNumber":"phonenu",
            "macAddress":"macaddress",
            "ipAddress":"34"
          }
      },
      "paymentMode":"WEB",
      "checkNumber":"12345678",
      "description":"Check Auth test call"
    }
    

    Together with a note that says:

    bankAccountOnFile:
    required if neither bankAccount nor token are specified
    string 
    The bank account details that have been previously stored on file.
    

    TLDR: Use the create a debit endpoint and specify the bankAccountOnFile id value in the request.