Address Verification & Po
Validate & standardise addresses via your own Loqate/postcode key (BYOK)
Bad addresses quietly drain UK businesses: every malformed postcode is a failed delivery, a returned parcel, wasted postage and a frustrated customer — and the dirty data lingers in the CRM forever. This module validates and standardises contact addresses, scores their quality, and suggests a corrected, normalised version you apply to the contact in one click. A built-in Royal Mail / BS 7666 postcode validator works fully offline with zero external calls, while pluggable adapters add live lookups via postcodes.io, Loqate or a generic REST endpoint. Crucially it is bring-your-own-key: you configure your own provider credentials, so the relationship and per-call spend stay yours, with no keys shipped and no liability on the publisher. eCommerce, delivery, sales and data teams get verified postcodes, standardised addresses and a clear quality flag for data-cleansing campaigns.
Key Features
Offline Royal Mail Postcode Validator
postcode_util implements the full BS 7666 / Royal Mail regex (including the GIR 0AA special case). is_valid_postcode and normalise_postcode validate, re-space and upper-case any UK postcode with zero external calls, so basic validation always works out of the box.
BYOK Provider Configuration
res.company carries address_provider_type, endpoint, key and country bias. Your own credentials are stored on the company and never shipped with the module, so the provider relationship and per-call billing stay entirely yours.
Pluggable Provider Adapters
The ADAPTERS registry dispatches to postcodes.io (free, keyless UK lookup), Loqate/Addressy (BYOK), or a generic JSON REST endpoint. Each adapter degrades gracefully to the offline check on error, using only stdlib urllib — no extra dependency.
Verification Records with Applyable Suggestions
Every check creates a gb.address.verification storing the submitted snapshot, raw response, match score and a standardised suggestion. action_apply_to_partner writes the suggested zip, city, street and country back to res.partner in one click.
Computed Address Quality Scoring
The _compute_quality method grades each result verified, corrected, unverified or unmatched from the match flag, score and correction status, and stamps address_quality plus address_last_checked on the partner for needs-review filtering and cleansing campaigns.
Batch Verification Wizard
gb.batch.verify.wizard runs run_for_partner across a selection or up to 500 contacts, with options to skip already-checked records and auto-apply corrections. It returns counts of processed, verified, corrected and unmatched contacts plus the result list.
UK Postcode Area Reference & Coverage
gb.postcode.area seeds 120+ UK areas (e.g. SW -> London SW) with post town and nation. coverage_report aggregates how many contacts fall in each region, and partners derive postcode_area_code and post town automatically from their zip.
Provider Self-Test
action_test_address_provider pushes a known-good sample address (10 Downing Street, SW1A 2AA) through the configured adapter and shows the match result and score as a notification — a one-click way to confirm your BYOK key and endpoint work before going live.
Use Cases
Screenshots
Verifications
Batch Verify Addresses
Postcode Areas
Why Choose This Module
Bad addresses mean failed deliveries, returned goods and wasted postage. This module verifies and standardises contact addresses, scores their quality, and suggests a corrected version you apply in one click. Bring Your Own Key: configure your own Loqate, Postcodes.io or generic REST endpoint — no keys are shipped and no per-call cost falls on the publisher.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: base, contacts
- Support: support@pokutsoft.com
Update date: 2026-07-02