Back to source list
Official
Premium
Plaid
Sync from Plaid to any destination
Publisher
cloudquery
Latest version
v1.7.4
Type
Source
Platforms
Date Published
Price per 1M rows
Starting from $17
monthly free quota
1M rows
Overview #
CloudQuery Plaid Source Plugin
A Plaid source plugin for CloudQuery that loads data from
the Plaid API to any database, data warehouse or data lake supported
by CloudQuery, such as PostgreSQL, BigQuery, Athena, and many more.
Supported Resources #
For a full list of supported resources, see the tables documentation.
Example #
The following source configuration file will sync supported data points to a PostgreSQL
database. See the CloudQuery Quickstart for more information on how to
configure the source and destination.
kind: source
spec:
name: "plaid"
path: "cloudquery/plaid"
version: "v1.7.4"
destinations: [postgresql]
# Learn more about the configuration options at https://cql.ink/plaid_source
spec:
# plugin spec section
client_id: ${PLAID_CLIENT_ID}
client_secret: ${PLAID_CLIENT_SECRET}
access_token: ${PLAID_ACCESS_TOKEN}
# optional
environment: sandbox
Plaid Spec #
client_id
(string, required)A Plaid client ID from your dashboard. See the Plaid docs for more informationclient_secret
(string, required)A Plaid client secret from your dashboard. See the Plaid docs for more informationaccess_token
(string, required)A Plaid access token obtained by following the link authorization flow. We provide an example application to generate a token for testing purposes only. For production usage you should set up a hosted frontend application and backend server that saves access tokens from link authentication flows initiated by your users. See the Plaid docs for more informationenvironment
(string, optional)The Plaid environment to use. Defaults tosandbox
. See the Plaid docs for more information. Should match the Plaid secret you are usingconcurrency
(integer
, optional, default:50000
) A best effort maximum number of Go routines to use. Lower this number to reduce memory usage.scheduler
(string
, optional, default:dfs
) The scheduler to use when determining the priority of resources to sync. Supported values aredfs
(depth-first search),round-robin
,shuffle
andshuffle-queue
.For more information about this, see performance tuning.
Authentication #
As working with financial data, Plaid relies heavily on authentication and authorization, therefore obtaining authentication credentials for the plugin is a two-step process.
This Getting Started tutorial explains quite shortly how to get started with Plaid
API: https://plaid.com/docs/quickstart/
Obtaining the Plaid credentials
In order to use the Plaid plugin, you'll need to obtain a
client_id
and a secret
from the Plaid dashboard, Integrations section.The next thing one has to do is to get a LINK Token. This will give back an access token with permissions to certain financial institutions and accounts.
In order to do this, you'll have to:
- Clone the following repo: https://github.com/plaid/quickstart
- Copy and update the
.env
file with your Plaid credentials & environment - Run the app using either Docker or other methods described in the repo
- If you're using Docker, you can run the following command:
make up language=go
- Open the app in your browser and follow the steps to get the LINK Token
- Copy the access token from the browser and use it in the CloudQuery plugin configuration
Example Queries #
List recent transactions #
select name, category, amount, iso_currency_code, date, merchant_name, payment_channel from plaid_transactions
order by
date desc
limit
10
Example result:
name | category | amount | iso_currency_code | date | merchant_name | payment_channel
---------------------------------------+----------------------------------------------+--------+-------------------+------------+-------------------+-----------------
Uber 063015 SF**POOL** | {Travel,Taxi} | 5.4 | "USD" | 2023-01-30 | "Uber" | online
CREDIT CARD 3333 PAYMENT *// | {Payment,"Credit Card"} | 25 | "USD" | 2023-01-30 | null | other
ACH Electronic CreditGUSTO PAY 123456 | {Transfer,Debit} | 5850 | "USD" | 2023-01-29 | null | online
CD DEPOSIT .INITIAL. | {Transfer,Deposit} | 1000 | "USD" | 2023-01-29 | null | other
United Airlines | {Travel,"Airlines and Aviation Services"} | -500 | "USD" | 2023-01-28 | "United Airlines" | in store
Touchstone Climbing | {Recreation,"Gyms and Fitness Centers"} | 78.5 | "USD" | 2023-01-28 | null | in store
Starbucks | {"Food and Drink",Restaurants,"Coffee Shop"} | 4.33 | "USD" | 2023-01-27 | "Starbucks" | in store
McDonald's | {"Food and Drink",Restaurants,"Fast Food"} | 12 | "USD" | 2023-01-27 | "McDonald's" | in store
SparkFun | {"Food and Drink",Restaurants} | 89.4 | "USD" | 2023-01-26 | null | in store
INTRST PYMNT | {Transfer,Credit} | -4.22 | "USD" | 2023-01-25 | null | other
(10 rows)
Licenses #
The following tools / packages are used in this plugin:
Name | License |
---|---|
github.com/adrg/xdg | MIT |
github.com/apache/arrow/go/v13 | Apache-2.0 |
github.com/apache/arrow-go/v18 | Apache-2.0 |
github.com/apapsch/go-jsonmerge/v2 | MIT |
github.com/aws/aws-sdk-go-v2 | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/config | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/credentials | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/feature/ec2/imds | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/internal/configsources | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/internal/ini | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/internal/sync/singleflight | BSD-3-Clause |
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/licensemanager | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/marketplacemetering | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/sso | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/ssooidc | Apache-2.0 |
github.com/aws/aws-sdk-go-v2/service/sts | Apache-2.0 |
github.com/aws/smithy-go | Apache-2.0 |
github.com/aws/smithy-go/internal/sync/singleflight | BSD-3-Clause |
github.com/bahlo/generic-list-go | BSD-3-Clause |
github.com/buger/jsonparser | MIT |
github.com/cenkalti/backoff/v4 | MIT |
github.com/cloudquery/cloudquery-api-go | MPL-2.0 |
github.com/cloudquery/plugin-pb-go | MPL-2.0 |
github.com/cloudquery/plugin-sdk/v2/internal/glob | MIT |
github.com/cloudquery/plugin-sdk/v2/schema | MIT |
github.com/cloudquery/plugin-sdk/v2/types | MPL-2.0 |
github.com/cloudquery/plugin-sdk/v4 | MPL-2.0 |
github.com/cloudquery/plugin-sdk/v4/glob | MIT |
github.com/cloudquery/plugin-sdk/v4/scalar | MIT |
github.com/davecgh/go-spew/spew | ISC |
github.com/ghodss/yaml | MIT |
github.com/go-logr/logr | Apache-2.0 |
github.com/go-logr/stdr | Apache-2.0 |
github.com/goccy/go-json | MIT |
github.com/google/flatbuffers/go | Apache-2.0 |
github.com/google/uuid | BSD-3-Clause |
github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors | Apache-2.0 |
github.com/grpc-ecosystem/grpc-gateway/v2 | BSD-3-Clause |
github.com/hashicorp/go-cleanhttp | MPL-2.0 |
github.com/hashicorp/go-retryablehttp | MPL-2.0 |
github.com/invopop/jsonschema | MIT |
github.com/klauspost/compress | Apache-2.0 |
github.com/klauspost/compress/internal/snapref | BSD-3-Clause |
github.com/klauspost/compress/zstd/internal/xxhash | MIT |
github.com/mailru/easyjson | MIT |
github.com/mattn/go-colorable | MIT |
github.com/mattn/go-isatty | MIT |
github.com/oapi-codegen/runtime | Apache-2.0 |
github.com/pierrec/lz4/v4 | BSD-3-Clause |
github.com/plaid/plaid-go/v26/plaid | MIT |
github.com/pmezard/go-difflib/difflib | BSD-3-Clause |
github.com/rs/zerolog | MIT |
github.com/samber/lo | MIT |
github.com/santhosh-tekuri/jsonschema/v6 | Apache-2.0 |
github.com/spf13/cobra | Apache-2.0 |
github.com/spf13/pflag | BSD-3-Clause |
github.com/stretchr/testify | MIT |
github.com/thoas/go-funk | MIT |
github.com/wk8/go-ordered-map/v2 | Apache-2.0 |
github.com/zeebo/xxh3 | BSD-2-Clause |
go.opentelemetry.io/otel | Apache-2.0 |
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp | Apache-2.0 |
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp | Apache-2.0 |
go.opentelemetry.io/otel/exporters/otlp/otlptrace | Apache-2.0 |
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp | Apache-2.0 |
go.opentelemetry.io/otel/log | Apache-2.0 |
go.opentelemetry.io/otel/metric | Apache-2.0 |
go.opentelemetry.io/otel/sdk | Apache-2.0 |
go.opentelemetry.io/otel/sdk/log | Apache-2.0 |
go.opentelemetry.io/otel/sdk/metric | Apache-2.0 |
go.opentelemetry.io/otel/trace | Apache-2.0 |
go.opentelemetry.io/proto/otlp | Apache-2.0 |
golang.org/x/exp | BSD-3-Clause |
golang.org/x/net | BSD-3-Clause |
golang.org/x/oauth2 | BSD-3-Clause |
golang.org/x/sync | BSD-3-Clause |
golang.org/x/sys | BSD-3-Clause |
golang.org/x/text | BSD-3-Clause |
golang.org/x/xerrors | BSD-3-Clause |
google.golang.org/genproto/googleapis | Apache-2.0 |
google.golang.org/grpc | Apache-2.0 |
google.golang.org/protobuf | BSD-3-Clause |
gopkg.in/yaml.v2 | Apache-2.0 |
gopkg.in/yaml.v3 | MIT |