Exporting to International Customers Beta

Process transactions where the good or service sold will be consumed outside of India.

By providing certain additional information while onboarding and in API requests, Indian users can process export transactions for goods or services that will be consumed outside of India.

At the moment, we only support exports by registered Indian businesses (i.e. sole proprietorships, limited liability partnerships and companies, but not individuals) up to a maximum of $10,000 USD per transaction.

Onboarding

To enable export transactions, you must do the following when submitting your account application:

  1. 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.

  2. Submit your importer/exporter code (IEC). 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 find FAQs on the IEC at the DGFT website or find steps to apply online.

  3. 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 exports, change the IEC or change your transaction purpose code after the onboarding process at the Dashboard.

A Stripe account can only have a single transaction purpose code.

Valid charges

To process export charges, a merchant will need to pass through the buyer’s name, billing address, and description to Stripe for regulatory reporting. For export of goods, a shipping address is also mandatory.

  • Billing address should be sent in customer.billing
  • Shipping address, required only for the export of goods, should be sent in charge.shipping or customer.shipping
  • Address country must be a valid 2-alphabet ISO-3166 code

In addition, all export charges must meet the criteria below, or the charges will be declined:

  • Charge must be presented in a non-Indian Rupee (INR) currency
  • Customer must input a non-Indian billing address, and where applicable non-Indian shipping address, as indicated by a valid 2-alphabet ISO-3166 code
  • Customer must pay with cards issued outside India

Payouts

Funds from domestic and export transactions are paid out separately by Stripe. If you process both domestic and export payments, you may have two payouts on the same day. The balance from export transactions is labelled International when you view payouts in the Dashboard.

Export of Services

Every service export payment 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')('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')('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.

Export of Goods

Every goods export payment is required to have the buyer’s name, address, description and shipping address. 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')('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')('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

Export card payments do not require 3D Secure 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 export card payments (Stripe Billing)

This section assumes that you are familiar with Billing to create (and bill) your customers via Subscriptions and Invoices.

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')('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')('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);

Note: For subscriptions related to the export of 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')('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);

Subscription 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)
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.