Dfns
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.
At a glance
Section titled “At a glance”| Collector | Dfns, version 1.0.0 |
|---|---|
| Reads | Dfns: Dfns wallet-as-a-service API (wallets, assets, transfers) (the vendor's documentation) |
| Family | Finance |
| Kind | Custody |
| Ways to connect | Access token |
| Scopes |
|
| Read only | Yes |
| Vendor's API can move money | Yes |
| Personal data | Financial |
| Hosts it may contact | api.dfns.io, api.uae.dfns.io, {host} |
| Vendor API versions | Dfns REST API (unversioned paths: /wallets, /auth/service-accounts) |
| Lowest engine version | 0.46.0 |
What it reads
Section titled “What it reads”- 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).
How to connect
Section titled “How to connect”- In Dfns, make a service account with a read-only role
(
Wallets:Read,Wallets:Transfers:Read) and a token for it. - In LightHouse, open Setup and admin, Connectors, choose Dfns, and
give the region (
eu, the default, oruae). - 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. - 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.
Permissions
Section titled “Permissions”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 isDfns: 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.ioorapi.uae.dfns.ioby region, both over https; redirects are never followed.
Limits
Section titled “Limits”- 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.
regionmust beeuoruae.
Data handling
Section titled “Data handling”- Records hold financial data: balances, amounts, wallet addresses and
recipients’ addresses. Documents carry the
labelyou give the source (defaultconfidential). - 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.
Troubleshooting
Section titled “Troubleshooting”| 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 |
Certification
Section titled “Certification”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.
| Date | Collector | Engine | Vendor API | Method | Expires |
|---|---|---|---|---|---|
| 10 November 2026 | 1.0.0 | 0.46.0 | Dfns REST API (unversioned paths) | Fixtures only: built, not certified | Not applicable |
Security posture
Section titled “Security posture”From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.
| Last scanned | 10 November 2026 |
|---|---|
| Critical findings | 0 |
| High findings | 0 |
| Medium findings | 0 |
| Low findings | 0 |
| Info findings | 0 |
| Release blocked | No |
| Network allow-list check | Pass |
| Read-only behavioural test | Pass |
| SBOM (CycloneDX) | Produced |
| Dependency licences | Pass |
| Scanners | bandit 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 |