Payments

What is a payment purpose code?

A payment purpose code is a short, standardized code attached to a payment that states why the money is being sent, such as salary, a supplier invoice, or a tax payment. It's also called a purpose of payment code, or simply a purpose code.

Most domestic payments don't need one. Cross-border payments often do, because the countries at either end want to know what the money is for. A platform paying contractors in India from abroad, for example, needs the right Indian purpose code on each payment, or the receiving bank may hold it.

The format depends on the system. ISO 20022 uses four-letter codes, India uses five-character codes such as P0802, and the UAE uses three-letter codes such as SAL.

Why do payments need a purpose code?

Purpose codes give banks and regulators a structured answer to "what is this payment for?" The Payments Market Practice Group's ISO 20022 guidance points to two main uses:

  • Regulatory reporting: payments into or out of some countries "can be subject to Balance of Payment Statistical Reporting or other bespoke reporting," so banks must report why money crosses the border
  • Screening: structured purpose data helps banks run more effective sanctions and AML checks

The code also travels with the payment from end to end. On a SWIFT payment that passes through several banks, each one sees the same reason without having to read free-text notes.

Which countries require payment purpose codes?

Purpose code rules are set country by country, and they change over time. The PMPG guidance and national sources point to several common examples:

  • India: the Reserve Bank of India assigns purpose codes to foreign exchange transactions, with codes starting with P for money received and S for money sent, such as P0802 for software consultancy
  • United Arab Emirates: payments into the UAE use three-letter purpose of payment codes, such as SAL for salary and GDE for goods sold, as listed in BNP Paribas's UAE code appendix
  • France: the PMPG cites Banque de France reporting rules for cross-border payments leaving France
  • Indonesia: the PMPG cites Bank Indonesia requirements that apply even to domestic payments
  • United Kingdom: since November 2024, the Bank of England has required purpose codes on CHAPS payments between financial institutions and on certain property payments

The UK plans to extend the requirement to all CHAPS payments over time. For any corridor, the safest assumption is that the destination's rules apply, even when the sending country has none.

What do ISO 20022 purpose codes look like?

ISO 20022 uses four-letter purpose codes from a shared external code list. The Bank of England's recommended list for the UK includes 129 of them. Common examples include:

  • SALA: salary payment
  • SUPP: payment to a supplier
  • GDSV: purchase or sale of goods and services
  • INTC: payment between two companies in the same group
  • TAXS: tax payment
  • CASH: cash management transfer

ISO 20022 also has a separate Category Purpose field. Purpose explains why the payment is being made, while Category Purpose flags how banks should process it. Country codes are kept apart from both. In the PMPG's examples, India's P1301 and the UAE's PPL go in a separate Regulatory Reporting field, because the Purpose field is non-regulatory.

What happens if a payment has the wrong purpose code?

A missing or wrong purpose code rarely makes a payment disappear, but it does slow it down. According to the PMPG, putting purpose information in the wrong field can cause "delays to payments" and less straight-through processing. Banks may also hold the payment and send a request for information until the details are fixed.

Rejection is possible too. The Bank of England said it would not reject CHAPS payments solely for incomplete or incorrect purpose codes before 2025, which leaves room to do so later.

How do you choose the right purpose code for a payout?

The safest approach is to decide codes once, per payout type and corridor, rather than per payment. That keeps codes consistent across thousands of wire transfers and batch payments:

  1. List the destination countries that require purpose codes, and note which code set each one uses
  2. Map each payout type, such as payroll, vendor invoices, or intra-group transfers, to the matching code
  3. Store the code with the payout type, so it's set automatically instead of typed in by hand
  4. Review the mapping when a country updates its code list, as the UK did when it added two codes in June 2026

How does Due handle purpose codes?

Due's API supports purpose codes at the transfer level, per its transfer flow documentation:

  • Optional by default: the purposeCode field can be left out unless the channel requires it
  • Required on some channels: if a payment channel includes a non-empty purposeCodes object, the transfer must include a valid purposeCode
  • Set per transfer: the code goes in the transfer request, alongside the quote, recipient, and memo, as in the documented example "purposeCode": "OTHER"

Checking each channel's requirements before creating transfers avoids payouts getting stuck on a missing code.

Book a call to set up compliant cross-border payouts with Due.

‍

Continue learning

IFSC (Indian Financial System Code)

Category
Read more

Embedded wallet

Category
Read more

IMPS (Immediate Payment Service)

Category
Read more

Payment purpose code

Category
Read more

Money mule account

Category
Read more

TRC-20

Category
Read more

Enhanced due diligence (EDD)

Category
Read more

KYC reliance

Category
Read more

Prefunding

Category
Read more

CLABE (Clave Bancaria Estandarizada)

Category
Read more

NUBAN (Nigeria Uniform Bank Account Number)

Category
Read more

OUSD (Open USD)

Category
Read more

Meta transaction

Category
Read more

Gas fees

Category
Read more

Batch payments

Category
Read more

Wallet-as-a-Service (WaaS)

Category
Read more

Wallet screening

Category
Read more

KYT (Know Your Transaction)

Category
Read more

KYB (Know Your Business)

Category
Read more

Settlement finality

Category
Read more

Stablecoin redemption

Category
Read more

E-Money Token (EMT)

Category
Read more

MiCA

Category
Read more

Travel Rule

Category
Read more

CCTP (Cross-Chain Transfer Protocol)

Category
Read more

Stablecoin depeg

Category
Read more

FX risk (currency risk)

Category
Read more

Banking-as-a-Service (BaaS)

Category
Read more

ISO 20022

Category
Read more

Nostro and vostro accounts

Category
Read more

UETR (Unique End-to-End Transaction Reference)

Category
Read more

Stablecoin settlement

Category
Read more

Automatic reconciliation

Category
Read more

Balance reconciliation

Category
Read more

Identity verification API

Category
Read more

Interbank settlement

Category
Read more

Open banking

Category
Read more

FedGlobal ACH

Category
Read more

Ledger API

Category
Read more

Subsidiary ledger

Category
Read more

Cross-chain bridges

Category
Read more

Ledger sharding

Category
Read more

Reconciliation API

Category
Read more

ACH debit

Category
Read more

Ledger database

Category
Read more

Stablecoin reserves

Category
Read more

Transaction reconciliation

Category
Read more

Closed loop payments

Category
Read more

Open loop payments

Category
Read more

Stablecoin sandwich

Category
Read more

ACH reversal

Category
Read more

Layer 2 blockchain

Category
Read more

Layer 1 blockchain

Category
Read more

FedNow API

Category
Read more

eCheck

Category
Read more

Payment controls

Category
Read more

Faster Payment System (FPS)

Category
Read more

Request for payment (RfP)

Category
Read more

Stablecoin orchestration

Category
Read more

ACH API

Category
Read more

BACS

Category
Read more

ACH payment returns

Category
Read more

Stablecoin yield

Category
Read more

Cash float

Category
Read more

BAI2

Category
Read more

Compliance risk management

Category
Read more

ACH transfer limit

Category
Read more

Deposit Account Control Agreement (DACA)

Category
Read more

Currency Transaction Report (CTR)

Category
Read more

Crypto faucet

Category
Read more

FBO account

Category
Read more

OTC trading

Category
Read more

Virtual IBAN

Category
Read more

Third-party payment

Category
Read more

Ledger balance

Category
Read more

Issuer Identification Number (IIN)

Category
Read more

CASPs (Crypto-Assets Service Providers)

Category
Read more

Section 314(b)

Category
Read more

OFAC (Office of Foreign Assets Control)

Category
Read more

Penny test

Category
Read more

Cash pooling

Category
Read more

Money transmission

Category
Read more

Core banking

Category
Read more

Sweep account

Category
Read more

Flow of funds

Category
Read more

Cash application

Category
Read more

Bank Reconciliation

Category
Read more

Clearing account

Category
Read more

Cash reconciliation

Category
Read more

Take rate

Category
Read more

CHAPS (Clearing House Automated Payment System)

Category
Read more

The Clearing House (TCH)

Category
Read more

A2A payments

Category
Read more

Bulk Electronic Clearing System (BECS)

Category
Read more

Real-time gross settlement (RTGS)

Category
Read more

Same-day ACH

Category
Read more

ACH return codes

Category
Read more

PYUSD (PayPal USD)

Category
Read more

Sort Code

Category
Read more

Atomic settlement

Category
Read more
Download Due & Move Money Without Borders