Develop for Japan

Link to section

Overview

You can use Square APIs and SDKs to build applications that support and process in-person or online payments for sellers in Japan. Before you begin development, be sure to familiarize yourself with which payment methods are available in Japan and the pricing models for payments made with Square APIs and Square hardware.

Link to section

In-Person Payment Solutions

Link to section

Integration Options for Your POS System

If you have an existing POS system and want to connect to Square in-person payment solutions in Japan, you have two integration options:

  • The Terminal API is compatible with Square Terminal devices. It connects directly to Square servers, making it available for almost any system, including Windows-based systems, web applications, or other platforms, because it connects directly to Square servers.
  • The Point-of-Sale API works with Square Reader devices and operates via mobile devices only. It uses the Square mobile app for checkout, utilizing deep link functionality to switch between your app and Square.
Link to section

Key considerations when choosing an API:

  • If your goal is to process itemized orders, the Terminal API is your only option.
  • The Point-of-Sale API supports only custom amount-based transactions.
  • If your external POS system manages itemized orders, syncing itemized sales with Square can allow you to:
    • Print itemized receipts.
    • Keep itemized transactions synchronized between systems.

When implementing in-person payment applications, you should process payments in-store with the Square Terminal or Square Reader devices. Staff must be present in the store or close enough to attend at any time when payment processing is required.

Link to section

Itemized vs. Non-Itemized Approaches

When integrating with Square in-person payment APIs, you'll need to choose between two integration approaches based on your business needs:

This approach is best for merchants who want to log itemized transactions in Square and want the Square Terminal or Square's compatible printers to print itemized receipts.

How it works:

  • Use the Orders API to create orders with line items.
  • Pass the Square order ID to the Terminal API to process payments and print itemized receipts.
  • Use the Catalog API to sync products between your system and Square.
  • Optionally, use Terminal Actions to programmatically print receipts as a separate operation.

Limitations:

  • Formal receipts are not currently supported - only normal receipts can be printed.

This approach is ideal when you want Square Terminal to handle receipt printing, want to leverage Square's reporting and analytics capabilities, or need product-level sales tracking for your business.

Link to section

Supported Payment Methods for In-Person Payments

Japanese merchants can accept several payment methods for in-person transactions, including credit cards, digital wallet payments (Apple Pay and Google Pay), gift cards, e-money, prepaid IC cards (such as SUICA and PASMO), and QR code payments (such as PayPay, Alipay, Rakuten Pay, and au PAY).

Important

To support e-money or PayPay payments, Japanese sellers must submit an application form to activate those payment methods. For more information, see:

Link to section

API Comparison for In-Person Payments

FeatureTerminal APIPoint-of-Sale APIMobile Payments SDK
Device TypeSquare TerminalSquare ReaderSquare Reader
Connection MethodConnection to Square serverLink to Square Point of Sale appDirect SDK integration
Itemized Orders Support✅ Supported (with Orders API)❌ Not supported
Custom Amount Support✅ Supported✅ Supported
Accepted Payment Methodscredit card, e-money, QR, gift cardcredit card, e-money, QR, gift card
SDK/API Status in Japan✅ Available✅ Available❌ Not yet available
DocumentationTerminal API OverviewPoint of Sale API OverviewMobile Payments SDK Overview
Link to section

Testing In-Person Payment Integrations

Square provides a Sandbox environment where you can test your in-person payment integrations before going live. However, there are important differences between Sandbox and production testing for physical devices.

Link to section

Sandbox Testing (Without Physical Devices):

You can test Terminal API integrations in the Sandbox without connecting to a physical Square Terminal. Square provides special test device IDs that simulate different checkout scenarios, including successful payments, canceled payments, and timeout scenarios. This allows you to develop and test your integration logic without needing physical hardware.

The Sandbox environment supports testing various payment methods specific to Japan, including:

  • E-money (FELICA) payments - Test e-money/FeLiCa transactions using dedicated test device IDs
  • QR code payments (PayPay) - Test PayPay QR code payments (note: the Sandbox location must be based in Japan)

Example Test Device IDs:

Payment MethodTest Device IDNotes
Credit Card (Successful)9fa747a2-25ff-48ee-b078-04381f7c828fCheckout successfully completed with credit card.
E-money (FELICA)19a01fbd-3dcd-4d9f-a499-a641684af745eMoney/FeLiCa payment for the full amount is approved.
QR Code (PayPay)cae0ee02-f83b-11ec-b939-0242ac120002PayPay QR code payment for the full amount is approved. Sandbox location must be based in Japan
Note: In the sandbox environment, PayPay is the only QR code brand name that appears.

For a complete list of test device IDs and their behaviors, see Terminal API Sandbox Testing.

Link to section

Production Testing (With Physical Devices):

Testing with an actual Square Terminal device is only supported in the production environment. The Sandbox environment does not support connections to physical Square Terminal devices. When testing with a physical device in production, you can use the minimum payment amount of 1 yen to minimize testing costs.

Use the following workflow for testing:

  1. Conduct initial development and testing in Sandbox using test device IDs.
  2. Perform final testing in production using a Square Terminal and small payment amounts (minimum 1 yen).

For more information, see Test Square APIs in the Sandbox.

Link to section

Online Payment Solutions

Link to section

Payments Made on a Buyer's Screen

For online payments in Japan, merchants can accept credit cards, debit cards, gift cards, and digital wallet payments (Apple Pay and Google Pay) when customers purchase through a web browser or mobile app.

You can build custom checkout forms using either the Web Payments SDK or In-App Payments SDK, and you can localize these forms from English to Japanese to provide a better customer experience.

  • Use the Web Payments SDK for web applications or browser-based checkouts (desktop and mobile).
  • Use the In-App Payments SDK for native mobile applications on iOS and Android.
Link to section

3D Secure (3DS) Requirement for Online Payments

Important

This is a critical requirement for all merchants operating in Japan. 3D Secure (3DS) authentication is mandatory for all online card payments in Japan. All merchants and integrations must comply with this regulation.

What does this mean for your integration?

  • Depending on the card issuer, 3DS authentication may be required during card transactions.
  • Use the Web Payments SDK or In-App SDK to implement the 3DS flow.
  • Merchants cannot disable or opt out of 3DS in Japan.
Link to section

Sales Reporting

Link to section

FELICA Payments

In a Payment object, gift cards, credit cards, debit cards, and e-money (FELICA) payments are all recorded with a source_type of CARD. Detailed information is available through the card_details field. Terminal checkout objects also use the CheckoutOptionsPaymentType enum to denote whether the payment was made with a card, e-money, or QR.

To retrieve payment information, you can use the GetTerminalCheckout, RetrieveOrder, or GetPayment endpoints depending on your needs.

The card_details object includes a card_brand enum that helps you distinguish between different payment methods.

  • Credit cards show the international brand name (such as VISA or Mastercard).
  • E-money payments show FELICA (updated from the previous value OTHER_BRAND).
Link to section

Point of Sale API workflow for E-Money payments

  1. Get a transaction ID from a completed checkout.
  2. Retrieve the corresponding Order object using the Orders API.
  3. Use the tenders.id value to get a Payment object with GetPayment. The Payment object will return CardPaymentDetails.Card.CardBrand with the value FELICA.

Terminal checkouts use payment_ids for payments, so you can use GetPayment directly to get payment information without needing to go through the Order object first.

For non-itemized sales, the item_type for orders created with e-money payments, are CUSTOM, because there's a custom amount for the payment. Itemized sales use the ITEM item type instead.

For more information, see Take E-Money Payments in Japan.

Link to section

QR Code Payments

The wallet_details property in a Payments object supports several QR code brands, including:

  • PAYPAY
  • ALIPAY
  • RAKUTEN_PAY
  • AU_PAY
  • D_BARAI
  • MERPAY
  • WECHAT_PAY. If a different brand is used that doesn't match these values, it is recorded as UNKNOWN.

Example Order object with a QR code payment:

Note that the tenders object array in an order object doesn't have a value defined for wallet_details.

For implementation guides on accepting QR code payments, see

Note

Data retention The Square Developer Console shows data for 1 year, but API logs are retained for only 28 days. You can view API logs in the Developer Console or API Explorer. Use the Square API Explorer and API Logs to capture historical data about payments and purchases.

Link to section

Error Handling for Failed Requests

When a request fails, Square API endpoints return a response with an errors field containing one or more Errors.

Link to section

Key considerations for Japan

  • Error messages are always returned in English. You need to retrieve the error object as a JSON object and translate the error details for Japanese users. Your application should take appropriate action based on the error.category, error.code, and error.field (which indicates where the error occurred).

  • Specific refund limitations for transportation cards. If a buyer uses a PASMO or SUICA transportation card for a payment, you encounter a REFUND_DECLINED error. The seller cannot issue a refund for those payment cards.

Example refund decline error response:

{ "errors": [ { "code": "REFUND_DECLINED", "detail": "Payment could not be refunded", "category": "REFUND_ERROR" } ] }
Link to section

Errors with Canceling an E-Money Payment

Using CancelTerminalCheckout to cancel an e-money payment after getting an error on the Square Terminal is not supported.

If an error occurs on Square Terminal during an e-money payment, the checkout request has the IN_PROGRESS or PENDING state. In this situation, the buyer must manually cancel the checkout. To do so:

  • Close the error message window
  • Tap the navigation button back to the checkout screen
  • Cancel the checkout manually.