Skip to main content

E-Wallet Integration Guidelines - Indonesia

Introduction

This document specifies the protocols operated between Airpay PLATFORM and the content provider or merchant system.

This document is intended for merchants who want to integrate Indonesian eWallet payments through a Single API provided by Airpay, using payment gateway. This integration allows you to accept payments from multiple Indonesian digital wallets using a standardized and efficient process.

This integration is a solution that simplifies the process of integrating multiple eWallets into a single unified API. With this approach, merchants or partners only need to integrate with one standardized endpoint, without having to deal with technical differences of each individual eWallet provider.

Supported E-Wallet

This is the supported e-wallets can used in Indonesia

No. E-Wallet Status Available Payment Method Description
1 DANA Available QR / Invoice QR: QR Code
Invoice: Redirect to dashboard and will show all the provided payments from payment gateway
2 AstraPay Available Invoice
3 OVO Available Invoice
4 ShopeePay Available Invoice
5 LinkAja Available Invoice

Detail info:

  • QR is one of the payment methods provided by the payment gateway we use in Indonesia, . This method will generate a dynamic QR code that can be scanned by customers using supported eWallet applications. The customer will complete the payment by scanning the QR using their preferred eWallet app.

  • Invoice is one of the payment methods that is provided by the payment gateway we used in indonesia named . This payment method will redirect customer to dashboard to choose all the payment gateways have provided.

Dashboard sample:

Dashboard Sample

Telco Service Aggregator (AIRPAY)

E-Wallet Provider Integration Methods:

  • DANA E-Wallet Integration:

    • Support two payment methods:
      • QR Code: Customers scan a dynamic QR code generated for each transaction to complete payment with their DANA app.
      • Redirect: Customers are redirected to DANA's official payment interface for completing the transaction.
    • Both methods route through AIRPAY as the payment gateway before reaching the merchant.
  • OVO, SHOPEEPAY, LINKAJA, ASTRAPAY, E-Wallet Integration:

    • Support one payment method:
      • Invoice: Customers are redirected to (Payment Gateway) dashboard and user can choose all the provided payment that provided by aggregator.
    • Transactions route through AIRPAY as the payment gateway before reaching the merchant.

Transaction Processing: When customers subscribe to merchant services, they can choose their preferred Indonesian e-wallet (DANA/OVO/SHOPEEPAY/ ASTRAPAT/LINKAJA) and payment method. All transactions are processed through AIRPAY's aggregation service, which handles the integration complexity and provides unified settlement to the merchant system.

This architecture provides redundancy, multiple payment options, and centralized transaction management for comprehensive e-wallet integration capabilities.

Service Aggregator API Specs

API E-Wallet

This API will using to merchant who want to integration to ewallet in Indonesia using payment gateway

Sample request: https://xxx.xxxxxx.xxxx/api/v1/ext/ID/DANA/games/ewallet/request

Sample header: apikey: 2611263d-2406-489c-9042-abcsd76f9b

Error Response List:

Error Code Error Message
400 Bad request
500 Internal system error
900 Invalid signature
901 Invalid token
902 Token expired
903 Invalid channel
904 Invalid telco
905 Invalid service id
906 Invalid msisdn
907 Invalid OTP
9071 Invalid OTP key, not found or expired
9072 Invalid OTP value or not found
908 Channel not active
909 Telco not active
910 Service id not active
911 Duplicate trxid
912 Invalid Source or source may not register to this service
Authorizations:
None
path Parameters
country
required
string <= 50 characters

Country Name

channel
required
string <= 50 characters

Channel type Ex. (Dana, astrapay, ovo, shopeepay, linkaja)

service_ewallet
required
string <= 50 characters

Service name

header Parameters
apikey
required
string <= 50 characters

Api Key

Request Body schema: application/json
name
required
string <= 50 characters

User name

email
required
string <= 50 characters

User email

msisdn
required
string <= 50 characters

User msisdn

amount
required
string <= 50 characters

Service amount

description
required
string <= 50 characters

Description text

currency
required
string <= 50 characters

Currency type (Ex: IDR, USD etc)

payment_method
required
string <= 50 characters

Payment method (Ex: QR, INVOICE - uppercase only). The description can be read in chapter 2

card_number
required
string <= 50 characters

Card number

card_name
required
string <= 50 characters

Card name

cvc
required
string <= 50 characters

CVC number

expired_date
required
string <= 50 characters

Expired date

order_number
required
string <= 50 characters

Order number

address1
string <= 50 characters

User address 1

address2
string <= 50 characters

User address 2

postcode
string <= 50 characters

Post Code

trxid
string <= 50 characters

Transaction ID

clickid
required
string <= 50 characters

Click ID

pubid
required
string <= 50 characters

Publisher ID

Responses

Request samples

Content type
application/json
{
  • "name": "John Doe",
  • "email": "john.doe@example.com",
  • "msisdn": "628123456789",
  • "amount": "10000",
  • "description": "Payment for service",
  • "currency": "IDR",
  • "payment_method": "QR",
  • "card_number": "1234567890123456",
  • "card_name": "John Doe",
  • "cvc": "123",
  • "expired_date": "12/25",
  • "order_number": "ORD123456789",
  • "address1": "Jl. Sudirman No. 1",
  • "address2": "Jakarta Pusat",
  • "postcode": "10110",
  • "trxid": "TRX123456789",
  • "clickid": "CLICK123456",
  • "pubid": "PUB123456"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "message": "success",
  • "data": {}
}

Merchant Integration Requirements

  • Postback URL: Reply URL at CP Server (If Applicable) for Receiving postback

    Example. 1 ) http://partner.com/callback

    Note: Each merchant must provide only one postback URL. The furnished URLs should be intended for production purposes.


  • We expected the merchant to send a response “OK” when we successfully hit your postback

    Sample: Hit:https://domain/callback?trx_id=LINKIT25112222229&trx_date=2025-10-27T15:04:11+07:00&status=1&status_desc=Success, Response: OK, Status: 200 OK, Status Code: 200

Postback Notif

Whenever users initiate an Postback request from their mobile phone, the Messaging Platform will forward the request to the content provider's URL using GET method.

Sample:

https://domain/callback?trx_id=LINKIT25112222229&trx_date=2025-10-27T15:04:11+07:00&status=1&status_desc=Success, Response: OK, Status: 200 OK, Status Code: 200

Postback URL

Status code list:

Error Code Description
0 FAILED
1 SUCCESS
2 UNKNOWN REASON
Authorizations:
None
query Parameters
trxid
required
string <= 150 characters

Transaction ID from LINKIT360

trx_date
required
string <= 150 characters

Transaction Date format YYYY-MM-DDTHH:MM:SS±HH:MM

status
required
string <= 50 characters

Status response

status_desc
required
string <= 50 characters

Status description