P0103 purpose code: your complete guide to advance export payments

Receiving advance payments from foreign clients? You need the P0103 purpose code. This code tells your bank and RBI that the money you're receiving is an advance against future goods exports.
Getting the purpose code wrong can delay your payment for weeks or trigger compliance issues. This guide shows you exactly when to use P0103, what documents you need, and how to avoid expensive mistakes.
What is P0103 purpose code?
P0103 is an RBI-mandated code for advance payments you receive before shipping goods to foreign buyers. It falls under the "Exports (of Goods)" category in India's foreign exchange reporting system.
The code serves three purposes:
- Tells banks this is pre-shipment money, not post-delivery payment
- Helps RBI track foreign exchange flowing into India
- Links your advance payment to future export documentation (GR, PP, SOFTEX, or SDF forms)
Think of P0103 as a promise label. You're receiving money now and promising to ship goods later.
Example: A textile exporter in Surat receives $50,000 from a US retailer in January for garments to be shipped in March. The exporter uses P0103 because the payment arrives before shipment.
When should you use the P0103 purpose code?
Use P0103 when all three conditions apply:
- You're exporting physical goods (not services)
- Payment arrives before shipment (advance or deposit)
- You'll later match this advance with export documents (GR/PP/SOFTEX/SDF)
Real scenarios where P0103 applies:
Manufacturing advances: A furniture maker receives 40% upfront to start production. They ship finished items two months later.
Bulk orders with deposits: An electronics supplier gets a 50% deposit on a container order. Full shipment happens after manufacturing completes.
Custom product orders: A handicraft exporter receives full payment in advance for custom-designed items that take six weeks to produce.
When P0103 doesn't apply:
Don't use P0103 if you're receiving payment for:
- Goods already shipped (use P0101 or P0102)
- Services or software (use P0802, P1006, or other service codes)
- Exports without proper documentation (use P0104)
- Overdue payments being converted (use P0106 or P0107)
P0103 vs other export purpose codes: what's the difference?
Export purpose codes look similar but serve different stages of the payment cycle. Using the wrong code creates compliance headaches.
P0103 vs P0101
P0101: Payment for goods already shipped with complete export documentation. P0103: Advance payment before goods ship
A garment exporter ships goods in January and receives payment in February = P0101. The same exporter receives payment in January for goods shipped in March = P0103
P0103 vs P0102
P0102: Full invoice payment after goods reach the buyer (collection basis) P0103: Upfront money before production or shipment starts
P0103 vs P0104
P0104: Payment for goods without standard export documentation
P0103: Advance payment that will later link to proper GR/PP/SOFTEX/SDF forms
Use P0104 only when you cannot produce standard export documents.
P0103 vs service codes (P0802, P1006)
P0802/P1006: Payment for services like consulting or software
P0103: Only for physical goods exports
If you're a software developer receiving advance payment for a project, use P0802. P0103 is strictly for tangible products.
Quick decision chart:
- Payment before goods ship → P0103
- Payment after goods ship → P0101 or P0102
- No export documentation → P0104
- Services instead of goods → P0802, P1006, or other service codes
Documents required for P0103 transactions
Banks verify P0103 transactions before processing payments. Keep these documents ready to avoid delays:
Mandatory documents:
Proforma invoice or advance invoice: Shows the goods you'll export and confirms the advance amount. Must clearly state "advance payment" and include shipment timeline.
Sales contract or export agreement: Written agreement with your foreign buyer detailing goods, quantity, price, and payment terms. Link the advance to your export obligation.
Bank payment advice or SWIFT copy: Proof the payment arrived from your buyer. Confirms the transaction amount matches your purpose code declaration.
Additional documents banks may request:
Purchase order from buyer Formal order document showing what the buyer wants and agreed payment terms.
IEC (Import Export Code) Your business registration for import/export activities. Required for all export transactions.
Declaration form Some banks ask you to declare in writing that the money is an advance for future goods exports.
Tips for smooth processing:
- Make sure invoice dates align logically (advance payment can't come before the contract date)
- Keep amounts consistent across all documents
- Clearly mark invoices as "advance" or "proforma"
- Include expected shipment dates
- Store digital copies for quick sharing
Banks typically process P0103 transactions faster when documentation is clean and complete.
How to use P0103 purpose code: step-by-step process
Step 1: Finalise your export contract
Sign an agreement with your foreign buyer that specifies:
- Product details and quantity
- Total order value
- Advance payment amount
- Expected shipment timeline
- Payment terms and method
Step 2: Create a proforma invoice
Issue an advance invoice showing:
- "Proforma Invoice" or "Advance Payment Invoice" header
- Product description
- Advance amount (can be partial or full payment)
- Note that goods will ship later
- Buyer's details and your business information
Step 3: Share the P0103 code with your buyer
Tell your foreign buyer to use P0103 as the purpose code when sending money. Most international payment platforms ask for this code during the transfer setup.
Send them:
- Purpose code: P0103
- Your bank account details
- Expected payment amount
- Invoice reference
Step 4: Notify your bank
Before payment arrives, inform your bank:
- You're expecting an advance payment
- Amount and currency
- Purpose code is P0103
- Attach the export contract and the proforma invoice
This advance notice speeds up processing when money arrives.
Step 5: Provide documents when payment arrives
Banks verify P0103 transactions. Submit:
- Export contract
- Proforma invoice
- SWIFT copy or payment advice
- Any additional forms your bank requires
Step 6: Complete export and link documentation
After shipping goods:
- Generate GR/PP/SOFTEX/SDF forms
- Link these documents to your original P0103 advance payment
- This closes the loop and proves you fulfilled the export obligation
Step 7: Generate eBRC (if applicable)
For GST benefits and export incentives, generate an electronic Bank Realisation Certificate through the DGFT portal. Match your P0103 advance payment with the final shipping documents.
P0103 and eBRC generation: what exporters need to know
An eBRC (electronic Bank Realisation Certificate) proves you received payment for exports. You need eBRC for GST refunds, export incentives, and compliance reporting.
P0103 rules for eBRC generation:
You can generate eBRC with P0103 alone: Unlike P0101 and P0108, P0103 works as a standalone code for eBRC generation.
Shipping date must be on or after the payment date: You cannot generate eBRC if your shipping bill date comes before the advance payment date. This makes logical sense—you can't receive an advance payment after shipping goods.
P0103 can club with other codes: You can combine P0103 with:
- P0807 (for IT services combined with goods)
- Any 01 Product Group codes except P0101 and P0108
- P1505 (for deemed exports)
Example clubbing scenario: You export custom software along with hardware servers. You receive an advance payment covering both. You can use P0103 clubbed with P0807 to generate a single eBRC.
How to generate eBRC with P0103:
- Log into DGFT portal with your IEC credentials
- Navigate to the eBRC section
- Your bank would have uploaded the IRM (Inward Remittance Message)
- Map your shipping documents to the IRM
- Select P0103 as the purpose code
- Verify the shipping date is equal to or after the payment date
- Submit for eBRC generation
Common eBRC issues with P0103:
Shipping date before payment date: The system rejects eBRC if you claim advance payment, but your shipping documents predate the payment. Fix: Ensure date accuracy in all documents.
Currency mismatch: Cannot club IRMs with different currencies. Fix: Generate separate eBRCs for each currency.
Wrong code clubbing: System rejects if you try clubbing P0103 with P0101 or P0108. Fix: Generate separate eBRCs or use correct clubbing combinations.
Common mistakes with P0103 and how to avoid them
Mistake 1: Using P0103 for service payments
The error: A software developer receives an advance payment for coding work and uses P0103.
Why it's wrong: P0103 is only for physical goods exports. Services need different codes (P0802 for software, P1006 for consulting).
The fix: Check if you're exporting tangible products or intangible services. Services always use P08 or P10 series codes.
Mistake 2: Using P0103 after goods have already shipped
The error: An exporter ships goods in January, receives payment in February, and uses P0103.
Why it's wrong: P0103 is for advance payments before shipment. Post-shipment payments need P0101 or P0102.
The fix: Use P0103 only when payment arrives before you ship goods. Use P0101/P0102 for post-shipment payments.
Mistake 3: Incomplete documentation
The error: Exporter provides only a proforma invoice without export contract or SWIFT copy.
Why it's wrong: Banks need complete documentation to verify the advance payment is legitimate and tied to future exports.
The fix: Prepare full document set before requesting payment. Keep everything ready for bank verification.
Mistake 4: Date inconsistencies
The error: Proforma invoice dated March 15, but advance payment arrives March 10. Or shipping bill dated before payment date in eBRC.
Why it's wrong: Dates must follow logical sequence. You can't receive advance payment before creating an invoice. You can't claim advance if shipping happened first.
The fix: Double-check all dates before submitting documents. Payment date should be between invoice date and shipping date.
Mistake 5: Not informing buyer about purpose code
The error: Exporter assumes buyer knows the correct purpose code. Buyer sends money with wrong code or no code.
Why it's wrong: Payment gets stuck in bank verification. Can delay receipt by weeks.
The fix: Always share the exact purpose code (P0103) with your buyer before they initiate payment. Include it in your payment instructions.
Mistake 6: Using P0103 for partial shipments already made
The error: Exporter ships 30% of order, receives balance payment, and uses P0103.
Why it's wrong: P0103 is for advance before any shipment. Partial shipments need different handling.
The fix: Use P0103 only for payments received before first shipment. For payments after partial shipments, consult your bank on correct code.
What happens if you use the wrong purpose code?
Using incorrect purpose codes creates cascading problems. Here's what goes wrong and how to fix it:
Immediate consequences:
Payment gets stuck Your bank puts the transaction on hold for verification. Money sits in a suspense account instead of your business account.
Timeline: Typically 3-7 business days, sometimes longer.
Manual review required Compliance team contacts you for documentation. You must explain the mismatch and provide correct information.
Timeline: Adds another 5-10 business days to resolution.
Payment returned to sender In severe mismatches, banks reject the transaction entirely. Money goes back to your foreign buyer.
Timeline: 7-14 business days for reversal, then you start over with correct code.
Long-term compliance issues:
FEMA violation flags Repeated wrong codes signal poor compliance. RBI monitoring systems flag your account for closer scrutiny.
Impact: Future transactions face more verification steps, slowing all payments.
Incorrect BoP reporting Your transaction gets mis-categorized in India's Balance of Payments statistics. While this doesn't directly harm you, it violates reporting requirements.
Impact: Regulatory audit trail shows inconsistencies.
eBRC generation problems Wrong purpose codes create document mismatches. You cannot generate eBRC needed for GST refunds and export benefits.
Impact: Cannot claim export incentives until you fix the classification.
Tax and audit complications Your export income classification affects tax filing. Wrong purpose codes create accounting mess during tax season or audits.
Impact: Extra work reconciling transactions, potential tax notices.
Real cost of wrong codes:
Consider a ₹20 lakh advance payment with wrong purpose code:
- Payment delayed 2 weeks = lost production time
- If you're paying interest on working capital = ₹15,000-20,000 in extra interest
- Opportunity cost of delayed order fulfillment = potential client dissatisfaction
- Staff time fixing the issue = 8-10 hours across finance and compliance teams
How to fix wrong purpose code issues:
Step 1: Contact your bank immediately Don't wait for the bank to reach out. Call your relationship manager and explain the situation.
Step 2: Submit corrected declaration Provide written statement explaining the error and declaring the correct purpose code. Include all supporting documents.
Step 3: Provide full documentation Submit complete paperwork proving the correct classification:
- For P0103: export contract, proforma invoice, proof this is advance payment
- For other codes: whatever documents justify that classification
Step 4: Request expedited processing Ask bank to prioritize correction. Explain business impact if relevant (urgent production, client deadline, etc.).
Step 5: Follow up daily Stay in touch with bank until payment clears. Check status every 24 hours.
Step 6: Prevent future errors Create internal checklist for purpose code selection. Train staff on when to use which codes.
Prevention is cheaper than a cure:
- Maintain the purpose code quick reference guide
- Verify the code with the bank before sharing it with a foreign buyer
- Keep the latest RBI purpose code list accessible
- When uncertain, consult your bank before payment—not after
Most banks help clients select the correct codes if asked proactively. They'd rather guide you upfront than fix errors later.
Disclaimer: The information provided in this blog is for general informational purposes only and does not constitute financial or legal advice. Winvesta makes no representations or warranties about the accuracy or suitability of the content and recommends consulting a professional before making any financial decisions.
Get paid globally. Keep more of it.
No FX markups. No GST. Funds in 1 day.

Table of Contents

Receiving advance payments from foreign clients? You need the P0103 purpose code. This code tells your bank and RBI that the money you're receiving is an advance against future goods exports.
Getting the purpose code wrong can delay your payment for weeks or trigger compliance issues. This guide shows you exactly when to use P0103, what documents you need, and how to avoid expensive mistakes.
What is P0103 purpose code?
P0103 is an RBI-mandated code for advance payments you receive before shipping goods to foreign buyers. It falls under the "Exports (of Goods)" category in India's foreign exchange reporting system.
The code serves three purposes:
- Tells banks this is pre-shipment money, not post-delivery payment
- Helps RBI track foreign exchange flowing into India
- Links your advance payment to future export documentation (GR, PP, SOFTEX, or SDF forms)
Think of P0103 as a promise label. You're receiving money now and promising to ship goods later.
Example: A textile exporter in Surat receives $50,000 from a US retailer in January for garments to be shipped in March. The exporter uses P0103 because the payment arrives before shipment.
When should you use the P0103 purpose code?
Use P0103 when all three conditions apply:
- You're exporting physical goods (not services)
- Payment arrives before shipment (advance or deposit)
- You'll later match this advance with export documents (GR/PP/SOFTEX/SDF)
Real scenarios where P0103 applies:
Manufacturing advances: A furniture maker receives 40% upfront to start production. They ship finished items two months later.
Bulk orders with deposits: An electronics supplier gets a 50% deposit on a container order. Full shipment happens after manufacturing completes.
Custom product orders: A handicraft exporter receives full payment in advance for custom-designed items that take six weeks to produce.
When P0103 doesn't apply:
Don't use P0103 if you're receiving payment for:
- Goods already shipped (use P0101 or P0102)
- Services or software (use P0802, P1006, or other service codes)
- Exports without proper documentation (use P0104)
- Overdue payments being converted (use P0106 or P0107)
P0103 vs other export purpose codes: what's the difference?
Export purpose codes look similar but serve different stages of the payment cycle. Using the wrong code creates compliance headaches.
P0103 vs P0101
P0101: Payment for goods already shipped with complete export documentation. P0103: Advance payment before goods ship
A garment exporter ships goods in January and receives payment in February = P0101. The same exporter receives payment in January for goods shipped in March = P0103
P0103 vs P0102
P0102: Full invoice payment after goods reach the buyer (collection basis) P0103: Upfront money before production or shipment starts
P0103 vs P0104
P0104: Payment for goods without standard export documentation
P0103: Advance payment that will later link to proper GR/PP/SOFTEX/SDF forms
Use P0104 only when you cannot produce standard export documents.
P0103 vs service codes (P0802, P1006)
P0802/P1006: Payment for services like consulting or software
P0103: Only for physical goods exports
If you're a software developer receiving advance payment for a project, use P0802. P0103 is strictly for tangible products.
Quick decision chart:
- Payment before goods ship → P0103
- Payment after goods ship → P0101 or P0102
- No export documentation → P0104
- Services instead of goods → P0802, P1006, or other service codes
Documents required for P0103 transactions
Banks verify P0103 transactions before processing payments. Keep these documents ready to avoid delays:
Mandatory documents:
Proforma invoice or advance invoice: Shows the goods you'll export and confirms the advance amount. Must clearly state "advance payment" and include shipment timeline.
Sales contract or export agreement: Written agreement with your foreign buyer detailing goods, quantity, price, and payment terms. Link the advance to your export obligation.
Bank payment advice or SWIFT copy: Proof the payment arrived from your buyer. Confirms the transaction amount matches your purpose code declaration.
Additional documents banks may request:
Purchase order from buyer Formal order document showing what the buyer wants and agreed payment terms.
IEC (Import Export Code) Your business registration for import/export activities. Required for all export transactions.
Declaration form Some banks ask you to declare in writing that the money is an advance for future goods exports.
Tips for smooth processing:
- Make sure invoice dates align logically (advance payment can't come before the contract date)
- Keep amounts consistent across all documents
- Clearly mark invoices as "advance" or "proforma"
- Include expected shipment dates
- Store digital copies for quick sharing
Banks typically process P0103 transactions faster when documentation is clean and complete.
How to use P0103 purpose code: step-by-step process
Step 1: Finalise your export contract
Sign an agreement with your foreign buyer that specifies:
- Product details and quantity
- Total order value
- Advance payment amount
- Expected shipment timeline
- Payment terms and method
Step 2: Create a proforma invoice
Issue an advance invoice showing:
- "Proforma Invoice" or "Advance Payment Invoice" header
- Product description
- Advance amount (can be partial or full payment)
- Note that goods will ship later
- Buyer's details and your business information
Step 3: Share the P0103 code with your buyer
Tell your foreign buyer to use P0103 as the purpose code when sending money. Most international payment platforms ask for this code during the transfer setup.
Send them:
- Purpose code: P0103
- Your bank account details
- Expected payment amount
- Invoice reference
Step 4: Notify your bank
Before payment arrives, inform your bank:
- You're expecting an advance payment
- Amount and currency
- Purpose code is P0103
- Attach the export contract and the proforma invoice
This advance notice speeds up processing when money arrives.
Step 5: Provide documents when payment arrives
Banks verify P0103 transactions. Submit:
- Export contract
- Proforma invoice
- SWIFT copy or payment advice
- Any additional forms your bank requires
Step 6: Complete export and link documentation
After shipping goods:
- Generate GR/PP/SOFTEX/SDF forms
- Link these documents to your original P0103 advance payment
- This closes the loop and proves you fulfilled the export obligation
Step 7: Generate eBRC (if applicable)
For GST benefits and export incentives, generate an electronic Bank Realisation Certificate through the DGFT portal. Match your P0103 advance payment with the final shipping documents.
P0103 and eBRC generation: what exporters need to know
An eBRC (electronic Bank Realisation Certificate) proves you received payment for exports. You need eBRC for GST refunds, export incentives, and compliance reporting.
P0103 rules for eBRC generation:
You can generate eBRC with P0103 alone: Unlike P0101 and P0108, P0103 works as a standalone code for eBRC generation.
Shipping date must be on or after the payment date: You cannot generate eBRC if your shipping bill date comes before the advance payment date. This makes logical sense—you can't receive an advance payment after shipping goods.
P0103 can club with other codes: You can combine P0103 with:
- P0807 (for IT services combined with goods)
- Any 01 Product Group codes except P0101 and P0108
- P1505 (for deemed exports)
Example clubbing scenario: You export custom software along with hardware servers. You receive an advance payment covering both. You can use P0103 clubbed with P0807 to generate a single eBRC.
How to generate eBRC with P0103:
- Log into DGFT portal with your IEC credentials
- Navigate to the eBRC section
- Your bank would have uploaded the IRM (Inward Remittance Message)
- Map your shipping documents to the IRM
- Select P0103 as the purpose code
- Verify the shipping date is equal to or after the payment date
- Submit for eBRC generation
Common eBRC issues with P0103:
Shipping date before payment date: The system rejects eBRC if you claim advance payment, but your shipping documents predate the payment. Fix: Ensure date accuracy in all documents.
Currency mismatch: Cannot club IRMs with different currencies. Fix: Generate separate eBRCs for each currency.
Wrong code clubbing: System rejects if you try clubbing P0103 with P0101 or P0108. Fix: Generate separate eBRCs or use correct clubbing combinations.
Common mistakes with P0103 and how to avoid them
Mistake 1: Using P0103 for service payments
The error: A software developer receives an advance payment for coding work and uses P0103.
Why it's wrong: P0103 is only for physical goods exports. Services need different codes (P0802 for software, P1006 for consulting).
The fix: Check if you're exporting tangible products or intangible services. Services always use P08 or P10 series codes.
Mistake 2: Using P0103 after goods have already shipped
The error: An exporter ships goods in January, receives payment in February, and uses P0103.
Why it's wrong: P0103 is for advance payments before shipment. Post-shipment payments need P0101 or P0102.
The fix: Use P0103 only when payment arrives before you ship goods. Use P0101/P0102 for post-shipment payments.
Mistake 3: Incomplete documentation
The error: Exporter provides only a proforma invoice without export contract or SWIFT copy.
Why it's wrong: Banks need complete documentation to verify the advance payment is legitimate and tied to future exports.
The fix: Prepare full document set before requesting payment. Keep everything ready for bank verification.
Mistake 4: Date inconsistencies
The error: Proforma invoice dated March 15, but advance payment arrives March 10. Or shipping bill dated before payment date in eBRC.
Why it's wrong: Dates must follow logical sequence. You can't receive advance payment before creating an invoice. You can't claim advance if shipping happened first.
The fix: Double-check all dates before submitting documents. Payment date should be between invoice date and shipping date.
Mistake 5: Not informing buyer about purpose code
The error: Exporter assumes buyer knows the correct purpose code. Buyer sends money with wrong code or no code.
Why it's wrong: Payment gets stuck in bank verification. Can delay receipt by weeks.
The fix: Always share the exact purpose code (P0103) with your buyer before they initiate payment. Include it in your payment instructions.
Mistake 6: Using P0103 for partial shipments already made
The error: Exporter ships 30% of order, receives balance payment, and uses P0103.
Why it's wrong: P0103 is for advance before any shipment. Partial shipments need different handling.
The fix: Use P0103 only for payments received before first shipment. For payments after partial shipments, consult your bank on correct code.
What happens if you use the wrong purpose code?
Using incorrect purpose codes creates cascading problems. Here's what goes wrong and how to fix it:
Immediate consequences:
Payment gets stuck Your bank puts the transaction on hold for verification. Money sits in a suspense account instead of your business account.
Timeline: Typically 3-7 business days, sometimes longer.
Manual review required Compliance team contacts you for documentation. You must explain the mismatch and provide correct information.
Timeline: Adds another 5-10 business days to resolution.
Payment returned to sender In severe mismatches, banks reject the transaction entirely. Money goes back to your foreign buyer.
Timeline: 7-14 business days for reversal, then you start over with correct code.
Long-term compliance issues:
FEMA violation flags Repeated wrong codes signal poor compliance. RBI monitoring systems flag your account for closer scrutiny.
Impact: Future transactions face more verification steps, slowing all payments.
Incorrect BoP reporting Your transaction gets mis-categorized in India's Balance of Payments statistics. While this doesn't directly harm you, it violates reporting requirements.
Impact: Regulatory audit trail shows inconsistencies.
eBRC generation problems Wrong purpose codes create document mismatches. You cannot generate eBRC needed for GST refunds and export benefits.
Impact: Cannot claim export incentives until you fix the classification.
Tax and audit complications Your export income classification affects tax filing. Wrong purpose codes create accounting mess during tax season or audits.
Impact: Extra work reconciling transactions, potential tax notices.
Real cost of wrong codes:
Consider a ₹20 lakh advance payment with wrong purpose code:
- Payment delayed 2 weeks = lost production time
- If you're paying interest on working capital = ₹15,000-20,000 in extra interest
- Opportunity cost of delayed order fulfillment = potential client dissatisfaction
- Staff time fixing the issue = 8-10 hours across finance and compliance teams
How to fix wrong purpose code issues:
Step 1: Contact your bank immediately Don't wait for the bank to reach out. Call your relationship manager and explain the situation.
Step 2: Submit corrected declaration Provide written statement explaining the error and declaring the correct purpose code. Include all supporting documents.
Step 3: Provide full documentation Submit complete paperwork proving the correct classification:
- For P0103: export contract, proforma invoice, proof this is advance payment
- For other codes: whatever documents justify that classification
Step 4: Request expedited processing Ask bank to prioritize correction. Explain business impact if relevant (urgent production, client deadline, etc.).
Step 5: Follow up daily Stay in touch with bank until payment clears. Check status every 24 hours.
Step 6: Prevent future errors Create internal checklist for purpose code selection. Train staff on when to use which codes.
Prevention is cheaper than a cure:
- Maintain the purpose code quick reference guide
- Verify the code with the bank before sharing it with a foreign buyer
- Keep the latest RBI purpose code list accessible
- When uncertain, consult your bank before payment—not after
Most banks help clients select the correct codes if asked proactively. They'd rather guide you upfront than fix errors later.
Disclaimer: The information provided in this blog is for general informational purposes only and does not constitute financial or legal advice. Winvesta makes no representations or warranties about the accuracy or suitability of the content and recommends consulting a professional before making any financial decisions.
Get paid globally. Keep more of it.
No FX markups. No GST. Funds in 1 day.



