Plaid Authorization (Bank Account Verification)

This endpoint allows you to instantly link a customer's bank account using Plaid. It's the fastest and most secure way to verify a bank account and enable ACH payments

Plaid Authorization Verification

Instantly add and verify a customer’s bank account as a Paynote funding source using Plaid’s secure login flow. Once verified, you can immediately initiate ACH debits, credits, or subscriptions.

Prerequisites

  • Customer: you must already have a customer in Paynote
    👉 Create a Customer
  • Plaid public key: your live or test key from Plaid
  • Webhook listener: set up to receive funding-source events
    👉 Funding Source Webhooks

Quick Start

  1. Create (or lookup) your Customer
    Use the Create a Customer endpoint and grab the returned user_id.

  2. Build the Plaid Link URL

    https://paynote.seamlesschex.com/#/bank-account/{PUBLIC_KEY}/{USER_ID}?successUrl={SUCCESS_URL}&cancelUrl={CANCEL_URL}
    
    • Replace {PUBLIC_KEY} with your Paynote Sandbox Public Key for testing or Live Public Key in production
    • Replace {USER_ID} with the ID from step 1
    • Set successUrl / cancelUrl to wherever you want customers sent

    Production

    https://paynote.seamlesschex.com/#/bank-account/pk_live_…/usr_abc123?successUrl=https://yourapp.com/success&cancelUrl=https://yourapp.com/cancel
    

    Sandbox

    https://paynote-sandbox.seamlesschex.com/#/bank-account/pk_test_…/usr_abc123?successUrl=https://yourapp.com/success&cancelUrl=https://yourapp.com/cancel
    
  3. Send the Link to Your Customer
    Email, SMS, or embed it behind a “Connect Bank Account” button.

  4. Listen for Verification
    Watch your webhook endpoint for a funding source event with status Verified.

  5. Start Transactions
    Once verified you can call any of:


Embedding in an Iframe (Optional)

If you want an in-page modal:

<dialog id="bank_modal"
        style="width:100%;height:100%;border:none;position:fixed;inset:0;
               background:rgba(0,0,0,0.6);display:none;z-index:999;">
  <iframe id="bank_iframe"
          src="https://paynote.seamlesschex.com/#/bank-account/{PUBLIC_KEY}/{USER_ID}"
          style="position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
                 border:none;border-radius:8px;overflow:auto;
                 width: 412px;height: 721px;">
  </iframe>
</dialog>

Then in your JS:

function onSuccess(data) {
        console.log('Bank linked:', data);
        // e.g. enable "Make a Payment" button
    }

    function onError(data) {
        console.error('Link failed:', data);
        // e.g. show an error message
    }

    function onClose(data) {
        console.log( 'Ifame closed', data )
        // There should be your code here that will close the iframe.
    }

    window.addEventListener('message', event => {
        if (event.data.event === 'callSuccessFunction') onSuccess(event.data);
        if (event.data.event === 'callErrorFunction')   onError(event.data);
        if (event.data.event === 'callCloseFunction')   onClose(event.data);
    });

Summary

  • Step 1: Create customer → get user_id
  • Step 2: Build Plaid link URL
  • Step 3: Send link or show in iframe
  • Step 4: Wait for “Verified” webhook
  • Step 5: Process ACH debits, credits, or subscriptions immediately

This flow eliminates manual verification and gets your customers up and running with ACH in minutes.

Do not initiate payments until you receive funding-source.verified.

See Funding Source Webhooks → for full payload details.