International payments are now common for Indian businesses, agencies, and freelancers. The transaction must follow rules set by the Reserve Bank of India (RBI). These rules are carried out by banks, which must record the reason behind every inward and outward remittance. To make this possible, the RBI has introduced purpose codes.

A purpose code is a simple explanation of why the money is moving across borders. Read on to learn about the importance of purpose codes and more.

Key Takeaways

  • Purpose codes are mandatory for all international payments both inward and outward.
  • RTGS, NEFT and IMPS are only domestic systems and do not replace purpose codes for foreign transfers.
  • Using the correct code helps avoid payment delays, compliance issues and tax mismatches.
  • Razorpay MoneySaver Export Account simplifies global payments and automatically supports export compliance.

What is RBI Purpose Code? Inward (P) vs Outward (S)

Whenever money enters or leaves India, banks need a clear declaration of why the transaction is taking place. That’s where purpose codes come in. They standardise the reason behind each cross-border payment and make the process compliant with Indian regulations.

The Reserve Bank of India introduced purpose codes under the Foreign Exchange Management Act (FEMA), 1999, to bring clarity and traceability to international money flows. Instead of relying on descriptions or manual explanations, every transaction now carries a predefined code that tells the bank the exact nature of the payment.

Here’s how they work:

  • They identify the specific reason for a remittance such as exports, consulting services, royalties, or software fees.
  • Codes beginning with ‘P’ are used for inward remittances, while ‘S’ is used for outward payments.
  • Banks and regulators rely on these codes to track, verify, and report every foreign exchange transaction accurately.

Why Correct Purpose Code Declaration Matters?

Selecting the right purpose code may feel like a small step, but it directly affects how smoothly your international payments are processed.

Here’s why a correct declaration is critical:

  1. Correct purpose codes help you stay compliant with FEMA regulations and prevent illegal financial practices such as money laundering or misuse of funds.
  2. The RBI uses these codes to build accurate Balance of Payments (BoP) reports, which reflect how India interacts with the global economy.
  3. Missing or incorrect codes can trigger payment holds, rejection by banks, or regulatory reviews that may even invite penalties.
  4. When you send money abroad, the purpose code directly influences how Tax Collected at Source (TCS) is calculated, impacting your overall tax liability and documentation.

Related Read : Mastering Purpose Codes with Razorpay: Streamlining International Payments

RBI Purpose Codes for Inward Remittances

These codes are used when money is received in India from abroad. They help banks report the nature of the incoming funds to RBI.

Code Description Real-life Example
P0103 Advance against export of goods A US buyer sends 30% advance to an Indian garment exporter
P0104 Export receipts not linked to shipping bill Payment for a small sample shipment
P0802 Software services / implementation Payment from a US client for building a mobile app
P0803 Data processing services A company pays an Indian team for data analytics work
P0804 Computer repair services Payment for remote IT support
P0807 Off-site software exports SaaS development done in India for a UK client
P0901 Franchise services A global brand paying franchise fees to an Indian partner
P0902 Licensing income Royalty payment for using software or intellectual property
P1002 Trade-related services commission An agent receives commission for export deals
P1004 Legal services A law firm in India advising a foreign company
P1005 Accounting & auditing services Foreign company paying Indian CA firm
P1006 Business consultancy services Strategy consulting fee from a Dubai client
P1007 Advertising & marketing services Payment for digital marketing services
P1008 Research & development services Foreign company paying Indian R&D contractor
P1009 Architectural or engineering services Overseas client paying Indian architect
P1014 Engineering services Structural design work for overseas project
P1101 Audio-visual services Payment for video editing for a global YouTube channel
P1301 Family maintenance NRI sending money to parents in India
P1302 Personal gifts & donations Wedding gift from relatives abroad
P1401 Salary / employee compensation Indian employee working remotely for US firm
P1404 Interest income Interest received on overseas bonds
P1406 Profit repatriation Overseas subsidiary sending profits to India
P1407 Dividend receipts Indian investor receiving dividends from US stocks
P1501 Refunds on imports Refund received from foreign supplier
P1502 Refund of wrong remittance Bank reversing an incorrect international transfer

Example
If you are a freelance developer getting paid by a US client, the bank will usually tag the payment with P0802 or P0807 (software services).

Explore Razorpay’s Global Payment Solutions

RBI Purpose Codes for Outward Remittances

These codes are used when money is sent from India to another country, including personal transfers, investments, or payments for services.

Code Description Real-life Example
S0001 Investment abroad in equity Buying shares of a US startup
S0002 Investment abroad in debt securities Purchasing US bonds
S0003 Investment abroad in branches Opening a foreign branch office
S0004 Investment abroad in subsidiaries Setting up a US subsidiary
S0005 Investment abroad in real estate Buying property overseas
S0011 Loan to non-resident Lending money to a foreign company
S0012 Loan repayment to foreign lender Repaying an overseas business loan
S0203 Freight payment on imports Paying shipping company for imports
S0204 Freight payment on exports Paying logistics provider abroad
S0301 Business travel expenses Paying hotel and travel costs for overseas conference
S0302 Personal travel under LRS Forex for vacation abroad
S0303 Pilgrimage travel Travel expenses for religious trips
S0304 Medical treatment abroad Paying hospital in Singapore
S0305 Education abroad Tuition payment to US university
S0306 Other travel expenses International credit card travel expenses
S0402 Courier services Paying FedEx or DHL abroad
S0403 Telecom services Payment for international telecom services
S0601 Life insurance premium Paying premium for overseas policy
S0701 Financial services charges International bank processing fees
S0801 Software services payment Paying a foreign software developer
S0802 Software consultancy payment Paying a US SaaS provider
S1002 Commission payments Paying sales agent abroad
S1101 Audio-visual services Paying a foreign video production company
S1201 Government services Fees paid to foreign embassy
S1302 Personal gifts & donations Sending gift money abroad

Example
If you pay a US SaaS company for software subscriptions, the remittance may use S0802 (software consultancy / IT services) depending on the bank classification. 

Understanding Purpose Codes with RTGS and Other Payment Systems

Many Indian exporters and freelancers receive money from abroad, and in their bank account, the final credit often appears as an RTGS, NEFT, or IMPS transaction. This often creates confusion about whether purpose codes are linked to these systems.

In reality, RTGS is only a domestic payment system used within India. It plays no role in deciding the nature of the international transaction. When a cross-border remittance is initiated or received, the foreign exchange component of the payment is governed by RBI and FEMA regulations.

This is where the purpose code becomes mandatory, regardless of how the rupee amount is finally settled domestically through RTGS, NEFT, or IMPS. The purpose code is attached to the conversion of foreign currency into INR, not the domestic leg of the transaction.

Common Mistakes & How to Fix Wrong Codes

RBI purpose codes are mandatory labels used to explain why money is coming into or going out of India in a cross-border transaction. Banks must report every remittance with the correct code to comply with RBI and FEMA regulations.

Common Mistakes

Using the wrong code for your payment type
For example, selecting a goods export code when the payment is actually for consulting or software services.

Choosing generic “other services” codes
These vague codes often trigger bank checks or delays.

Not matching the code with your invoice
If the purpose code doesn’t match your invoice description, the bank may flag the transaction.

Using the wrong code can cause payment delays, compliance queries, or even rejected transfers until the issue is fixed.

How to Fix a Wrong Purpose Code

If a wrong code was used, you can usually correct it through your bank:

  1. Contact your bank’s forex or remittance desk.
  2. Share the UTR number and correct purpose code.
  3. Submit documents like invoice, contract, or payment proof.
  4. Request a corrected FIRC or e-FIRA after the update.

Difference Between SWIFT Code and Purpose Code

Many people confuse SWIFT codes with RBI purpose codes, but they serve completely different roles in international payments.

A SWIFT code identifies the bank involved in the transaction, while a purpose code explains the reason for the transfer. Both are used in cross-border payments, but they solve different problems in the payment process.

Key Differences

Factor SWIFT Code Purpose Code
What it identifies The bank or financial institution receiving the payment The reason for the international transaction
Who defines it Global SWIFT banking network Reserve Bank of India (RBI)
Where it is used Routing international bank transfers Reporting cross-border payments under FEMA
Format 8–11 character bank identifier (e.g., HDFCINBBXXX) Alphanumeric code starting with P (inward) or S (outward)
Purpose Ensures the payment reaches the correct bank Helps RBI classify and monitor foreign exchange transactions

Best Practices for Selecting the Correct Purpose Code

  1. Understand the Reason for the Transaction: First, be clear about why the money is coming in or going out. For inward remittances, know the exact source client payment, export of services, royalty, or sale of goods. For outward remittances, identify the reason: subscription, business payment, vendor fees, or education.
  2. Check RBI’s Official List or Circulars: Purpose codes can change with new regulations. Always review the latest list issued by the RBI or refer to the guidelines shared by your authorised dealer bank. This helps you avoid using outdated codes.
  3. Speak to the Bank’s Forex Desk if Unsure: If there is any doubt, contact the forex department at your bank. They routinely deal with such transactions and can guide you towards the correct code based on your case.
  4. Maintain Clear Documentation: Keep invoices, agreements, declarations, and payment records safely. These documents support the purpose code you use and are important during audits, tax filings, and export reports.
  5. Always Declare Accurately: A wrong or intentionally misleading code can lead to compliance issues and penalties under FEMA. Staying honest and accurate is not only safer, but it also builds trust with your bank and clients.

Pro Tip: Keep a simple checklist of frequently used purpose codes for your business. It helps speed up every remittance and prevents last-minute confusion.

How Razorpay MoneySaver Export Account Simplifies Global Payments

Sending export invoices and receiving money from abroad can feel complicated especially when banks ask for documents, charge high forex fees, or take days to settle the amount. Razorpay MoneySaver Export Account solves this by giving you a simple way to accept international payments, with built-in features that reduce cost and effort.

With Razorpay MoneySaver, you get:

  1. Local bank accounts in the US, UK, Europe, and more so your global clients can pay you easily, just like a domestic transfer.
  2. Zero forex markup you receive the live rate as seen on Google, which means you keep more of what you earn.
  3. Support for 130+ currencies and payments from 180+ countries, which makes it easier to work with global clients.
  4. Automated Digital FIRC and export compliance tools, which save time and reduce manual follow-ups.

Simplify International Payments with Razorpay

Power your global business the right way. Switch from traditional banking to a
compliant, business-grade international payment solution.

Explore Razorpay’s Global Payment Solutions

Conclusion

RBI purpose codes are not just technical terms, they are the foundation of compliant and efficient international transfers. When you identify and declare the correct code, you avoid delays, meet regulatory requirements, and keep your financial records clear.

Working with reliable financial partners, keeping your documents ready, and choosing the right purpose code can turn a complex process into a smooth one. When every international payment is backed by clarity and compliance, it builds trust and keeps your business ready for global opportunities.

FAQs

1. What is an RBI purpose code?

It is an RBI-mandated code that explains why money is being sent or received internationally. It helps classify the nature of the transaction under FEMA rules.

2. Why is selecting the correct purpose code important?

It ensures compliance, avoids delays, supports RBI monitoring, and keeps your export records accurate.

3. What happens if I use an incorrect purpose code?

Your payment may be delayed, rejected, or flagged for review. In some cases, it may also lead to compliance issues under FEMA.

4. Are there different purpose codes for inward and outward remittances?

Yes. ‘P’ codes are used for money coming into India, while ‘S’ codes are used when money is sent outside India.

5. Do RTGS transactions require purpose codes?

No, RTGS itself does not require a purpose code because it only handles domestic transfers.

6. Where can I find a comprehensive list of RBI purpose codes?

You can refer to the RBI’s official website or check with your bank or payment service provider that handles international transfers.