What Discovery solves
Manual file uploads create friction at every step. Teams export files, transfer them, monitor for failures, and re-upload when something goes wrong. This process is time-consuming, error-prone, and breaks when data volume grows. Discovery replaces the manual pipeline. It connects to external systems through Fetcher, detects available data sources automatically, and pulls transactions into Matcher on demand. When a new data source appears — a new bank connection, a new payment processor — Discovery finds it without reconfiguration.
How Discovery works
Discovery runs on Fetcher’s extraction engine, which Matcher hosts in-process; Fetcher is not a remote service. The embedded engine manages connections to external databases and runs extractions locally. Discovery exposes those connections and coordinates the extraction process, handing results directly to Ingestion. The workflow has seven steps:
- Check status — Confirm Discovery and its embedded engine are available.
- Browse connections — See all data sources the embedded engine has access to.
- Inspect a connection — Review the schema to understand what fields are available.
- Test a connection — Validate the connection before committing to an extraction.
- Create an extraction — Request that Matcher pull data from a specific source.
- Monitor progress — Track extraction status as data flows in.
- Refresh connections — Rescan when new data sources are added.
Discovery workflow
Check Discovery status
Verify that Discovery and the embedded Fetcher engine are operational before starting.Browse connections
List all data sources available through the embedded Fetcher engine.Get a connection
Retrieve a single discovered Fetcher connection by its internal identifier:GET /v1/discovery/connections/{connectionId} returns the full ConnectionResponse (name, type, status, and metadata) for one connection — useful when you already hold a connectionId (for example from a source binding’s query rail) and want its current details without listing every connection.
Inspect a connection
Review the schema of a specific connection to understand what data fields are available before extracting.Test a connection
Validate that Matcher can reach and read from a connection before creating an extraction.Create an extraction
Request that Matcher pull transaction data from a specific connection into the current context.Monitor extraction progress
Track the status of an active extraction by polling its status withGET.
PENDING → SUBMITTED → EXTRACTING → COMPLETE (or FAILED/CANCELLED). The response carries the extraction status, an errorMessage when it failed, and the linked ingestionJobId once the extraction bridges into ingestion.
Refresh available connections
When new data sources are registered with the embedded engine, trigger a refresh so Discovery picks them up.List connector types
List the connector (datasource) types the engine registry has registered for this deployment. Each entry carries a backend-derivedcategory (database or rest). The registry is live—only connectors registered at boot appear. Aggregator vendors (Pluggy/Belvo) are excluded; provision those through the aggregator-connections surface below.
Response
Aggregator connections (Open Finance)
Open-Finance data-aggregator connections (Pluggy or Belvo) let Matcher pull transactions from bank aggregators. Credential material (
clientId/secret) is sealed on write and never returned—every read is secret-free by construction.
Create an aggregator connection
vendor is one of pluggy or belvo. configName is the tenant-scoped name the webhook token-mint endpoint binds to. Returns 201 with a secret-free connection.
Response
List, get, update, and delete
Test an aggregator connection
Run a live connectivity check against an existing connection’s already-sealed credential, addressed by(vendor, configName). No credential is supplied or returned—the result is a secret-free boolean health.
Response
Aggregator webhook tokens
Aggregators push data change signals to Matcher via webhooks. Mint an opaque token bound to an aggregator connection, then configure the returned URL in the vendor dashboard.
Mint a webhook token
The raw token and its provider-facing URL are returned exactly once—only the token’s SHA-256 hash is stored.Response
Receiving webhooks
The vendor callsPOST /v1/discovery/webhooks/{provider}/{webhookToken} (no operator JWT). It is authenticated by the opaque path token plus a per-provider source check: a valid HMAC-SHA256 of the raw body in the X-Webhook-Signature header, or membership in the provider’s source-IP allowlist. Both layers fail closed. A valid first delivery returns 202 Accepted and the signaled data is pulled asynchronously into the ingestion pipeline; a replay of an already-processed event returns 200 OK.
Best practices
Always test connections before extracting
Always test connections before extracting
A failed extraction mid-run is harder to recover from than a failed test. Test every connection before creating an extraction — especially when connecting to a new source or after a credential rotation.
Inspect schemas before mapping fields
Inspect schemas before mapping fields
Field names vary across systems. A bank might call the transaction date
value_date while your ledger uses posting_date. Check the schema before configuring field mappings to avoid silent mismatches.Monitor extractions actively for large datasets
Monitor extractions actively for large datasets
Large extractions take time. Don’t assume completion — poll the extraction status and confirm the record count before starting a match run. Starting a run on incomplete data generates incorrect exceptions.
Refresh connections when sources change
Refresh connections when sources change
Discovery doesn’t scan for new connections automatically. When a new payment processor is added or a new database is registered with the embedded engine, trigger a refresh. Otherwise, Discovery won’t show the new source.
Scope extractions to the reconciliation period
Scope extractions to the reconciliation period
Use date range parameters to extract only the data relevant to the current reconciliation period. Extracting unbounded data increases processing time and may pull records that belong to already-closed contexts.
Next steps
External sources
Configure the external data sources that Discovery connects to.
Field mapping
Map fields from extracted data to Matcher’s transaction model.
Discovery API reference
Full API reference for Discovery endpoints.

