Adapter API Ingestion
How to integrate institutions whose upstream payloads do not match the native WatchTower transaction contract.
Section
Why adapters exist
Not every institution can emit the native WatchTower transaction shape. Some institutions expose bank-transfer payloads, some emit bill-payment events, some emit airtime or merchant-payment payloads, and some use a proprietary core-banking event contract.
The adapter layer lets WatchTower receive those customer-specific payloads, normalize them into the canonical model, and then pass them through the same rule engine and persistence flow.
Section
Recommended adapter workflow
- agree the source payload contract with the customer
- map that source contract into the WatchTower canonical transaction model
- preserve the raw or source-specific references in metadata
- evaluate through the same decision, alert, and case pipeline as canonical transactions
Adapter endpoint
POST /api/v1/transactions/adapters/{adapterKey}
GET /api/v1/transactions/adapters
Adapter flow diagram
Institution payload
|
v
Customer-specific adapter
|
v
Canonical WatchTower transaction
|
v
Rules engine -> decision -> alerts/cases/reportingAdapter payload example
{
"checkpoints": ["aml", "customer", "payment"],
"customString": { "tenant": "sample-wallet-ng" },
"customer": { "id": "56515218" },
"device": { "source": "sample-wallet-app" },
"flow": { "name": "bill_payment", "type": "transaction" },
"sessionKey": "ad6be656-69d7-53a7-9dcf-2f53a2efcafb",
"transaction": {
"actionType": "buy",
"amount": 400,
"createdAtMillis": 1774363426020,
"currencyCode": "NGN",
"id": "6145917c-2354-4805-8d9b-dc82d862fb9a",
"isOutward": true,
"itemCategory": "Airtime",
"note": "TopUp Bill",
"paymentMethod": {
"bank": { "accountNumber": "2212205409" },
"type": "bank"
},
"recipient": { "id": "09113623943" }
}
}Section
What adapters make possible
- institution-specific onboarding without changing the rule engine
- support for transfers, bill payments, airtime, merchant payments, wallet transfers, and similar flows
- clear customer-specific integration contracts without fragmenting WatchTower itself
Next UpCSV Import
Continue Through The DocsWatchTower Integration Guides