Skip to content

Retail Outlets

What are retail outlets

Retail outlets are a payment mode allowing customers to receive money through select convenience store channels. * Customer visit a physical store, inform the cashier of the merchant they are paying to, quote the unique payment code for the transaction, and make payment in cash or by debit card.

Which retail outlets are supported

  • Xendit currently supports Indomaret convenient stores and its subsidiaries (Indogrosir and Superindo) as well as Alfamart convenience stores and its subsidiaries (Alfamidi, DAN+DAN, and Lawson), through both XenInvoice and via a direct API endpoint, just like our other payment methods.

What are payment codes

  • Payment codes are the transaction identifiers that allow your end customer to make the payment (similar to a virtual account number). Payment codes comprise a customizable fixed prefix (which is easily configured via our Dashboard) + a randomly generated numeric string
  • Payment codes can be generated in one of two ways: 1) Through our Invoices product i.e. a payment code is generated with every Invoice created (Non-Fixed Payment Codes), or 2) Independently generated via API (Fixed Payment Codes)
  • Default settlement for Alfamart and Indomaret is 5 working days

Setup Retail Outlet

Account Activation

Retail Outlet payment option is only available upon request, please kindly contact Xendit Account Manager or our Xendit Support for account activation.

Before activation, customers will be asked to indicate their Merchant Name which will be the exact name that end customers will pay into at Alfamart or Indomaret. Please double-check the spelling and spacing of the Merchant Name so that it will be accurately represented in the partner system; any discrepancies between the Merchant Name on file and the name provided by the end customer prior to payment may result in failed transactions.

Once the account has been activated, Retail Outlet payment option will appear on the invoice as one of the payment options (for customers using the Invoice product).

Prefix customization

To generate a retail outlet payment code, the prefix must first be set by the company. The prefix is a unique merchant code which allows Xendit to identify the company. Therefore, please refrain from using Alfamart in the prefix. A good prefix should reflect the company's name, and we suggest setting the prefix as the company's initials or using the company's name without the vowels (e.g. for Xendit, a good prefix would be XNDT).

You can generate prefixes for both Fixed and Non-Fixed Payment Codes from your Dashboard.

To set the prefix, please follow the instructions below:

  1. Log in to Dashboard
  2. Ensure you are in “Live” mode
  3. Go to Settings → Configuration → Retail outlets
  4. Enter the chosen prefix for the Types “Non-fixed” or “Fixed”, and click “Save”

Please take note of the following:

  • Choose a prefix before creating invoices in order to feature retail outlets as a payment option in the invoices
  • Prefixes must be between 3-6 characters long
  • ONLY alphanumeric characters are allowed - special characters will not be accepted
  • Not case sensitive – all letters will be converted to UPPERCASE only
  • Prefix can only be set ONCE, so please think hard before saving it! The prefix cannot be changed once it has been saved

Setting Merchant Name

You will be able to see your Merchant Name in Retail Outlet Settings on the dashboard once your account has been activated. This Merchant Name will be based on the Business Name we have on file. Please contact Xendit Account Manager if merchant name needs to be changed after activation.

Please take note of the following merchant name guidelines:

  • Merchant names are limited to a maximum of 40 characters
  • ONLY alphanumeric characters are allowed - special characters will not be accepted
  • Spaces are ok, but count as 1 character
  • Not case sensitive – all letters will be converted to UPPERCASE only

Implementing Retail Outlets - Non Fixed Payment Codes

This version is tagged to our Invoices, which means that the payment code will be generated after an invoice has been created using our Invoice APIs or via our Dashboard. learn more from our Xendit Docs and API References.

The difference lies in the API response / invoice UI. If Alfamart is configured and the prefix has already been set, an additional section in the API response will appear with the following fields:

Parameter Description Remarks
available_retail_outlets Available retail outlet payment channels as per the configuration Only Alfamart for now
payment_code Unique payment code used to identify the transaction when paying at the retail outlet Will consist of the prefix + a randomly generated numeric string
transfer_amount Amount the user should pay

Additional “Retail outlets” payment option in the Invoice UI will appear (please refer to image below).

alt text

Please take note of the following:

Generally, payment codes are instantly active upon generation. However, a brief waiting period of around 10 minutes may sometimes occur before a newly-generated payment code can be used to make payment.

Invoice will show "make payment to merchant: business name" indicated at retail outlet account activation. If any changes are needed to business name on-file, please contact Xendit Account Manager.

Important note: As a result of a recent update, end customers will no longer be able to make a payment into merchant name: Xendit. If the end customer says they are making a payment to "Xendit", the cashier will need to ask for the actual merchant name and may refuse to process the transaction.

Implementing retail outlets - Fixed Payment Codes

Once you have configured your prefix for Fixed Payment Codes in our Dashboard, you can proceed to create Fixed Payment Codes via API. This involves various processes such as sending API requests to our Fixed Payment Codes API endpoint.

Fixed Payment Codes are not tied to individual Invoices, and as such are more customizable to suit your purposes (e.g. a Fixed Payment Code can be configured to be used multiple times, whereas a Non-Fixed Payment Code cannot).

Please see our API references here for further details on using Fixed Payment Codes.

Making payments through retail outlets

The steps for end customer to make payment through retail outlets are as follows:


  1. Kunjungi Alfamart terdekat sebelum waktu tertera pada invoice berakhir
  2. Informasikan Kasir untuk melakukan membayar ke [Nama Bisnis Anda]
  3. Beritahu atau tunjukkan kode pembayaran tertera di invoice kepada Kasir
  4. Lakukanlah pembayaran sesuai dengan jumlah yang tertera di invoice
  5. Terimalah tanda terima pembayaran dari Alfamart atau Indomaret sebagai bukti pembayaran
  6. Selamat! Pembayaran sudah selesai.


  1. Visit the nearest Alfamart store before the invoice expires
  2. Tell the Cashier to make payment to [Your Business Name]
  3. Quote or present the payment code on the invoice to the Cashier and confirm the amount is correct
  4. Proceed to make payment with the amount on the invoice
  5. Receive the proof of payment from cashier
  6. Congratulations! Payment has successfully completed

Payment Detection and Settlement

Non-Fixed Payment Codes

Once a payment for an invoice made through any partner convenience store has been detected, Dashboard will have these following changes:

  • In Invoices Tab

The invoice will switch from being “unpaid” to “paid” (occurs instantly once payment is detected)

alt text

  • In Pending Tab

A credit line item will appear in escrow account for the amount collected (occurs instantly once payment is detected).

A debit line item will appear in escrow account for the amount collected (5 working days from payment)

  • In Cash Tab

A credit line item will appear in the cash account for the amount collected (5 working days from payment)

alt text

If callback URL has been set in SettingsConfigurationAccept Payments in Dashboard, a callback will be received after payment has been detected.

alt text

Fixed Payment Codes

Once a payment of a Fixed Payment Code made through any Alfamart convenience store has been detected, Dashboard will make the same changes as for Non-Fixed Payment Codes above, save that there will be no changes to the Invoices Tab (see Non-Fixed Payment Codes are not created via Invoices).


The ability of customers to make payment at any Alfamart, Alfamidi, DAN+DAN, Lawson, Indomaret, Superindo or Indogrosir convenience stores are limited by the:

  1. Opening hours
  2. Cash availability
  3. Connectivity and availability of the payment system of the store

In addition, Indomaret, Superindo and Indogrosir has payment cutoff times from 23:55 - 00:10 each day.

Limitation of payment amounts into Retail Outlet

Payment Method Minimum (IDR) Maximum (IDR)
Retail Outlet 11,000 5,000,000


  1. What if the end customer tells the clerk they want to make a payment to "Xendit" instead of my business's name?

    Alfamart clerk will not be able to select the business name, and will have to ask the end customer for more information. If the Alfamart clerk cannot find the business name in the system, they may refuse to process the payment.

  2. Will the Xendit name be seen during the payment process?

    The Xendit name will only be seen within the Alfamart system as "[Merchant Name] via Xendit". This is used as a tracking mechanism for Alfamart.

  3. Will the end customer receive any payment verification information?

    The end customer will receive a receipt showing merchant name, timestamp, amount paid. The receipt will also provide a customer support number for any issues (as a default, this will be the Xendit Customer Support number, but can be changed to merchant customer service line if requested)

  4. How can I change the "Business Name" that my end customer pays into?

    Please contact Xendit Account Manager for assistance with business name updates.

  5. Are there any payment limitations?

    Yes. End customers are not able to pay more than once per day at a single Alfamart branch. If a payment code will be paid more than once per day, please ask the end customer to make their payment at a new branch each time.