API template library

Plaid Processor mock API and live sandbox

A WireMock simulation of Plaid's REST API — covering processor-token views of auth, balance, identity, transactions, investments, liabilities, and Signal.

Vendor
Plaid
Functionality
Account data via processor tokens
Spec version
2020-09-14_1.688.6
Endpoints
22
Stubs
23
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real Plaid API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

Plaid Processor

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://dgd5v.wiremockapi.cloud

POST Set - /processor/token/permissions/set

curl -s -X POST 'https://dgd5v.wiremockapi.cloud/processor/token/permissions/set' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Get - /processor/token/permissions/get

curl -s -X POST 'https://dgd5v.wiremockapi.cloud/processor/token/permissions/get' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST Static - /processor/token/create

curl -s -X POST 'https://dgd5v.wiremockapi.cloud/processor/token/create' \
  -H 'Content-Type: application/json' \
  -d '{}'
Method Path Summary
POST /processor/account/get Retrieve the account associated with a processor token
POST /processor/auth/get Retrieve Auth data
POST /processor/balance/get Retrieve Balance data
POST /processor/identity/get Retrieve Identity data
POST /processor/identity/match Retrieve identity match score
POST /processor/investments/auth/get Get investment account authentication data
POST /processor/investments/holdings/get Retrieve Investment Holdings
POST /processor/investments/transactions/get Get investment transactions data
POST /processor/liabilities/get Retrieve Liabilities data
POST /processor/signal/decision/report Report whether you initiated an ACH transaction
POST /processor/signal/evaluate Evaluate a planned ACH transaction
POST /processor/signal/prepare Opt-in a processor token to Signal
POST /processor/signal/return/report Report a return for an ACH transaction
POST /processor/stripe/bank_account_token/create Create Stripe bank account token
POST /processor/token/create Create processor token
POST /processor/token/permissions/get Get a processor token's product permissions
POST /processor/token/permissions/set Control a processor's access to products
POST /processor/token/webhook/update Update a processor token's webhook URL
POST /processor/transactions/get Get transaction data
POST /processor/transactions/recurring/get Fetch recurring transaction streams
POST /processor/transactions/refresh Refresh transaction data
POST /processor/transactions/sync Get incremental transaction updates on a processor token

Unauthenticated WireMock Cloud demo sandbox for Plaid — not an official Plaid sandbox, and it returns simulated example data only.

What's inside the Processor template

Twenty-two endpoints compress most of Plaid's data products into their processor-token form — auth, balance, identity, transactions, investments, liabilities, and Signal behind a single credential type. The fixtures are mirror-world versions rather than reuses: sync delivers one page carrying an added, a modified, and a removed entry at once; recurring streams run a Platypus Payroll inflow against ConEd and Costco outflows; the identity match answers 90 on legal name where scores elsewhere in the set are perfect; liabilities reports a credit card with no mortgage or student loan beside it. /processor/token/create answers with the same processor-sandbox token on every call — the value Plaid's own documentation uses in its examples.

  • Token plumbing — the fixed processor token, a Stripe btok_, and the permissions get/set pair
  • Money data — account, balance, and four-scheme auth numbers under one checking fixture
  • Transactions wing — single-page sync with all three change types, pulls, recurring streams, and refresh
  • Identity — the owner record and a match result with one deliberately imperfect score
  • Investments & liabilities — an options-contract holding pair and a credit-only liabilities read
  • Signal — an ACCEPT ruleset over split risk scores, with prepare and report acks

Example implementation using plaid-python

Processor routes take the processor token itself in the request body, so a redirected client is two constructor arguments and one model:

The printed name-and-balances line proves client construction, host override, and response parsing in one round trip, and every other route on the instance is a request-model swap away from the same pattern.

Processor tokens exist so payments platforms can read partner data without holding access tokens — which makes the mock most useful on the platform side of that relationship: an ingestion pipeline runs against deterministic partner-shaped data with no partner onboarding in the loop, and moves to a WireMock Cloud copy when it needs data that varies per test.

import plaid
from plaid.api import plaid_api
from plaid.model.processor_balance_get_request import ProcessorBalanceGetRequest

configuration = plaid.Configuration(
    host="https://dgd5v.wiremockapi.cloud",
    # required by the client, ignored by the mock
    api_key={"clientId": "any-value", "secret": "any-value"},
)
client = plaid_api.PlaidApi(plaid.ApiClient(configuration))

resp = client.processor_balance_get(
    ProcessorBalanceGetRequest(processor_token="processor-sandbox-0asd1-a92nc")
)
acct = resp.account
print(acct.name, acct.balances.available, acct.balances.current)

Frequently asked questions

They're siblings, not copies. Sync here serves a DoorDash debit and a Walmart Supercenter purchase where the Transactions template walks a two-page cursor through different merchants; liabilities carries only the credit class; the holdings pair is an options contract plus a cash security. Cross-template assertions should expect different data behind the same schemas.

One page exercises every array a sync consumer handles — including the removed branch, the one integrations most often leave untested. has_more is false from the start and the cursor never advances, so pagination ends immediately; the depth is in the change types, not the page count.

Yes — the route reports total_transactions of one above an array of two. It's a stub inconsistency to know about: derive counts from array length rather than the summary field when asserting against this instance, and treat the pair as a reminder that the two can disagree in the wild too.

Not the investments pair — the securities omit figi, and the client's response models refuse the omission, the same strictness the Investments template documents on its own fixtures. The money-data, identity, and Signal routes all parse into their typed models without incident.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.