Trade/Compliance

CHA & Partner Coordination

Role assignment, the partner portal, and how external partners work their steps.

What it is

Getting a CHA (or any external partner) actually working a job is two separate mechanisms working together: a CHA directory for discovery, and a partner connection + role assignment pipeline for putting someone to work. This page covers both, and how the partner-facing side — the partner portal — is scoped so a partner only ever sees their own work.

The CHA directory

A global, public registry of licensed Customs House Agents — not scoped to your organization or brand, because this data belongs to everyone. Entries carry company and licence details (old/new CHA number, licence validity, GST/PAN), the customs house they operate at, and where they were sourced from (e.g. CCBA, BCHAA association data). It's a lookup tool for finding an agent's contact details by city, customs house, or name — it does not itself create a connection or a role assignment.

Connection vs. role assignment

Partner Connection
Partner Assignment
What it represents
Your org has a working relationship with this partner
This partner is doing role X on this specific job
Scope
Per brand
Per job
Where it lives
trade_partners
export_jobs

A connection has to be active before a partner can be assigned a role: the per-job role picker only lists partners you're already connected to. See Trade Partners for how connections themselves work, and the Export & Import Job Engine doc for Tier 2 (Journey) role assignment in full.

Roles an external partner can fill

Six role types can be filled by an external, connected partner: freight forwarder, CHA, import CHA (destination-side customs), FHA (freight handling agent), inspection agency, and insurance provider. A nominated LC bank is deliberately not onboarded through this same flow — it remains a role filled by other means.

The partner portal

Partner accounts live outside your organization/tenant system entirely. A partner authenticates with their own JWT at /api/partner-portal/, and every job-related endpoint there is scoped to their active role assignment on that specific job — not to any organization membership. From the portal a partner can:

  1. 1

    See only their jobs

    The job list and job detail views resolve strictly through the partner's own PartnerAssignment rows.
  2. 2

    Act only on their own steps

    Uploading a document or completing/waiving a checklist step is rejected with "That step is not assigned to you on this job" if it belongs to someone else.
  3. 3

    Add optional steps, never mandatory ones

    A partner can add non-blocking steps if it helps their own workflow, but mandatory, platform-owned steps can only be added or removed by your team.
  4. 4

    See a partner-scoped activity feed

    Their events view shows role assignments and their own team's actions — not your internal team's full activity feed.
Screenshot pending — Partner login screen for the partner portal
Partners authenticate separately, outside the main org/tenant login.

Revoking a connection doesn't quietly orphan a job

If you revoke a connection while the partner still has an active role assignment on an in-flight job, the response tells you so — revoking is not silent about work still in progress.

New to this? Start with the CHA & Partner Coordination guide.