International Development Considerations
A developer anywhere in the world can create a Square API-based application for a seller anywhere else in the world. Depending on the countries where the seller uses the application, it might have limited credit card processing and application fee collection functionality. The following sections cover the key concerns that you should consider when you create an application for sellers elsewhere in the world.
Unless you are developing an application to manage your own Square account, the Square OAuth flow must be used. The OAuth flow provides an access token and enables your application to make Square API calls on a seller's Square account. The access token is essentially the seller's scoped permission for your application to access their Square account. With the access token, your application acts on behalf of the seller. API calls are treated as though they are being made within the seller's country and by the seller. The access token also identifies your developer Square account and tells Square in which country you have registered your application. This information is important if you plan to collect application fees on payments that Square processes.
If your application is going to be used by sellers in other Square-supported countries, you can test your payment logic in the Square Sandbox by creating Sandbox seller accounts for each country that you support. Test your payment logic in each seller account before you release your application to production. For information about testing payments in other countries, see Create a Sandbox test account.
Note that a Square Sandbox seller account can only be created for the following countries:
If your application processes credit card payments on behalf of sellers in other countries, you need to consider the following limitations and requirements.
The seller's Square account must be authorized for credit card processing and the seller must be in a Square-supported country. For a list of Square-supported countries, see Supported Payment Methods by Country.
The OAuth access token allows your application to process payments on behalf of a seller and in the seller Square account. Your Square account does not need to be authorized for credit card processing unless application fees are to be taken. For information about application fee limitations, see Application fee requirements.
Be sure to specify the currency of the country where a payment is being processed in your card payment request. Otherwise, the request is rejected. Use the Locations API to get the seller's location and read the location
currency field to get the currency to use in a payment request. The seller's access token is used in the Locations API call and allows Square to return the seller's location.
Before you provide an application to a seller, you need to review Supported Payment Methods by Country. If the seller is not in one of the supported countries, the only supported payment methods are External and Cash (not Square Cash App Pay). If the desired payment method is not supported in the seller country, your application should disable that specific payment method in the UI.
To collect application fees, you need to have a Square account in the seller's country and both the seller Square account and your international Square accounts must be approved for credit card processing.
For example, you create an application for Square sellers in France and Ireland. To take application fees, you create a Square account in each country and then create an application ID for your application in the Developer Dashboard for each Square account that you create. In this example, you obtain two application IDs for your application: one for France and one for Ireland.
When the French seller uses the application, it initializes the OAuth flow with the French application ID. The resulting OAuth token is linked to the French seller and is used to make all Square API calls, including Payments API calls. To support the Irish seller, the Irish application ID is used to start the OAuth flow.
A developer usually creates a Square account in their own country while developing and testing the application. The application ID for this country can be used for production in any country where you are using an alternative to the application fees feature of the Payments API.
If you are having difficulties getting your international Square account authorized for credit card processing, contact Square support. Each country supported by Square for credit card processing has different financial regulations that determine the eligibility of your developer account.
You might not want to create a Square account in each country you support merely to collect application fees. A good alternative is to use the Invoices API to periodically bill the seller for the use of the application. Because Square can process internationally issued cards bearing a Visa, Mastercard, American Express, JCB, Union Pay, or Discover logo, an invoice can be issued by, for example, an American developer to a French seller who can pay the invoice using their own credit card.
Regardless of which Square-supported country a seller is based in, they can accept credit card payments with accepted cards from buyers located anywhere in the world. Payments are processed in the currency of the seller with an exchange rate set by the card-issuing bank.