Integrating with Plaid for ACH Buyer Verification

Created by Richard Moore, Modified on Tue, 19 Sep, 2023 at 3:07 PM by Richard Moore

When adding new ACH payment methods, Exact uses Plaid to validate the bank account information provided before a payment can be made. Both Merchants and Partners planning using the API to create ACH payments must integrate with Plaid to verify a customer's banking information.


Instructions

  1. Create your Plaid account

  2. Follow the instructions on Plaid’s quick start guide: Documentation | Plaid 

  3. Choose Ruby as the language for the samples

  4. Once you have the app up and running, click the Plaid Link and go through the steps to add a bank account

  5. Click the /auth/get/ endpoint and verify that you see your account details:

  1. Stop the app.

  2. Download and apply the attachedpatch.difffile at the end of this article .

  3. Rebuild/restart the app.

  4. Again, add a bank account, and this time you should see an additional section for a Processor Token:

  5. Send that request and record the token.

  6. Send the /auth/get request again and record the account number, the routing number and the account type, if present.

  7. Go to Postman and create an ACH payment method:

POST /account/{{accountId}}/payment-method
{
    "type": "ach",
    "billingDetails": {
        "name": "Plaid Test",
        "businessName": "Plaid Test",
        "email": "[email protected]",
        "address": {
            "line1": "21 Jump Street",
            "city": "Beverley Hills",
            "state": "CA",
            "country": "USA",
            "postalCode": "90210"
        }
    },
    "ach": {
        "routingNumber": "011401533",
        "accountNumber": "1111222233331111",
        "bankAccountType": "savings",
        "plaidToken": "processor-sandbox-2f1066d8-140d-47b2-bea0-bbbc56f7a515"
    }
}


And the response should indicate that the account is verified:

{
    "type": "ach",
    "token": "241b3b8c-95a2-429f-8376-3da8ba913992",
    "updatedAt": "2023-09-14T04:46:20.612Z",
    "createdAt": "2023-09-14T04:46:20.613Z",
    "billingDetails": {
        "email": "[email protected]",
        "name": "Plaid Test",
        "businessName": "Plaid Test",
        "address": {
            "city": "Beverley Hills",
            "country": "USA",
            "line1": "21 Jump Street",
            "postalCode": "90210",
            "state": "CA"
        }
    },
    "ach": {
        "bankAccountType": "savings",
        "verified": true,
        "lastFour": "1111"
    }
}


Find the customer in Dwolla Sandbox:

"id": "00eacb82-1581-4447-9990-a97ca35d1223",
"firstName": "Plaid",
"lastName": "Test",
"email": "[email protected]",
"type": "unverified",
"status": "unverified",
"created": "2023-09-14T04:20:20.557Z",
"businessName": "Plaid Test",
"correlationId": "secure-65028a04429c4c1bf7bdb187"


One verified checking account:

"id": "280a01ee-793d-4d1a-b160-d141975abdda",
"status": "verified",
"type": "bank",
"bankAccountType": "checking",
"name": "FundSrc 07099726-091c-41d6-beab-9f0cd5db73c4",
"created": "2023-09-14T04:20:25.301Z",
"removed": false,
"channels": [
    "ach",
    "real-time-payments"
],
"bankName": "SANDBOX TEST BANK",
"fingerprint": "9b6744931e9db6a27af5fdd9f065880bc21cd45fdcfee9d83a7c27bd35af2b49"


And another verified savings account:

"id": "5c6a983e-86fc-4d75-a82e-1335583fa5f4",
"status": "verified",
"type": "bank",
"bankAccountType": "savings",
"name": "FundSrc 241b3b8c-95a2-429f-8376-3da8ba913992",
"created": "2023-09-14T04:46:22.240Z",
"removed": false,
"channels": [
  "ach",
  "real-time-payments"
],
"bankName": "SANDBOX TEST BANK",
"fingerprint": "ac07032c81148bd80b3854c5893dc693e78abe6981ebebaaf1460553841dd2be"



Attachments (1)

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article