Skip to content

Dfns

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads a Dfns organisation’s wallets, asset balances and transfers, so treasury and reconciliation agents can check custody against the books. It is read-only, and it is built to refuse a service account that can move funds. It reads in place, in your deployment; only ids, hashes and counts reach LightHouse.

CollectorDfns, version 1.0.0
ReadsDfns: Dfns wallet-as-a-service API (wallets, assets, transfers) (the vendor's documentation)
FamilyFinance
KindCustody
Ways to connectAccess token
Scopes
  • Read: Wallets:Read, Wallets:Transfers:Read
Read onlyYes
Vendor's API can move moneyYes
Personal dataFinancial
Hosts it may contactapi.dfns.io, api.uae.dfns.io, {host}
Vendor API versionsDfns REST API (unversioned paths: /wallets, /auth/service-accounts)
Lowest engine version0.46.0
  • Wallets and their balances: for each wallet and asset, the balance (Dfns gives integer strings in the asset’s smallest unit with its decimals; they are scaled exactly), with the wallet’s name, id, network and address.
  • Transfers per wallet, newest first: status, kind, amount (for native assets), token contract, recipient, hash, fee and requested date. Reading stops at the last newest transfer seen less a week, so a transfer whose status moved on is read again.
  • The first read goes back history_days (default 90, at most 3,650).
  1. In Dfns, make a service account with a read-only role (Wallets:Read, Wallets:Transfers:Read) and a token for it.
  2. In LightHouse, open Setup and admin, Connectors, choose Dfns, and give the region (eu, the default, or uae).
  3. Paste the token and the service account’s id (service_account_id, so its permissions can be read). Your browser seals it to your deployment; LightHouse never sees it.
  4. Pin the token to your deployment’s egress addresses in Dfns.

The credential is JSON in the variable the source names (AAL_DFNS by default): token, service_account_id, region, and view_only_confirmed when needed.

This collector is read-only: it sends GET requests only, and its read-only test proves it on every change. Reads need only the bearer token; every Dfns call that changes state needs a user-action signature with the service account’s private key, which this collector never holds and never asks for.

  • Refused by the code: when the token may read service accounts (GET /auth/service-accounts), every operation assigned to the account and to its tokens is checked, and the account is refused, naming the operations, if it holds any of these: Wallets:Transfers:Create, Wallets:Transactions:Create, Vaults:Transfers:Create, Vaults:Locks:Transfer, Vaults:Quarantines:Release, Payouts:Create, Payouts:Update, Payins:Create, Exchanges:Withdrawals:Create, Exchanges:Deposits:Create, Swaps:Create, Stakes:Create, Stakes:Update, Allocations:Create, Allocations:Update, Wallets:Offers:Settle, Keys:Signatures:Create, KeyStores:Instructions:Keys:Sign, Keys:Export, Policies:Evaluations:Vote, Permissions:Assign, Wallets:Signatures:Create. The error is Dfns: refused: the credential can \<operations>; make a view-only one.
  • Not detectable by the code: if the token may not read service accounts (the narrowest read-only role gets a 403), or the listing does not include the account named, Dfns does not state the permissions. The collector then reads only once you have confirmed the account was given read-only permissions (view_only_confirmed). A service account made without a role inherits its creator’s permissions, which is the case the confirmation is for. An operation not on the list above would not be caught.
  • Hosts: api.dfns.io or api.uae.dfns.io by region, both over https; redirects are never followed.
  • Pages of 100, following nextPageToken.
  • Requests are paced (0.1 s apart) and retried on 429 and 5xx with back-off.
  • Transfer amounts are shown as money only for native-asset transfers from a wallet whose native asset was read; others show the smallest-unit amount.
  • region must be eu or uae.
  • Records hold financial data: balances, amounts, wallet addresses and recipients’ addresses. Documents carry the label you give the source (default confidential).
  • Content is read in place, in your deployment. LightHouse receives ids, hashes and counts, never the records, and never opens the credential.
  • Errors carry a status and fixed text, never a provider’s body.
  • The data is audit-ready for your own agents; nothing here certifies anyone against any regulation.
What you see What it means What to do
Dfns: refused: the credential can Wallets:Transfers:Create ...; make a view-only one The account or a token holds a fund-moving operation Make a read-only service account and reconnect
Dfns does not state this key's permissions; confirm the key is view-only (view_only_confirmed) before it is read The permissions cannot be read and you have not confirmed Confirm the account is read-only
region is one of eu, uae The region is not one of those Correct the region
Dfns answered HTTP 401 The token is wrong or expired Make a new token
Dfns answered HTTP 429 Rate limit Nothing; the collector backs off and continues

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.

DateCollectorEngineVendor APIMethodExpires
10 November 20261.0.00.46.0Dfns REST API (unversioned paths)Fixtures only: built, not certifiedNot applicable

From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.

Last scanned10 November 2026
Critical findings0
High findings0
Medium findings0
Low findings0
Info findings0
Release blockedNo
Network allow-list checkPass
Read-only behavioural testPass
SBOM (CycloneDX)Produced
Dependency licencesPass
Scannersbandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only