What do you want to automate

with Plaid and Google Cloud Document AI?

Prompt, edit and deploy AI agents that connect to Plaid, Google Cloud Document AI and 2,500+ other apps in seconds.

Trusted by 1,000,000+ developers from startups to Fortune 500 companies

Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
New Accounts Available (Instant) from the Plaid API

Emit new event when there are new accounts available at the Financial Institution. See the documentation

 
Try it
New Event (Instant) from the Plaid API

Emit new event when there are changes to Plaid Items or the status of asynchronous processes. See the documentation

 
Try it
Sync Updates Available (Instant) from the Plaid API

Emit new event when there are new updates available for a connected account. See the documentation

 
Try it
Create Access Token with the Plaid API

Exchange a Link public_token for an API access_token. See the documentation

 
Try it
Create Sandbox Public Token with the Plaid API

Creates a valid public_token for an arbitrary institution ID, initial products, and test credentials. See the documentation

 
Try it
Create User with the Plaid API

Creates a user ID and token to be used with Plaid Check, Income, or Multi-Item Link flow. See the documentation

 
Try it
Get Real-Time Balance with the Plaid API

Get the real-time balance for each of an Item's accounts. See the documentation

 
Try it
Get Transactions with the Plaid API

Retrieves user-authorized transaction data for a specified date range. See the documentation

 
Try it
Integrate the Plaid API with the Google Cloud Document AI API
Setup the Plaid API trigger to run a workflow which integrates with the Google Cloud Document AI API. Pipedream's integration platform allows you to integrate Plaid and Google Cloud Document AI remarkably fast. Free for developers.

Overview of Plaid

The Plaid API offers a multitude of financial data operations, enabling developers to manage and interact with user bank accounts, transactions, identity info, and more, all within a secure and compliant ecosystem. Integrating Plaid with Pipedream can unlock powerful automations, like syncing transaction data to accounting software, verifying user identities for KYC compliance, and automating financial alerts or reporting.

Connect Plaid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module.exports = defineComponent({
  props: {
    plaid: {
      type: "app",
      app: "plaid",
    }
  },
  async run({steps, $}) {
    const { Configuration, PlaidApi } = require('plaid');
    
    const client = new PlaidApi(
      new Configuration({
        basePath: this.plaid.$auth.environment,
        baseOptions: {
          headers: {
            'PLAID-CLIENT-ID': this.plaid.$auth.client_id,
            'PLAID-SECRET': this.plaid.$auth.client_secret,
          },
        },
      })
    );
    
    // Test request
    const request = {
      count: 10,
      offset: 0,
      country_codes: ['US'],
    };
    
    const response = await client.institutionsGet(request);
    return response.data.institutions;
  },
})

Connect Google Cloud Document AI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import { DocumentProcessorServiceClient } from '@google-cloud/documentai/build/src/v1/index.js';
import { promises as fs } from 'fs';
import { get } from 'https';
import { writeFile } from 'fs/promises';
import { join } from 'path';

export default defineComponent({
  props: {
    google_cloud_document_ai: {
      type: "app",
      app: "google_cloud_document_ai",
    }
  },
  async run({ steps, $ }) {
    //Sample pdf file to process by Google Document AI API
    const url = 'https://www.learningcontainer.com/wp-content/uploads/2019/09/sample-pdf-file.pdf';
    const filePath = join('/tmp', 'my_document.pdf');

    const downloadFile = async () => {
      const res = await new Promise((resolve) => get(url, resolve));
      const chunks = [];

      for await (const chunk of res) {
        chunks.push(chunk);
      }

      await writeFile(filePath, Buffer.concat(chunks));
      console.log(`File downloaded successfully to ${filePath}`);
    };

    await downloadFile();

    const projectId = this.google_cloud_document_ai.$auth.project_id;
    const location = this.google_cloud_document_ai.$auth.location;
    const processorId = this.google_cloud_document_ai.$auth.processor_id;

    // Instantiates a client
    // apiEndpoint regions available: eu-documentai.googleapis.com, us-documentai.googleapis.com (Required if using eu based processor)
    // const client = new DocumentProcessorServiceClient({apiEndpoint: 'eu-documentai.googleapis.com'});
    const client = new DocumentProcessorServiceClient();

    async function testRequest() {
      // The full resource name of the processor, e.g.:
      // projects/project-id/locations/location/processor/processor-id
      // You must create new processors in the Cloud Console first
      const name = `projects/${projectId}/locations/${location}/processors/${processorId}`;

      // Read the file into memory.		
      const imageFile = await fs.readFile(filePath);

      // Convert the image data to a Buffer and base64 encode it.
      const encodedImage = Buffer.from(imageFile).toString('base64');

      const request = {
        name,
        rawDocument: {
          content: encodedImage,
          mimeType: 'application/pdf',
        },
      };

      // Recognizes text entities in the PDF document
      const [result] = await client.processDocument(request);
      const { document } = result;

      // Get all of the document text as one big string
      const { text } = document;

      // Extract shards from the text field
      const getText = textAnchor => {
        if (!textAnchor.textSegments || textAnchor.textSegments.length === 0) {
          return '';
        }

        // First shard in document doesn't have startIndex property
        const startIndex = textAnchor.textSegments[0].startIndex || 0;
        const endIndex = textAnchor.textSegments[0].endIndex;

        return text.substring(startIndex, endIndex);
      };

      // Read the text recognition output from the processor
      const [page1] = document.pages;
      const { paragraphs } = page1;
      let concatenatedText = "";
      for (const paragraph of paragraphs) {
        const paragraphText = getText(paragraph.layout.textAnchor);
        concatenatedText += paragraphText;
      }
      return concatenatedText;
    }

    return await testRequest();
  }
})

Trusted by 1,000,000+ developers from startups to Fortune 500 companies

Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo
Adyen logo
Appcues logo
Bandwidth logo
Checkr logo
ChartMogul logo
Dataminr logo
Gopuff logo
Gorgias logo
LinkedIn logo
Logitech logo
Replicated logo
Rudderstack logo
SAS logo
Scale AI logo
Webflow logo
Warner Bros. logo