Accept International Payments from India Beta
When buyers of your goods or services are located outside India
You can increase your success rates by presenting your international payments in your customer’s local currency. We support 135+ currencies on Visa and Mastercard, as well as USD on American Express. In order to do so, these transactions will have to be declared as “exports”.
When your customer is based outside India, you should certainly consider localizing your presentment currency to match that of the customer’s card e.g. USD, EUR, JPY etc. This will ensure a higher likelihood of a successful charge by the customer’s card issuing bank, as opposed to presenting in INR, which in some cases may be declined with a generic decline code, due to a mistaken perception of a fraudulent charge.
Stripe supports presentment in 135+ currencies. In order to present in a non-INR currency, you will need to provide additional information in onboarding and in API requests, since these transactions are considered exports from India.
You can find frequently asked questions (FAQs) about Stripe in India here in India FAQ.
Onboarding
To enable export transactions, you must do the following when submitting your account application:
-
Opt in to exports: In the account application, check the applicable box under the ‘I am exporting products to customers located outside India’ section. If you do not opt in, you will only be able to make export charges in test mode.
-
Submit your importer/exporter code (IEC) if you have one, or you sell physical goods, or you sell services and utilise certain benefits under India’s Foreign Trade Policy. Otherwise, an IEC is not required. The IEC is a code issued by the Indian Director General of Foreign Trade (DGFT) to Indian companies that intend to export from India. You can apply for an IEC at the DGFT website.
-
Specify a transaction purpose code. The transaction purpose code describes the nature of a payment received in foreign currency. The list of valid transaction purpose codes is maintained by the Reserve Bank of India (RBI). You must select the code which is closest to your product from the drop-down on the account application.
The list of transaction purpose codes supported by Stripe is copied below.
Opting in or updating export details after account activation
You may opt into the ability to present in non-INR currencies, change your IEC, if applicable, or change your transaction purpose code after the onboarding process at the Dashboard. Also, if needed, you may use the same IEC if you have multiple export businesses, as long as the IEC is in the name of a common beneficial owner of both businesses.
A Stripe account can only have a single transaction purpose code.
Valid charges
For every international payment presented in a non-INR currency to a customer holding a non-Indian card, you will need to send Stripe these additional fields. This is for regulatory reporting, required by our bank partner.
- The buyer’s name
- Their billing address with a valid 2-alphabet ISO-3166 country code
- The charge description
- If you sell physical goods (not services), a shipping address is also mandatory, with a valid 2-alphabet ISO-3166 code
Please see the code samples below to understand in which fields these items must be sent to Stripe.
Payouts
Funds collected from both domestic and international payments are paid out to you in INR separately by Stripe.
If you process both domestic and international payments, you may have two payouts on the same day, with an International label for the relevant payouts in your dashboard.
International payments for services
Every international payment for services is required to have the buyer’s name
, billing address
and a description
of the service being exported.
This information is required by our financial partners.
Pass the description of service in the Payment Intents API as shown below
curl https://api.stripe.com/v1/payment_intents \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d amount=1099 \ -d currency=usd \ -d description="Software development services"
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' payment_intent = Stripe::PaymentIntent.create({ amount: 1099, currency: 'usd', description: 'Software development services', })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' payment_intent = stripe.PaymentIntent.create( amount=1099, currency='usd', description='Software development services', )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $payment_intent = \Stripe\PaymentIntent::create([ 'amount' => 1099, 'currency' => 'usd', 'description' => 'Software development services', ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() .setAmount(1099L) .setCurrency("usd") .setDescription("Software development services") .build(); PaymentIntent paymentIntent = PaymentIntent.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); paymentIntent = await stripe.paymentIntents.create({ amount: 1099, currency: 'usd', description: 'Software development services', })
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.PaymentIntentParams{ Amount: stripe.Int64(1099), Currency: stripe.String(string(stripe.CurrencyUSD)), Description: stripe.String("Software development services"), } i, _ := paymentintent.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new PaymentIntentCreateOptions { Amount = 1099, Currency = "usd", Description = "Software development services", }; var service = new PaymentIntentService(); var intent = service.Create(options);
Pass the customer name and billing address in Customer Creation API as shown below
curl https://api.stripe.com/v1/customers \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d name="Jenny Rosen" \ -d "address[line1]"="510 Townsend St" \ -d "address[postal_code]"=98140 \ -d "address[city]"="San Francisco" \ -d "address[state]"=CA \ -d "address[country]"=US
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = Stripe::Customer.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = stripe.Customer.create( name='Jenny Rosen', address={ 'line1': '510 Townsend St', 'postal_code': '98140', 'city': 'San Francisco', 'state': 'CA', 'country': 'US', }, )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $customer = \Stripe\Customer::create([ 'name' => 'Jenny Rosen', 'address' => [ 'line1' => '510 Townsend St', 'postal_code' => '98140', 'city' => 'San Francisco', 'state' => 'CA', 'country' => 'US', ], ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CustomerCreateParams params = CustomerCreateParams.builder() .setName("Jenny Rosen") .setAddress( CustomerCreateParams.Address.builder() .setLine1("510 Townsend St") .setPostalCode("98140") .setCity("San Francisco") .setState("CA") .setCountry("US") .build()) .build(); Customer customer = Customer.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); var customer = await stripe.customers.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } });
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.CustomerParams{ Name: stripe.String("Jenny Rosen"), Address: &stripe.AddressParams{ Line1: stripe.String("510 Townsend St"), PostalCode: stripe.String("98140"), City: stripe.String("San Francisco"), State: stripe.String("CA"), Country: stripe.String("US"), }, } c, _ := customer.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CustomerCreateOptions { Name = "Jenny Rosen", Address = new AddressOptions { Line1 = "510 Townsend St", PostalCode = "98140", City = "San Francisco", State = "CA", Country = "US", }, }; var service = new CustomerService(); var customer = service.Create(options);
That’s it! This payment has been declared as an export transaction.
International payments for goods
Every international payment for goods is required to have the buyer’s name
, billing address
, description
and shipping address
. This information is required by our financial partners.
This information is required by our financial partners.
Pass the description
of the item and a shipping address
in the Payment Intents API as shown below
curl https://api.stripe.com/v1/payment_intents \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d description="Software development services" \ -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="510 Townsend St" \ -d "shipping[address][postal_code]"=98140 \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"=CA \ -d "shipping[address][country]"=US \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' payment_intent = Stripe::PaymentIntent.create({ description: 'Software development services', shipping: { name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', }, }, amount: 1099, currency: 'usd', payment_method_types: ['card'], })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' payment_intent = stripe.PaymentIntent.create( description='Software development services', shipping={ 'name': 'Jenny Rosen', 'address': { 'line1': '510 Townsend St', 'postal_code': '98140', 'city': 'San Francisco', 'state': 'CA', 'country': 'US', }, }, amount=1099, currency='usd', payment_method_types=['card'], )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $payment_intent = \Stripe\PaymentIntent::create([ 'description' => 'Software development services', 'shipping' => [ 'name' => 'Jenny Rosen', 'address' => [ 'line1' => '510 Townsend St', 'postal_code' => '98140', 'city' => 'San Francisco', 'state' => 'CA', 'country' => 'US', ], ], 'amount' => 1099, 'currency' => 'usd', 'payment_method_types' => ['card'], ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; PaymentIntentCreateParams params = PaymentIntentCreateParams.builder() .setDescription("Software development services") .setShipping( PaymentIntentCreateParams.Shipping.builder() .setName("Jenny Rosen") .setAddress( PaymentIntentCreateParams.Shipping.Address.builder() .setLine1("510 Townsend St") .setPostalCode("98140") .setCity("San Francisco") .setState("CA") .setCountry("US") .build()) .build()) .setAmount(1099L) .setCurrency("usd") .addPaymentMethodType("card") .build(); PaymentIntent paymentIntent = PaymentIntent.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); paymentIntent = await stripe.paymentIntents.create({ description: 'Software development services', shipping: { name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', }, }, amount: 1099, currency: 'usd', payment_method_types: ['card'], })
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.PaymentIntentParams{ Description: stripe.String("Software development services"), Shipping: &stripe.ShippingDetailsParams{ Name: stripe.String("Jenny Rosen"), Address: &stripe.AddressParams{ Line1: stripe.String("510 Townsend St"), PostalCode: stripe.String("98140"), City: stripe.String("San Francisco"), State: stripe.String("CA"), Country: stripe.String("US"), }, }, Amount: stripe.Int64(1099), Currency: stripe.String(string(stripe.CurrencyUSD)), PaymentMethodTypes: stripe.StringSlice([]string{ "card", }), } i, _ := paymentintent.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new PaymentIntentCreateOptions { Description = "Software development services", Shipping = new ChargeShippingOptions { Name = "Jenny Rosen", Address = new AddressOptions { Line1 = "510 Townsend St", PostalCode = "98140", City = "San Francisco", State = "CA", Country = "US", }, }, Amount = 1099, Currency = "usd", PaymentMethodTypes = new List<string> { "fpx", }, }; var service = new PaymentIntentService(); var intent = service.Create(options);
Pass the customer name
and billing address
in Customer Creation API as shown below
curl https://api.stripe.com/v1/customers \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d name="Jenny Rosen" \ -d "address[line1]"="510 Townsend St" \ -d "address[postal_code]"=98140 \ -d "address[city]"="San Francisco" \ -d "address[state]"=CA \ -d "address[country]"=US
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = Stripe::Customer.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = stripe.Customer.create( name='Jenny Rosen', address={ 'line1': '510 Townsend St', 'postal_code': '98140', 'city': 'San Francisco', 'state': 'CA', 'country': 'US', }, )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $customer = \Stripe\Customer::create([ 'name' => 'Jenny Rosen', 'address' => [ 'line1' => '510 Townsend St', 'postal_code' => '98140', 'city' => 'San Francisco', 'state' => 'CA', 'country' => 'US', ], ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CustomerCreateParams params = CustomerCreateParams.builder() .setName("Jenny Rosen") .setAddress( CustomerCreateParams.Address.builder() .setLine1("510 Townsend St") .setPostalCode("98140") .setCity("San Francisco") .setState("CA") .setCountry("US") .build()) .build(); Customer customer = Customer.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); var customer = await stripe.customers.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } });
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.CustomerParams{ Name: stripe.String("Jenny Rosen"), Address: &stripe.AddressParams{ Line1: stripe.String("510 Townsend St"), PostalCode: stripe.String("98140"), City: stripe.String("San Francisco"), State: stripe.String("CA"), Country: stripe.String("US"), }, } c, _ := customer.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CustomerCreateOptions { Name = "Jenny Rosen", Address = new AddressOptions { Line1 = "510 Townsend St", PostalCode = "98140", City = "San Francisco", State = "CA", Country = "US", }, }; var service = new CustomerService(); var customer = service.Create(options);
That’s it! This payment has been declared as an export transaction.
Fighting fraud
International card payments do not require 2-factor authentication and hence have a higher risk of fraud.
Stripe Radar is our suite of modern tools that uses machine learning to detect and block fraudulent payments. It’s fully integrated into your payments flow and you can start using it without any additional development time.
Additional features include rules for blocking payments based upon your own business logic and reviews of unusual payments that have an elevated risk of fraud.
Accepting recurring international payments (Stripe Billing)
You can use Stripe Billing to bill your international customers via Subscriptions and Invoices.
For recurring international payments related to services, the only change you need is to provide a buyer’s name
and an address
.
curl https://api.stripe.com/v1/customers \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d name="Jenny Rosen" \ -d "address[line1]"="510 Townsend St" \ -d "address[postal_code]"=98140 \ -d "address[city]"="San Francisco" \ -d "address[state]"=CA \ -d "address[country]"=US
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = Stripe::Customer.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = stripe.Customer.create( name='Jenny Rosen', address={ 'line1': '510 Townsend St', 'postal_code': '98140', 'city': 'San Francisco', 'state': 'CA', 'country': 'US', }, )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $customer = \Stripe\Customer::create([ 'name' => 'Jenny Rosen', 'address' => [ 'line1' => '510 Townsend St', 'postal_code' => '98140', 'city' => 'San Francisco', 'state' => 'CA', 'country' => 'US', ], ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CustomerCreateParams params = CustomerCreateParams.builder() .setName("Jenny Rosen") .setAddress( CustomerCreateParams.Address.builder() .setLine1("510 Townsend St") .setPostalCode("98140") .setCity("San Francisco") .setState("CA") .setCountry("US") .build()) .build(); Customer customer = Customer.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); var customer = await stripe.customers.create({ name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', } });
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.CustomerParams{ Name: stripe.String("Jenny Rosen"), Address: &stripe.AddressParams{ Line1: stripe.String("510 Townsend St"), PostalCode: stripe.String("98140"), City: stripe.String("San Francisco"), State: stripe.String("CA"), Country: stripe.String("US"), }, } c, _ := customer.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CustomerCreateOptions { Name = "Jenny Rosen", Address = new AddressOptions { Line1 = "510 Townsend St", PostalCode = "98140", City = "San Francisco", State = "CA", Country = "US", }, }; var service = new CustomerService(); var customer = service.Create(options);
You do not have to provide a description
, because Stripe will generate one from the
description on your invoice items. Therefore, you should ensure that the description on your invoice
items accurately reflects your product:
curl https://api.stripe.com/v1/invoiceitems \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d customer=cus_Ej0c314UoUXBgX \ -d amount=2500 \ -d currency=usd \ -d description="One-time setup fee"
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' invoice_item = Stripe::InvoiceItem.create({ customer: 'cus_Ej0c314UoUXBgX', amount: 2500, currency: 'usd', description: 'One-time setup fee', })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' invoice_item = stripe.InvoiceItem.create( customer='cus_Ej0c314UoUXBgX', amount=2500, currency='usd', description='One-time setup fee', )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $invoice_item = \Stripe\InvoiceItem::create([ 'customer' => 'cus_Ej0c314UoUXBgX', 'amount' => 2500, 'currency' => 'usd', 'description' => 'One-time setup fee', ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; InvoiceItemCreateParams params = InvoiceItemCreateParams.builder() .setCustomer("cus_Ej0c314UoUXBgX") .setAmount(2500L) .setCurrency("usd") .setDescription("One-time setup fee") .build(); InvoiceItem invoiceItem = InvoiceItem.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const invoiceItem = await stripe.invoiceItems.create({ customer: 'cus_Ej0c314UoUXBgX', amount: 2500, currency: 'usd', description: 'One-time setup fee', })
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.InvoiceItemParams{ Customer: stripe.String("cus_Ej0c314UoUXBgX"), Amount: stripe.Int64(2500), Currency: stripe.String(string(stripe.CurrencyUSD)), Description: stripe.String("One-time setup fee"), } ii, _ := invoiceitem.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new InvoiceItemCreateOptions { Customer = "cus_Ej0c314UoUXBgX", Amount = 1099, Currency = "usd", Description = "One-time setup fee", }; var service = new InvoiceItemService(); var invoiceItem = service.Create(options);
For recurring international payments related to physical goods, please also provide a shipping address
in the Customer Creation API.
curl https://api.stripe.com/v1/customers \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="510 Townsend St" \ -d "shipping[address][postal_code]"=98140 \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"=CA \ -d "shipping[address][country]"=US
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = Stripe::Customer.create({ shipping: { name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', }, } })
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' customer = stripe.Customer.create( shipping={ 'name': 'Jenny Rosen', 'address': { 'line1': '510 Townsend St', 'postal_code': '98140', 'city': 'San Francisco', 'state': 'CA', 'country': 'US', } } )
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $customer = \Stripe\Customer::create([ 'shipping' => [ 'name' => 'Jenny Rosen', 'address' => [ 'line1' => '510 Townsend St', 'postal_code' => '98140', 'city' => 'San Francisco', 'state' => 'CA', 'country' => 'US', ], ], ]);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CustomerCreateParams params = CustomerCreateParams.builder() .setDescription("Software development services") .setShipping( CustomerCreateParams.Shipping.builder() .setName("Jenny Rosen") .setAddress( CustomerCreateParams.Address.builder() .setLine1("510 Townsend St") .setPostalCode("98140") .setCity("San Francisco") .setState("CA") .setCountry("US") .build()) .build()) .build(); Customer customer = Customer.create(params);
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const Stripe = require('stripe'); const stripe = Stripe('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); var customer = await stripe.customers.create({ shipping: { name: 'Jenny Rosen', address: { line1: '510 Townsend St', postal_code: '98140', city: 'San Francisco', state: 'CA', country: 'US', }, }, });
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.CustomerParams{ Shipping: &stripe.ShippingDetailsParams{ Name: stripe.String("Jenny Rosen"), Address: &stripe.AddressParams{ Line1: stripe.String("510 Townsend St"), PostalCode: stripe.String("98140"), City: stripe.String("San Francisco"), State: stripe.String("CA"), Country: stripe.String("US"), }, }, } c, _ := customer.New(params)
// Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CustomerCreateOptions { Shipping = new ChargeShippingOptions { Name = "Jenny Rosen", Address = new AddressOptions { Line1 = "510 Townsend St", PostalCode = "98140", City = "San Francisco", State = "CA", Country = "US", }, }, }; var service = new CustomerService(); var customer = service.Create(options);
Recurring payments best practices
When selling to international customers, 3D Secure is not mandatory. You may notice a higher dispute rate than when you were selling to Indian customers.
We often see disputes from customers claiming that they were charged even after they cancelled their subscription. Here are some best practices to avoid these disputes:
- Make it clear on your signup page that your customers are agreeing to a recurring payment and include information about whether or not you plan to notify the customer before each payment. Make sure cancellation procedures are clearly communicated to your customers, and clearly state the window in which a subscription can be canceled. Include copies of these procedures in a visible terms of service page.
- If offering a free or discounted trial period, be sure to clearly communicate the length of the trial and the date full price billing will occur. You should also clearly display the amount of the standard pricing above the payment button on your checkout page.
- Cancel subscriptions within two business days of initial request, making sure to pass the cancellation along to Stripe if you use our subscription functionality. Per card network rules, you may also only make eight attempts per card after an initial decline, so be sure to close out any subscriptions that have already reached this limit. Provide your customer with a confirmation of the cancellation.
- Have a clear way for customers to contact you if requesting cancellation. If customers have questions about their subscription, they are more likely to submit a dispute if you are difficult to reach. You can track your overall dispute activity under the Analytics section in your Dashboard.
Learn more about dispute prevention and common reasons why cardholders file disputes.
Monthly payment advice for export transactions
Standard Chartered Bank (SCB) will issue payment advice directly to your registered Stripe email address the same day your export payout is being processed. This will include a list of export charges that are part of the specific export payout.
Transaction Purpose Code Listing
Below is a list of the Transaction Purpose Codes that currently can be selected in onboarding. If you need to use a Transaction Purpose Code that’s not in this list, please contact support-in@stripe.com.
Code | Description |
---|---|
P0101 | Value of export bills negotiated / purchased/discounted etc. (covered under GR/PP/SOFTEX/EC copy of shipping bills etc.) – Other than Nepal and Bhutan. |
P0102 | Realisation of export bills (in respect of goods) sent on collection (full invoice value) – Other than Nepal and Bhutan. |
P0103 | Advance receipts against export contracts, which will be covered later by GR/PP/SOFTEX/SDF – other than Nepal and Bhutan. |
P0104 | Receipts against export of goods not covered by the GR /PP /SOFTEX /EC copy of shipping bill etc. (under Intermediary/transit trade, i.e., third country export passing through India |
P0105 | Export bills (in respect of goods) sent on collection – other than Nepal and Bhutan |
P0107 | Realisation of NPD export bills (full value of bill to be reported) – other than Nepal and Bhutan |
P0108 | Goods sold under merchanting / Receipt against export leg of merchanting trade |
P0109 | Export realisation on account of exports to Nepal and Bhutan, if any |
P0214 | Receipts on account of other transportation services (stevedoring, demurrage, port handling charges etc).(Shipping Companies) |
P0215 | Receipts on account of other transportation services (stevedoring, demurrage, port handling charges etc).( Airlines companies) |
P0216 | Receipts of freight fare -Shipping companies operating abroad |
P0217 | Receipts of passenger fare by Indian Shipping companies operating abroad |
P0218 | Other receipts by Shipping companies |
P0219 | Receipts of freight fare by Indian Airlines companies operating abroad |
P0220 | Receipts of passenger fare –Airlines |
P0221 | Other receipts by Airlines companies |
P0224 | Postal & Courier services by Air |
P0225 | Postal & Courier services by Sea |
P0226 | Postal & Courier services by others |
P0301 | Purchases towards travel (Includes purchases of foreign TCs, currency notes etc over the counter, by hotels, Emporiums, institutions etc. as well as amount received by TT/SWIFT transfers or debit to Non-Resident account). |
P0302 | Business travel |
P0304 | Travel for medical treatment including TCs purchased by hospitals |
P0305 | Travel for education including TCs purchased by educational institutions |
P0306 | Other travel receipts |
P0308 | Foreign Currencies/TCs surrendered by returning Indian tourists |
P0501 | Receipts on account of services relating to cost of construction of projects in India. |
P0601 | Life Insurance premium except term insurance. |
P0602 | Freight insurance – relating to import & export of goods. |
P0603 | Other general insurance premium including reinsurance premium; and term life insurance premium. |
P0605 | Auxiliary services including commission on insurance. |
P0607 | Insurance claim Settlement of non-life insurance; and life insurance (only term insurance). |
P0608 | Life insurance claim settlements (excluding term insurance) received by residents in India |
P0701 | Financial intermediation except investment banking – Bank charges, collection charges, LC charges, etc. |
P0702 | Investment banking – brokerage, under writing commission etc.. |
P0703 | Auxiliary services – charges on operation & regulatory fees, custodial services, depository services etc.. |
P0801 | Hardware consultancy/implementation. |
P0802 | Software consultancy/implementation (other than those covered in SOFTEX form). |
P0803 | Data base, data processing charges. |
P0804 | Repair and maintenance of computer and software. |
P0805 | News agency services. |
P0806 | Other information services - Subscription to newspapers, periodicals, etc. |
P0807 | Off-site Software Exports |
P0808 | Telecommunication services including electronic mail services and voice mail services |
P0809 | Satellite services including space shuttle and rockets, etc. |
P0901 | Franchises services |
P0902 | Receipts for use, through licensing arrangements, of produced originals or prototypes (such as manuscripts and films), patents, copyrights, trademarks, industrial processes, franchises etc. |
P1002 | Trade related services - Commission on exports/imports. |
P1004 | Legal services. |
P1005 | Accounting, auditing, book keeping services. |
P1006 | Business and management consultancy and public relations services. |
P1007 | Advertising, trade fair service. |
P1008 | Research & Development services. |
P1009 | Architectural services. |
P1010 | Agricultural services like protection against insects & disease, increasing of harvest yields, forestry services. |
P1013 | Environmental services. |
P1014 | Engineering Services. |
P1015 | Tax consulting services. |
P1016 | Market research and public opinion polling service. |
P1017 | Publishing and printing services. |
P1018 | Mining services like on–site processing services analysis of ores etc. |
P1019 | Commission agent services. |
P1020 | Wholesale and retailing trade services. |
P1022 | Other Technical Services including scientific/space services. |
P1101 | Audio-visual and related services like Motion picture and video tape production, distribution and projection services. |
P1103 | Radio and television production, distribution and transmission services |
P1104 | Entertainment services |
P1105 | Museums, library and archival services |
P1106 | Recreation and sporting activity services |
P1107 | Educational services (e.g. fees received for correspondence courses offered to non-resident by Indian institutions) |
P1108 | Health Service (Receipts on account of services provided by Indian hospitals, doctors, nurses, paramedical and similar services etc. rendered remotely or on-site) |
P1109 | Other Personal, Cultural & Recreational services |
P1301 | Inward remittance from Indian nonresidents towards family maintenance and savings. |
P1302 | Personal gifts and donations . |
P1303 | Donations to religious and charitable institutions in India. |
P1304 | Grants and donations to governments and charitable institutions established by the governments. |
P1306 | Receipts / Refund of taxes. |
P1505 | Deemed Exports (exports between SEZ, EPZs and Domestic Tariff Areas) |