The Address Resolution Service (ARS) v4.3 provides ISO 20022 postal address
validation, classification, conversion, rendering, and compliance assessment
across 27 endpoints organised into 5 functional layers.
Payment Scheme Coverage
ARS supports 11 payment schemes across SEPA, cross-border, and high-value
payment systems:
| Category | Schemes | Scope |
|---|---|---|
| SEPA | SCT, SCT_INST, SDD_CORE, SDD_B2B, OCT_INST | 41 SEPA countries. Subject to the 15 Nov 2026 EPC address-format cutover. |
| Cross-border | CBPRPLUS | SWIFT CBPR+ global correspondent banking. |
| High-value / RTGS | CHAPS, T2, EURO1, FEDWIRE | UK, Eurozone, US high-value payment systems. |
| Other | OTHER | Extensible for additional domestic/regional schemes. |
Three Editions, Four Market Segments
The same 27-endpoint API is packaged into three named editions, each
targeting specific market segments with segment-specific defaults,
assurance levels, and positioning:
| Edition | Market Segment | Core Challenge |
|---|---|---|
| ioNova ARS Treasury | Corporate End-Users | Ensure every outgoing address is compliant before the bank sees it. Clean beneficiary data at source. |
| ioNova ARS Banking | Corporate Banks | Gate-keep inbound payment files from clients AND correct addresses inline before entering the inter-PSP space. |
| ioNova ARS Transact | Correspondent FIs, Transaction Banks | Correct non-compliant addresses in transit without becoming a bottleneck in the payment chain. Provide compliance infrastructure to FI clients AND enforce address quality at the network boundary. |
All three editions use the identical API surface. The edition determines
default configuration (scheme, assurance level) — not which endpoints are
available.
AutoCorrect vs PreCheck
| Pattern | Endpoints | Decision values | Use case |
|---|---|---|---|
| AutoCorrect | Convert (EP-04, EP-12) | ACCEPT, REJECT, PARTIAL_SUCCESS | Correct addresses during processing — postal verification, entity extraction, normalisation. Start here. |
| PreCheck | Check (EP-03, EP-10) | COMPLIANT, NOT_COMPLIANT | Structural validation only, no postal lookup. Sub-100ms. Use as a lightweight pre-filter or standalone compliance gate. |
| Full Pipeline | Process (EP-01, EP-08) | ACCEPT, REJECT, PARTIAL_SUCCESS | Runs the complete 7-step pipeline: classify → validate → date-legality → normalise → verify → convert → revalidate. |
Request Routing — Party vs Message
| I have… | I call… | I get… |
|---|---|---|
| One extracted address | /process-party-address |
One result |
| Many extracted addresses | /process-batch-party-address |
Array of results |
| A complete ISO 20022 message | /process-message-party-addresses |
All party addresses discovered + processed |
| Many complete messages | /process-batch-message-party-addresses |
Array of message results |
PostalAddress24 Variants
partyRole determines which XSD variant applies:
| Variant | Party Roles | TownName / Country | FULLY_UNSTRUCTURED allowed? |
|---|---|---|---|
| __1 | debtor, creditor | Optional | Yes, INBOUND only, until the SR2026 cutover (2026-11-15T02:30:00Z); banned OUTBOUND post-cutover |
| __2 | ultimate_debtor, ultimate_creditor, initiating_party | Mandatory | Never (REG-005) |
Status Taxonomy
AutoCorrect (AutoCorrectStatus, address-level): VALIDATED (already
compliant), REPAIRED (corrected, confidence ≥ threshold),
PARTIALLY_REPAIRED (corrected, confidence < threshold), NOT_REPAIRED
(cannot be corrected — manual intervention required).
PreCheck (PreCheckStatus): COMPLIANT, NOT_COMPLIANT.
Top-level Decision: ACCEPT, REJECT, PARTIAL_SUCCESS — the overall
outcome returned by Process and Convert endpoints, derived from the
per-address statuses above.
Parameter Reference
Complete request structure showing every supported field in its correct
hierarchy. All fields are optional unless noted. Use this skeleton to
understand nesting before consulting the per-field tables below.
{
"channelName": "MY_SEPA_SCT",
"name": "PETRA DUPONT",
"postalAddress": {
"addressLine": ["Hoogstraat 6", "1000 Brussels"],
"streetName": "...",
"buildingNumber": "...",
"buildingName": "...",
"floor": "...",
"postBox": "...",
"room": "...",
"postCode": "...",
"townName": "...",
"townLocationName": "...",
"districtName": "...",
"countrySubDivision": "...",
"country": "DE",
"countryOfResidence": "DE"
},
"postalAddressXml": {
"AdrLine": ["Hoogstraat 6", "1000 Brussels"],
"StrtNm": "...", "BldgNb": "...", "BldgNm": "...",
"Flr": "...", "PstBx": "...", "Room": "...",
"PstCd": "...", "TwnNm": "...", "TwnLctnNm": "...",
"DstrctNm": "...", "CtrySubDvsn": "...",
"Ctry": "DE", "CtryOfRes": "DE"
},
"identification": {
"organisationId": {
"anyBic": "DEUTDEFF",
"lei": "529900T8BM49AURSDO55",
"other": "..."
},
"privateId": {
"other": "PASSPORT-DE-123456"
}
},
"countryOfResidence": "DE",
"processingOptions": {
"scheme": "SCT",
"schemeVersion": "SR2026",
"quality": "premium",
"verification": true,
"detectMisplacedIdentifiers": true,
"validateNameContent": true,
"redaction": "NONE",
"targetFormat": "FULLY_STRUCTURED",
"repairConfidenceThreshold": 0.85,
"payerPspCountry": "DE",
"payeePspCountry": "BE"
},
"context": {
"scheme": "SCT",
"schemeVersion": "SR2025",
"executionDatetime": "2026-10-15T10:30:00Z",
"direction": "OUTBOUND",
"partyRole": "creditor",
"outputMode": "EPC",
"sendingCountry": "DE",
"receivingCountry": "BE",
"messageType": "pacs.008",
"timezone": "Europe/Berlin",
"name": "PETRA DUPONT",
"inputFormat": "FULLY_UNSTRUCTURED",
"outputFormat": "FULLY_STRUCTURED",
"source": "PAYMENT_HUB",
"sender": "DEUTDEFF",
"receiver": "BNPAFRPP",
"paymentMethod": "TRF",
"channel": "api",
"application": "SWIFT_ALLIANCE_GATEWAY",
"reference": "TXN-20261015-001",
"partyType": "COMPANY"
},
"include": ["canonical", "traceability", "actions"]
}
Note:
postalAddressandpostalAddressXmlare mutually exclusive —
submit one or the other, not both.postalAddressuses camelCase field
names (JSON-native);postalAddressXmluses ISO 20022 tag names directly.
PostalAddress24 Fields
All fields optional. See PostalAddress24 Variants above for __1/__2 rules.
| Field | ISO Tag | Max | Notes | Example |
|---|---|---|---|---|
| addressLine | AdrLine | 7 × 70 chars | Unstructured lines. Max 3 for __1 parties; max 2 for __2. Must not duplicate structured fields (PMPG non-duplication rule). | ["Hoogstraat 6", "1000 Brussels"] |
| streetName | StrtNm | 70 | "Unter den Linden" |
|
| buildingNumber | BldgNb | 16 | "10" |
|
| buildingName | BldgNm | 35 | "Premium Tower" |
|
| floor | Flr | 70 | "18th Floor" |
|
| postBox | PstBx | 16 | "PO Box 12" |
|
| room | Room | 70 | "Suite 301" |
|
| postCode | PstCd | 16 | "10117" |
|
| townName | TwnNm | 35 | Mandatory for __2 parties. Best practice for all. | "Berlin" |
| townLocationName | TwnLctnNm | 35 | "Mitte" |
|
| districtName | DstrctNm | 35 | "Charlottenburg" |
|
| countrySubDivision | CtrySubDvsn | 35 | "Bavaria" |
|
| country | Ctry | 2 | ISO 3166-1 alpha-2. Strongly recommended. Mandatory for __2 parties. | "DE" |
| countryOfResidence | CtryOfRes | 2 | ISO 3166-1 alpha-2. Residential country — distinct from postal address country. | "DE" |
processingOptions Fields
Per-request overrides of the active channelProfile. All optional.
| Field | Type / Enum | Description | Example |
|---|---|---|---|
| scheme | SCT SCT_INST SDD_CORE SDD_B2B OCT_INST CBPRPLUS CHAPS T2 EURO1 FEDWIRE OTHER |
Override payment scheme for this request only. | "SCT_INST" |
| schemeVersion | SR2025 SR2026 |
Override scheme version. Controls SR2026 cutover date enforcement. | "SR2026" |
| quality | premium standard basic |
Override verification depth. premium = full postal DB. basic = structural only. |
"premium" |
| verification | boolean | When false, skips postal DB lookup regardless of quality. Forced false when quality = basic. |
false |
| detectMisplacedIdentifiers | boolean | When true, flags BIC/LEI/IBAN found inside AddressLine fields (rule R-04). |
true |
| validateNameContent | boolean | When true, checks for party name duplication inside address lines. |
true |
| redaction | NONE PARTIAL FULL |
PII redaction level applied to address fields in the response. | "PARTIAL" |
| targetFormat | auto FULLY_STRUCTURED HYBRID FULLY_UNSTRUCTURED |
Override target output format. auto = ARS selects best achievable. |
"FULLY_STRUCTURED" |
| repairConfidenceThreshold | number 0.0–1.0 | Minimum confidence score to promote PARTIALLY_REPAIRED to REPAIRED. | 0.85 |
| payerPspCountry | ISO 3166-1 alpha-2 | Payer PSP country — used for EPC SEPA compliance threshold. | "DE" |
| payeePspCountry | ISO 3166-1 alpha-2 | Payee PSP country — used for EPC SEPA compliance threshold. | "BE" |
context Fields — Processing Fallback
Used as last-resort fallback when channelProfile and processingOptions do
not supply a value. Also always written to the audit trail.
| Field | Type / Enum | Description | Example |
|---|---|---|---|
| scheme | SCT SCT_INST SDD_CORE SDD_B2B OCT_INST CBPRPLUS CHAPS T2 EURO1 FEDWIRE OTHER |
Fallback payment scheme. | "SCT" |
| schemeVersion | SR2025 SR2026 |
Fallback scheme version. Controls SR2026 cutover enforcement. | "SR2025" |
| executionDatetime | ISO 8601 UTC string | Payment execution datetime. Used for SR2026 cutover date checks. | "2026-10-15T10:30:00Z" |
| direction | OUTBOUND INBOUND |
Payment direction. OUTBOUND = sending; INBOUND = receiving. | "OUTBOUND" |
| partyRole | debtor creditor ultimate_debtor ultimate_creditor initiating_party |
Party role — determines PostalAddress24 variant (__1 or __2). | "creditor" |
| outputMode | EPC CBPR_PLUS MT_LEGACY COMPLIANCE |
Address line rendering constraints per channel type. | "EPC" |
| sendingCountry | ISO 3166-1 alpha-2 | Country of the sending PSP. | "DE" |
| receivingCountry | ISO 3166-1 alpha-2 | Country of the receiving PSP. | "BE" |
| messageType | pacs.008 pacs.009 camt.056 … (26 types) |
ISO 20022 message type. | "pacs.008" |
| timezone | IANA timezone string | Timezone for executionDatetime evaluation. | "Europe/Berlin" |
context Fields — Analytics Only
Written to the audit trail on every call. No effect on processing outcome.
| Field | Type / Enum | Description | Example |
|---|---|---|---|
| name | string | Party name for entity conflict analytics. | "PETRA DUPONT" |
| inputFormat | FULLY_STRUCTURED HYBRID FULLY_UNSTRUCTURED |
Format of the originating input, for audit. | "FULLY_UNSTRUCTURED" |
| outputFormat | FULLY_STRUCTURED HYBRID FULLY_UNSTRUCTURED |
Expected output format, for audit. | "FULLY_STRUCTURED" |
| source | string | Sending system identifier. | "PAYMENT_HUB" |
| sender | string | BIC of the sending institution. | "DEUTDEFF" |
| receiver | string | BIC of the receiving institution. | "BNPAFRPP" |
| paymentMethod | string | Payment method for audit reporting. | "TRF" |
| channel | api file other |
Delivery channel for audit. | "api" |
| application | string | Caller application identifier. | "SWIFT_ALLIANCE_GATEWAY" |
| reference | string | Business reference for audit trail (payment ID, batch ID, etc.). | "TXN-20261015-001" |
| partyType | COMPANY INDIVIDUAL |
Whether the party is a company or individual. | "COMPANY" |
identification Fields
Optional top-level field on processing requests. Used for entity conflict
detection (rule R-04). Submit organisationId OR privateId, not both.
| Field | Path | ISO Tag | Description | Example |
|---|---|---|---|---|
| anyBic | identification.organisationId.anyBic | OrgId/AnyBIC | BIC (8 or 11 chars). | "DEUTDEFF" |
| lei | identification.organisationId.lei | OrgId/LEI | Legal Entity Identifier (20 chars). | "529900T8BM49AURSDO55" |
| other | identification.organisationId.other | OrgId/Othr | Other organisation identifier. | "DE12345678" |
| other | identification.privateId.other | PrvtId/Othr | Private individual identifier. | "PASSPORT-DE-123456" |
Standards
ISO 20022 | EPC153-22 v2.1 | PMPG Hybrid Postal Address v1.12 |
PMPG Grace Period Guide | CBPRPlus SR2025 | EU Regulation 2023/1113
Content Types
All POST endpoints accept and return application/json (primary) and
application/xml (ISO 20022 native format). GET endpoints return
application/json only.
When using XML: Content-Type: application/xml, Accept: application/xml.
Security
- Transport: TLS 1.2+ mandatory.
- Authentication: JWT Bearer (RS256/PS256) + API Key — dual factor,
OAuth 2.0 Client Credentials grant. - Correlation:
X-Request-ID+Idempotency-Keyon every write request. - Integrity: HTTP Message Signatures (RFC 9421) over
Content-Digest
(RFC 9530) — required in production on batch and R-transaction message
endpoints, optional elsewhere. - Data handling: no address content persisted beyond the request lifecycle.
Authentication
All endpoints (except /health) require dual authentication:
Authorization: Bearer <JWT>— OAuth 2.0 bearer tokenapikey: <api-key>— API key as second factor (Kongkey-authheader)
Processing Precedence
ARS resolves processing parameters using a three-tier model:
- channelProfile (primary) — loaded via
channelName; establishes all defaults
for this channel/scheme/direction combination. (Channel profile management,
EP-25/26/27, is in early access and not yet generally available.) - processingOptions (override) — per-request deviations from channelProfile.
Sole function: modify specific channelProfile values for one request only. - context (fallback + analytics) — last-resort fallback for any unresolved
parameter; all context fields always written to the audit trail.
Version History
| Version | Summary |
|---|---|
| 4.1.0 | PreCheck/AutoCorrect patterns, status taxonomy, structured reason codes. |
| 4.2.0 | Consolidated release — all v4.1 enhancements integrated. |
| 4.3.0 | channelProfile model (early access), PARTIAL_SUCCESS decision added. |
- Server 1:https://api-uat.ionova.ai/ars/
UAT (test data only)
BearerAuth (http)
JWT bearer token issued by the ARS identity provider.
ApiKeyAuth (apiKey)
Static API key issued per account for service-to-service authentication.
Sent as the lowercase apikey header — this is the name Kong’s key-auth
plugin at api-uat.ionova.ai inspects (with hide_credentials: true, so
the header is stripped before the request reaches the backend).