PreAuth & Capture (1.0)

Introduction

Many of our merchants need to block money in the users wallet which is captured later. These include Ondemand taxi's, on-demand services, ecommerce websites, etc. The goal here is to ensure the merchant can block the money at the time of creating an order and take the money at the time of fulfilling the order thereby reducing the risk in the system.

TLS implementation

The PayPay Open Payment API requires that you use TLS 1.2 or higher as a security measure. Note that you cannot connect with TLS1.0 and TLS1.1.

Onboard merchant

To start utilizing our Open Payment API platform, at first the business needs to be onboarded onboard as a PayPay merchant. This process usually consists of information collection, manual verification, contract confirmation and credentials issuance.

After becoming a merchant on PayPay, the following items would be setup for the client:

  • api key and secret
  • allowed authorization callback domains
  • user authorization validity time
  • webhook endpoints
  • client IP whitelist

This setup can be managed using our merchant panel/ getting in touch with the sales representative.

Access from users to the PayPay app and PayPay web screen from outside Japan is restricted. Please contact us for details.

Acquire user authorization

To be able to collect payment from PayPay user’s wallet, you need to obtain user’s authorization explicitly.

Acquiring user authorization can be achieved using our simple account linking flow here.

Set "preauth_capture_native" for SCOPE. Specify "preauth_capture_native, get_balance" only when using Get user wallet balance.

OPA API Authorization

Everything related to OPA API Authorization is described here.

Specify merchant in request

Every time an API is called, the merchant identifier needs to be passed along with the request. There are two ways to pass the merchant identifier:

In a query string parameter:

?assumeMerchant={MerchantId}

Or in HTTP headers:

X-ASSUME-MERCHANT: {MerchantId}

If both are provided, the query string parameter would take precedence.

Error Handling

PayPay OPA uses HTTP response status codes and OPA error code to indicate the success or failure of the requests. With these information, you can decide what error handling strategy to use. In general, PayPay OPA return the following http status codes.

Response code list

Common response code

Status Code Description
200 SUCCESS Success
400 INVALID_REQUEST_PARAMS The information provided by the request contains invalid data, e.g., unsupported currency
401 OP_OUT_OF_SCOPE The operation is not permitted.
400 MISSING_REQUEST_PARAMS The set parameter is invalid.
401 UNAUTHORIZED No valid api key and secret provided
404 OPA_CLIENT_NOT_FOUND OPA Client not found
429 RATE_LIMIT Too many requests.
500 SERVICE_ERROR A service error has occurred.
500 INTERNAL_SERVER_ERROR This code indicates that something went wrong, but we don't know exactly if the transaction has happened or not. It should be treated as unknown payment status.
503 MAINTENANCE_MODE Sorry, we are down for scheduled maintenance.

Create a payment authorization

Status Code Description
400 CANCELED_USER Canceled user
400 INVALID_PARAMS Invalid parameters received
400 NO_SUFFICIENT_FUND The user's balance is insufficient to make payment.
400 UNSUPPORTED_PAYMENT_METHOD Payment method is not supported.
400 PRE_AUTH_CAPTURE_UNSUPPORTED_MERCHANT Merchant does not support Pre-Auth-Capture.
400 PRE_AUTH_CAPTURE_INVALID_EXPIRY_DATE Provided Expiry Date is above the allowed limit of Max allowed expiry days.
400 NO_SUFFICIENT_FUND No sufficient fund
400 SUSPECTED_DUPLICATE_PAYMENT

If a merchant tries collect same amount money from same user again within 5 minutes, the request would be rejected with this very error code. This design is mainly to prevent the duplicated payments which are usually caused by design flaws in client code.

However, sometimes, the merchant would intentionally collect multiple same amount payments from a single user. In such case, the client need to send a specific parameter in order to bypass the duplication check. This is detailed in the payment creation api spec.

400 UNACCEPTABLE_OP The requested operation is not able to be processed due to the current condition, e.g., the user is suspicious.
400 LIMIT_EXCEEDED The payment amount exceeded upper limit.
400 USER_DEFINED_DAILY_LIMIT_EXCEEDED The payment amount exceeded user 24 hours defined limit.
400 USER_DEFINED_MONTHLY_LIMIT_EXCEEDED The payment amount exceeded user 30 days defined limit.
400 USER_DAILY_LIMIT_FOR_MERCHANT_EXCEEDED Payment amount exceeded merchant defined restriction.
401 USER_STATE_IS_NOT_ACTIVE Inactive user
401 INVALID_USER_AUTHORIZATION_ID If the user authorization id is expired or revoked by the use. The client need to go through the authorization flow again to get the user authorization id
401 EXPIRED_USER_AUTHORIZATION_ID The user authorization ID expired
404 NO_VALID_PAYMENT_METHOD No available payment method
404 PAYMENT_METHOD_NOT_FOUND Payment method not found
500 TRANSACTION_FAILED This code means the transaction is failed in PayPay side. You can create new transaction for the same purpose with reasonable backoff time.

Below error could occur if merchant requires user to be KYCed but the user hasn't completed KYC

Status Code Description
400 NON_KYC_USER User has not completed KYC.

Below are some additional errors which can occur if the payment method is PAY_LATER_CC or CREDIT_CARD.

Status Code Description
400 CC_LIMIT_EXCEEDED The credit card limit is exceeded.
400 PPC_BAD_REQUEST The PayPay card process be issued something error.
400 PPC_EXPIRED PayPay card is expired.
400 PPC_LIMIT_EXCEEDED PayPay card limit is exceeded.
429 INTERNAL_SERVICE_RATE_LIMIT Too many requests. The client has sent too many requests in a given amount of time for the payment method that depends on external system outside PayPay, e.g. when the payment method type is PAY_LATER_CC or CREDIT_CARD. In case of this error, since the transaction already failed in PayPay, the client need to specify a new merchantPaymentId and retry later.

Cancel a payment authorization

Status Code Description
400 ORDER_NOT_REVERSIBLE This code will be returned if 1) the status of the target order is under the following status: REFUNDED, EXPIRED, COMPLETED, CANCELED; Or 2) the cancellation window is exceeded.

Update a payment authorization

Status Code Description
201 USER_CONFIRMATION_REQUIRED When higher amount reauthorize is initiated successfully.
400 REAUTHORIZE_REJECTED 1. When the order state is not AUTHORIZED
2. When the order type is not supported
3. When paymentMethod is not supported
4. When idempotent response is initiated
400 PAY_METHOD_INVALIDATED When paymentMethod is no longer valid. User should be guided to use a different paymentMethod.
400 REAUTH_AMOUNT_UNCHANGED When the amount of reauthorize is the same as the amount during authorization
400 REAUTH_MAX_LIMIT_EXCEEDED Maximum number of reauthorize attempts exceeded. The maximum number of attempts is set to be 10(ten) times.
400 REAUTHORIZE_FAILED When the order state is failed to be updated
404 RESOURCE_NOT_FOUND Order does not exist

Capture a payment authorization

Status Code Description
202 USER_CONFIRMATION_REQUIRED User confirmation required as requested amount is above allowed limit.
400 HIGHER_AMOUNT_CAPTURE_NOT_ALLOWED It is returned only when merchant captures with higher amount than merchant's allowed capture threshold for the preauth order having product type
400 ORDER_NOT_CAPTURABLE Order is not capturable.
400 CANCELED_USER Canceled user
400 INVALID_PARAMS Invalid parameters received
400 NO_SUFFICIENT_FUND The user's balance is insufficient to make payment.
400 ORDER_EXPIRED Order cannot be captured or updated as it has already expired.
400 REAUTHORIZATION_IN_PROGRESS Order is being reauthorized.
400 ALREADY_CAPTURED Cannot capture already captured acquiring order.
400 TOO_CLOSE_TO_EXPIRY Order cannot be reauthorized as request is too close to expiry time.
400 NO_SUFFICIENT_FUND No sufficient fund
400 UNACCEPTABLE_OP The requested operation is not able to be processed due to the current condition. E.g. the user is suspicious.
400 LIMIT_EXCEEDED The payment amount exceeded upper limit. It is possible to occur in case capture amount exceeded preauthorized amount.
400 USER_DEFINED_DAILY_LIMIT_EXCEEDED The payment amount exceeded user 24 hours defined limit. It is possible to occur in case capture amount exceeded preauthorized amount.
400 USER_DEFINED_MONTHLY_LIMIT_EXCEEDED The payment amount exceeded user 30 days defined limit. It is possible to occur in case capture amount exceeded preauthorized amount.
401 USER_STATE_IS_NOT_ACTIVE Inactive user
404 RESOURCE_NOT_FOUND Order not found
500 BACKEND_TIMEOUT Timeout occurred while accessing external service.

Below is an additional error which only occur if the used payment method was PayPay credit card | 429 | INTERNAL_SERVICE_RATE_LIMIT | Too many requests. |

Revert a payment authorization

Status Code Description
400 INVALID_PARAMS Invalid parameters received
400 ORDER_NOT_CANCELABLE Order is not cancelable.
404 RESOURCE_NOT_FOUND Order not found

Refund a payment

Status Code Description
400 INVALID_PARAMS Invalid parameters received
400 UNACCEPTABLE_OP Order cannot be refunded, e.g., the user is suspicious.
400 CANCELED_USER Target user does not exist.
400 THROTTLED_MULTIPLE_REFUND_REJECTED Rejected refund request as similar request is in progress, you can retry after 1 minute.
400 REFUND_LIMIT_EXCEEDED Order has reached maximum number of allowed refunds. This can only occur if the multiple refund feature is enabled for merchant.
400 REFUND_WINDOW_EXCEED Refund window exceeded.
401 USER_STATE_IS_NOT_ACTIVE The request cannot be accepted because the user status is inactive.
403 MERCHANT_MULTIPLE_REFUND_REJECTED Merchant multiple refund not enabled.
404 NO_SUCH_REFUND_ORDER The specified refund payment could not be found.
404 RESOURCE_NOT_FOUND Order not found

Get refund details

Status Code Description
404 NO_SUCH_REFUND_ORDER Refund not found

Create a topup QR Code

Status Code Description
400 DUPLICATE_TOPUP_QR_REQUEST Topup QR with same merchantTopUpId exists.

Get topup status

Status Code Description
404 TOPUP_DETAILS_NOT_FOUND Invalid merchantTopUpId.

Delete QR code

Status Code Description
404 TOPUP_QR_CODE_NOT_FOUND Invalid QR codeId.
400 TOPUP_ALREADY_DONE The topup has been done for given qrCodeId.
Status Code Description
401 INVALID_USER_AUTHORIZATION_ID The specified user authorization ID is invalid.

Get user authorization status

Status Code Description
400 CANCELED_USER The user has canceled PayPay account.
401 INVALID_USER_AUTHORIZATION_ID The specified user authorization ID is invalid.

Get masked user profile

Status Code Description
401 INVALID_USER_AUTHORIZATION_ID The specified user authorization ID is invalid.

Check user wallet balance

Status Code Description
400 CANCELED_USER Canceled user

Expected cashback

Status Code Description
400 VALIDATION_FAILED_EXCEPTION Input data is wrong.
500 UNAUTHORIZED_ACCESS Un-authorised access

Get payment methods

Status Code Description
400 NO_VALID_PAYMENT_METHOD User does not have any payment methods.

Timeout

The recommended timeout setting is specified in each API. The most important one is for the payment creation api, where the read timeout should not be less than 30 seconds. When timeout happens, it should be treated as unknown payment status.

Handle unknown payment status

There are two ways to react with this situation

  1. Use the query api to query the transaction status. If the original transaction was failed or not found in PayPay, you can start a new transaction for the same purpose.

  2. Or, you can cancel the transaction, if the cancel api is provided. After the cancellation is accepted, you can start a new transaction for the same purpose.

Please check here for additional FAQs for OPA

API execution result associated with user authorization status change

API execution may fail due to user authorization status change. The assumed user status and the corresponding API execution results are as follows. In other APIs, no error occurs due to status change.


Get user authorization status

user status
terminate PayPayuser authorization expiredDeauthorization in app operation
http status:400
Code="CANCELED_USER"
http status:200
data.expiresAt < current date
http status:200
data.status="inactive"

Create a payment authorization、Get payment methods、Get Sets of Cashback Information、Create topup QR code、Get user wallet balance、Check user wallet balance、Get masked user profile

user status
terminate PayPayuser authorization expiredDeauthorization in app operation
http status:401
Code="INVALID_USER_AUTHORIZATION_ID"
http status:401
Code="EXPIRED_USER_AUTHORIZATION_ID"
http status:401
Code="INVALID_USER_AUTHORIZATION_ID"
*If you execute above APIs for users who terminated by 2022/2/25,
 The error code will be "VALIDATION_FAILED_EXCEPTION".

Refund a payment

user status
terminate PayPayuser authorization expiredDeauthorization in app operation
http status:400
Code="CANCELED_USER"
http status:200
Code="SUCCESS"
http status:200
Code="SUCCESS"

Screen transition diagram

This screen transition diagram describes the display of the application after the purchase operation.

Mapping of API Request Parameter and display screen are shown in the here

Display of the application after payment are shown in the here

Payment

Everything involved in the payment life cycle

Create a payment authorization

Designate an available payment method (PayPay Balance or PAY_LATER_CC or CREDIT_CARD) for a user and create a payment authorization to block the money.

Timeout: 30s

query Parameters
agreeSimilarTransaction
string

(Optional) If the parameter is set to "true", the payment duplication check will be bypassed.

Request Body schema: application/json

Payment

merchantPaymentId
required
string (MerchantPaymentId) <= 64 characters

Transaction ID provided by merchant that uniquely identifies the transaction.
When the same merchantPaymentId is specified, the previous result is returned.

userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

required
object (MoneyAmount)
requestedAt
required
integer (EpochTime)

Epoch timestamp in seconds

expiresAt
integer <EpochTime> (AuthorizationExpiry)

Epoch timestamp in seconds. The expiry duration must be less than the expiry granted to the merchant.

Note: The expiry, in case of authorization with PAY_LATER_CC, is subject to be shortened under special circumstances such as user has cancelled PayLater, etc. In such cases, PayPay will notify merchant in advance of an updated (shortened) the expiry before merchant's authorization period expires via webhook notification (see the section Transaction Events > AUTHORIZED | Create a payment authorization). It is suggested for merchant to implement proper handling after consuming such an event to avoid capture failure.

storeId
string <= 255 characters

Id to identify store under merchant

terminalId
string <= 255 characters

Id to identify terminal device under store

orderReceiptNumber
string <= 255 characters

Receipt number provided by merchant

orderDescription
string <= 255 characters

Description of the order

Array of objects (MerchantOrderItem)
metadata
object

This parameter is obsolete.
The item is retained for backward compatibility and will be removed in a future release.

paymentMethodType
string (PaymentMethodType)

Possible values are "WALLET", "PAY_LATER_CC" (available for merchants who accept Credit (Pay Later) in online payment), "CREDIT_CARD" (available for merchants who accept Credit Card in online payment).
Merchant can make use of this field to designate the payment method to be used for a payment transaction.
If "PAY_LATER_CC", "WALLET" or "CREDIT_CARD" is passed, a payment transaction is expected to happen with Credit (Pay Later), PayPay Balance or Credit Card as payment method
and there will be no fallback payment triggered if a failure is detected on the designated payment method.
If not set, PayPay will define the payment method the transaction will be tried on. If user has enabled payment method priority, PayPay will try the available payment method from the top of the priority list of user and fallback to the second available payment method if the first one fails; If user hasn't enabled payment method priority, PayPay will try Balance by default.

paymentMethodId
string (PaymentMethodId)

paymentMethodId is used together with paymentMethodType to designate a payment instrument under a paymentMethodType (It is particularly for the paymentMethodType which has multiple payment instruments attached to it such as "CREDIT_CARD" or PAY_LATER_CC, to tackle the case when a user can have multiple credit cards). Its value can be fetched from Get payment methods API.

It is not required to send paymentMethodId if "WALLET" or "PAY_LATER_CC" is passed as paymentMethodType.

For "PAY_LATER_CC" when a paymentMethodId is not specified and the user has multiple payment instruments, the one registered earlier will be selected automatically.

productType
string (PreauthProductType)
Enum: "DONATION" "POINT" "TICKET"

The product type in PayPay system. Generally, this request parameter is optional. For some merchants that are restricted to use only certain product types, the product type must be properly set.

onetimeUseCashback
string (OnetimeUseCashback)
Enum: "ENABLED" "DISABLED"

To use this parameter, onetime_use_cashback scope is required.

Whether to use cashback for this transaction. For example, if it's "ENABLED" PayPay will use cashback even if user's master settings is "Save". Likewise, PayPay will disable to use cashback for this payment when it's "DISABLED".

Note: This parameter will be ignored when the master setting is "Earn Points"

If it is not provided, PayPay will apply user's master settings.

Responses

Request samples

Content type
application/json
{
  • "merchantPaymentId": "string",
  • "userAuthorizationId": "string",
  • "amount": {
    },
  • "requestedAt": 0,
  • "expiresAt": 0,
  • "storeId": "string",
  • "terminalId": "string",
  • "orderReceiptNumber": "string",
  • "orderDescription": "string",
  • "orderItems": [
    ],
  • "metadata": { },
  • "paymentMethodType": "string",
  • "paymentMethodId": "string",
  • "productType": "DONATION",
  • "onetimeUseCashback": "ENABLED"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get payment details

Get payment details.

Timeout: 15s

path Parameters
merchantPaymentId
required
string (schemas-MerchantPaymentId) <= 64 characters

Transaction ID provided by merchant that uniquely identifies the transaction.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Cancel a payment authorization

This api is used in cases where the merchant wants to cancel the payment authorization due to timeout scenarios.

By calling this api, if accepted, the OPA will guarantee the money eventually goes back to user's account.


Note: The Cancel API can be used until 00:14:59 AM the day after the Payment has happened.
For 00:15 AM or later, please call the refund API to refund the payment.
It can be used anytime if status is AUTHORIZED.
It can not be used if status is COMPLETED by completed payment or EXPIRED by expired.

Timeout: 15s

path Parameters
merchantPaymentId
required
string (schemas-MerchantPaymentId) <= 64 characters

Transaction ID provided by merchant that uniquely identifies the transaction.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    }
}

Update a payment authorization

This API is used to change the blocked amount of money during authorization with the same payment method.

During this API call, a new AUTHORIZED event webhook will be triggered, and the state of the transaction will remain as AUTHORIZED.

If lower amount of reauthorization is initiated, this API will return 200 for successful call and the process will be completed.

If higher amount of reauthorization is initiated, this API will return 201 code for successful call to ask for user's confirmation.

In the reconcilliation file, it is expected to have multiple records of AUTHORIZED transactions with the same order ID. The overview of how the reconcillation file will be is shown below:

orderId merchantId brandName storeId terminalId transactionStatus acceptedAt amount orderReceiptNumber methodOfPayment merchantPaymentId paymentDetails
xx123456 yy08181 〇〇加盟店 1234567 0 COMPLETED 2020-01-30T10:53:25+09:00 480 000-0001 wallet, point 000-0001 [{"paymentMethod":"POINT", "amount":80}, {"paymentMethod":"wallet", “amount":400}]
xx123456 yy08181 〇〇加盟店 1234567 0 REFUNDED 2020-01-30T16:53:25+09:00 -480 000-0001 wallet refund_000-0001 [{"paymentMethod":"wallet", “amount":-480}]
xx567890 yy08181 〇〇加盟店 1234567 0 AUTHORIZED 2020-01-30T13:31:43+09:00 2924 000-0005 wallet 000-0005 [{"paymentMethod":"wallet", “amount":2924}]
xx567890 yy08181 〇〇加盟店 1234567 0 AUTHORIZED 2020-01-31T13:50:43+09:00 1000 000-0005 wallet 000-0005 [{"paymentMethod":"wallet", “amount":1000}]

Timeout: 30 s

Request Body schema: application/json

Reauthorize

requestId
required
string (schemas-RequestId) <= 255 characters

Identifier reauth request generated by merchant

paymentId
required
string (PaymentId) <= 64 characters

The payment transaction id provided by PayPay

required
object (MoneyAmount)
requestedAt
integer (EpochTime)

Epoch timestamp in seconds

merchantComment
string (MerchantComment) <= 255 characters

The reason why a reauth is required. Will be shown in post transaction screen timeline if passed

redirectUrl
string (RedirectUrlRequest)

Url that Paypay can redirect to after reauthorize is successfully executed. Required for higher amount reauthorization

redirectType
string (RedirectTypeRequest)
Enum: "APP_DEEP_LINK" "WEB_LINK"

Type of redirection after reauthorize is successfully executed. Required for higher amount reauthorization

userAgent
string (UserAgentRequest)

Full string of browser user agent. Required for higher amount reauthorization

Responses

Request samples

Content type
application/json
{
  • "requestId": "string",
  • "paymentId": "string",
  • "updatedAmount": {
    },
  • "requestedAt": 0,
  • "merchantComment": "string",
  • "redirectUrl": "string",
  • "redirectType": "APP_DEEP_LINK",
  • "userAgent": "string"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Capture a payment authorization

This api is used to capture the payment authorization for a payment.
If you want to increase the amount, we will send a notification to the user asking for consent.

Timeout: 30s

Request Body schema: application/json
merchantPaymentId
required
string (schemas-MerchantPaymentId) <= 64 characters

Transaction ID provided by merchant that uniquely identifies the transaction.

required
object (MoneyAmount)
merchantCaptureId
required
string (MerchantCaptureId) <= 64 characters

Transaction ID provided by merchant to uniquely identify Capture by transaction.

requestedAt
required
integer (EpochTime)

Epoch timestamp in seconds

orderDescription
required
string <= 255 characters

Description for Capture

Responses

Request samples

Content type
application/json
{
  • "merchantPaymentId": "string",
  • "amount": {
    },
  • "merchantCaptureId": "string",
  • "requestedAt": 0,
  • "orderDescription": "string"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Revert a payment authorization

This API is used when the merchant wants to cancel the payment authorization because of the user has cancelled the order.

Timeout: 30s

Request Body schema: application/json

Revert Authorized Order Request

merchantRevertId
required
string (MerchantRevertId) <= 64 characters

Transaction ID provided by merchant to uniquely identify Revert by transaction.

paymentId
required
string (PaymentId) <= 64 characters

The payment transaction id provided by PayPay

requestedAt
required
integer (EpochTime)

Epoch timestamp in seconds

reason
string (Reason) <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "merchantRevertId": "string",
  • "paymentId": "string",
  • "requestedAt": 0,
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Refund a payment

Refund the payment to the user.
This API only accepts payment refunds, and refunds are performed asynchronously on the PayPay side.
Please see Get refund details for the results of your refund.

Timeout: 30s

Request Body schema: application/json

Refund

merchantRefundId
required
string (MerchantRefundId) <= 64 characters

Transaction ID provided by merchant to uniquely identify a refund of a transaction.
For multiple refunds, a unique merchantRefundId must be set for each refund transaction.
When the same merchantRefundId is specified for multiple refunds, the previous result is returned.

paymentId
required
string (PaymentId) <= 64 characters

The payment transaction id provided by PayPay

required
object (MoneyAmount)
requestedAt
required
integer (EpochTime)

Epoch timestamp in seconds

reason
string (Reason) <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "merchantRefundId": "string",
  • "paymentId": "string",
  • "amount": {
    },
  • "requestedAt": 0,
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get refund details

Optional paymentId as request query param in the GET Refund Details API: There is no need to pass this field if you don't use same merchantRefundId for two different paymentIds in the POST Refund API.

In case you use same merchantRefundId for the different paymentIds (different payment transaction IDs) in the POST Refund API. PayPay has multiple refund data for the same merchantRefundId in the system. PayPay maintains the merchantId, merchantRefundId, paymentId as idem key to identify the unique refund transaction details. Pass paymentId along with merchantRefundId to allow PayPay uniquely identify the refund transactions and return them when there are multiple refund transactions exists. If you don't pass paymentId in this case, the latest refund data is returned from the system.

Timeout: 15s

path Parameters
merchantRefundId
required
string (MerchantRefundIdSimple) <= 64 characters

Transaction ID provided by merchant to uniquely identify a refund of a transaction.

query Parameters
paymentId
string (PaymentId) <= 64 characters

The payment transaction id provided by PayPay

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get Sets of Cashback Information

  • This is a query REST API that returns all cashback information for each supported payment methods.
  • It will give customer available cashback information before customer places an order.

Timeout: 15s

Request Body schema: application/json

request params

requestId
required
string (RequestId) <= 64 characters

The unique id to identify expected cashback request by merchant.

merchantPaymentId
string <= 64 characters

The unique payment transaction id provided by merchant. Pass same merchantPaymentId in both Get Sets of Cashback Information and Create Payment APIs to verify cashback amount in Get Sets of Cashback Information API and granted cashback amount after payment transaction.

userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

merchantId
string (MerchantId)

ID of merchant issued by PayPay.

storeId
string (StoreId) <= 255 characters

Merchant store identifier

requestedAt
integer <int64>

UNIX epoch timestamp

Array of objects (MerchantOrderItem)

Either this value or amount is required.

object (MoneyAmountForCashbackExpectedMixin)
productType
string (ProductType)
Enum: "VIRTUAL_BONUS_INVESTMENT" "PAY_LATER_REPAYMENT" "REAL_INVESTMENT"

The product type in PayPay system. Generally, this request parameter is optional. For some merchants that are restricted to use only certain product types, the product type must be properly set.

Responses

Request samples

Content type
application/json
{
  • "requestId": "string",
  • "merchantPaymentId": "string",
  • "userAuthorizationId": "string",
  • "merchantId": "string",
  • "storeId": "string",
  • "requestedAt": 1234567890,
  • "orderItems": [
    ],
  • "amount": {
    },
  • "productType": "VIRTUAL_BONUS_INVESTMENT"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": [
    ]
}

Get payment methods

The Get payment methods API allows the merchant to know a user's payment methods before a payment is made, and use specific payment methods in a transaction.

This API returns the available payment method type and payment method id of a user, which could be "PAY_LATER_CC" (learn more about PAY_LATER_CC) or "CREDIT_CARD".

This API does not return the user's wallet payment method id, because it is the default payment-method when no paymentMethodId is passed to the payment API.

This API also returns walletInfo if the user granted permission to view balance information, by providing the get_balance scope during account linking.

If the user has multiple payment instruments for "PAY_LATER_CC", this API will return all the payment instruments sorted by highest rank (Gold, Regular, Family) and earliest registered date.

Timeout: 30s

query Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

productType
string (ProductTypeForPaymentMethodsMixin)
Enum: "VIRTUAL_BONUS_INVESTMENT" "PAY_LATER_REPAYMENT" "REAL_INVESTMENT"

The product type in PayPay system. Generally, this request parameter is optional. For some merchants that are restricted to use only certain product types, the product type must be properly set.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Wallet

Everything related to user wallet balance

Check user wallet balance

Check if user has enough balance to make a payment

Timeout: 15s

query Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

amount
required
integer <= 255 characters
currency
required
string
Value: "JPY"
productType
string (ProductType)
Enum: "VIRTUAL_BONUS_INVESTMENT" "PAY_LATER_REPAYMENT" "REAL_INVESTMENT"

The product type in PayPay system. Generally, this request parameter is optional. For some merchants that are restricted to use only certain product types, the product type must be properly set.

onetimeUseCashback
string (OnetimeUseCashbackForGetBalance)
Enum: "ENABLED" "DISABLED" "ENABLED" "DISABLED"
Example: onetimeUseCashback=ENABLED

To use this parameter, onetime_use_cashback scope is required.

Whether to include cashback. For example, PayPay will take cashback balance into account if it's "ENABLED". Likewise, PayPay will exclude cashback amount when it's "DISABLED".

Note: This parameter will be ignored when the master setting is "Earn Points"

If it is not provided, PayPay will apply user's master settings.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get user wallet balance

Retrieve the total amount in a user's Wallet. Application to PayPay is separately required to get user wallet balance. Timeout: 15s

query Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

currency
required
string
Value: "JPY"
productType
string (ProductTypeForGetBalanceMixin)
Enum: "VIRTUAL_BONUS_INVESTMENT" "PAY_LATER_REPAYMENT" "REAL_INVESTMENT" "POINT"

The product type in PayPay system. Generally, this request parameter is optional. For some merchants that are restricted to use only certain product types, the product type must be properly set.
When merchant passes productType either VIRTUAL_BONUS_INVESTMENT or POINT, PayPay returns the user's current point balance regardless of the setting status of useCashback flag.

onetimeUseCashback
string (OnetimeUseCashbackForGetBalance)
Enum: "ENABLED" "DISABLED" "ENABLED" "DISABLED"
Example: onetimeUseCashback=ENABLED

To use this parameter, onetime_use_cashback scope is required.

Whether to include cashback. For example, PayPay will take cashback balance into account if it's "ENABLED". Likewise, PayPay will exclude cashback amount when it's "DISABLED".

Note: This parameter will be ignored when the master setting is "Earn Points"

If it is not provided, PayPay will apply user's master settings.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Create topup QR code

This service will allow a merchant to create a QR code for the user. The user can scan the QR code to top up their account.

Timeout: 30s

Request Body schema: application/json

QRCode

merchantTopUpId
required
string (MerchantTopUpId) <= 64 characters

The unique user credit transaction id provided by merchant

userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

required
object (MoneyAmountForTopupQR)

The minimum topup amount for this transaction(minimum: 1,000 Japanese yen, maximum: 500,000 Japanese yen)

metadata
object

This parameter is obsolete.
The item is retained for backward compatibility and will be removed in a future release.

codeType
required
string

Pass string as "TOPUP_QR"

requestedAt
required
integer (EpochTime)

Epoch timestamp in seconds

redirectType
string (RedirectType)
Enum: "WEB_LINK" "APP_DEEP_LINK"

The type of redirect after complete of the topup

redirectUrl
string

The URL to redirect the user to after completing the payment

userAgent
string

The User agent of the web browser. When this parameter is provided, on mobile devices PayPay tries to open the browser that the merchant website is using. This value can be retrieved by using navigator.userAgent in JavaScript. This parameter supports WEB browsers as follows. If a browzer other than below is set, user's default browser starts up after transaction.

  • Android - Chrome, Firefox, UC Browser
  • iOS - Safari, Chrome, Firefox, UC Browser

Even if this parameter is not specified, user's default browser starts up after transaction.

Responses

Request samples

Content type
application/json
{
  • "merchantTopUpId": "string",
  • "userAuthorizationId": "string",
  • "minimumTopUpAmount": {
    },
  • "metadata": { },
  • "codeType": "string",
  • "requestedAt": 0,
  • "redirectType": "WEB_LINK",
  • "redirectUrl": "string",
  • "userAgent": "string"
}

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get topup details

Get the details of topup done using QR Code

Timeout: 30s

path Parameters
merchantTopUpId
string (MerchantTopUpId) <= 64 characters

The unique user credit transaction id provided by merchant

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Delete QR code

Delete the topup QR code

Timeout: 30s

path Parameters
codeId
required
any

unqiue ID of generated QR Code

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    }
}

User

Everything related to user management

Unlink user

Unlink a user from the client

Timeout: 15s

path Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    }
}

Get user authorization status

Get the authorization status of a user

Timeout: 15s

path Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get masked user profile

Get the masked phone number of the user

query Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Get PayPaySTEP rate

Get user's cashback rate details details for current month and/or next month, based on the progress of PayPaySTEP.

To use this API, cashback scope is required, and user permission is also required.

Timeout: 10s

query Parameters
userAuthorizationId
required
string (UserAuthorizationId) <= 64 characters

The PayPay user reference id returned by the user authorization flow

period
required
string
Enum: "current_month" "next_month" "current_month,next_month"

specify necessary periods in response, separate by comma.

Responses

Response samples

Content type
application/json
{
  • "resultInfo": {
    },
  • "data": {
    }
}

Notify users when events occur

If the user allows notification from the PayPay app, the following will be notified to the user.

Notifications

Events Category Message(example)
Create a payment authorization:API Push notification 〇〇が注文を受け付けました。
注文が完了しなかった場合、YYYY/MM/DD hh:mmに返戻されます。
金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Update a payment authorization:API Push notification 〇〇が支払い依頼金額を変更しました
注文が完了しなかった場合、YYYY/MM/DD hh:mmに返金されます
変更後の金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Capture a payment authorization:API Push notification 〇〇への支払いが完了しました。
金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Revert a payment authorization:API Push notification 支払い受付が〇〇によって取り消されました。
金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Asking for approval of the increase Push notification 〇〇から追加の支払いリクエストが届きました。
確認のうえお手続きください。
追加支払い金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Asking for approval of the increase Action bar An additional payment request has arrived for XX
Payment authorization expired Push notification 支払い受付が取り消されました。
金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx
Refund a payment:API Push notification 〇〇から返金が行われました。
金額: ¥1,000
決済番号: xxxxxxxxxxxxxxxxxxxx

Currently, push notifications and in-app notifications are only available in Japanese. There is no English version.

Basic status transition

The basic status transition for each event and WEBHOOK notification are as follows.

Event Before After Webhook Notification
Create a payment authorization:API - AUTHORIZED AUTHORIZED
Update a payment authorization:API AUTHORIZED AUTHORIZED AUTHORIZED
Capture a payment authorization:API AUTHORIZED COMPLETED COMPLETED
Payment authorization expired AUTHORIZED EXPIRED EXPIRED
Revert a payment authorization:API AUTHORIZED CANCELED CANCELED
Cancel a payment:API AUTHORIZED FAILED none
Refund a payment:API COMPLETED REFUNDED none

Webhook Setup

PayPay can send webhook events that notify your application at the time when event happens on your account. To receive the notification, the client needs to set up a webhook url where we will use HTTP POST to send data to the client. Each notification event will have one notification_type field which can be used by clients to determine which event has happened.

When your application receives the notification via webhook, it should respond with a HTTP 200 OK status code. Although not required, a response body with a short text description (like "OK") is recommended.

With the security concerns, it is highly recommended that clients whitelist PayPay IP address to receive notifications.

Please keep reading to learn for which events we currently send webhook notifications.

Customer Events

Events related to user state changes.

customer.authroization.succeeded

This notification is sent after the client successfully acquired the user's authorization.

{
  "notification_type": "customer.authroization.succeeded",
  "notification_id": "evt_aXnbdeFt2Ke",
  "createdAt": "1349654313",
  "referenceId": "yyyy",
  "nonce": "12345",
  "scopes": "preauth_capture_native",
  "userAuthorizationId": "xxxxx",
  "profileIdentifier": "*******5678",
  "expiry": 1234567  // the authorization id expiration epoch timestamp in seconds
}

customer.authroization.failed

This notification is sent after the client failed to acquire after going through the user authorization flow.

{
  "notification_type": "customer.authroization.failed",
  "notification_id": "evt_aXnbdeFt2Ke",
  "createdAt": "1349654313",
  "referenceId": "yyyy",
  "nonce": "12345",
  "result": "declined",  // or bad_request
  "reason": "invalid scope"
}

The result in the payload could be either declined if the the request is rejected by user, or bad_request if there are invalid info in the request.

customer.authroization.revoked

This notification is sent after a user revoked the ever granted authorization from the PayPay app.

{
  "notification_type": "customer.authroization.revoked",
  "notification_id": "evt_aXnbdeFt2Ke",
  "createdAt": "1349654313",
  "userAuthorizationId": "xxxxx",
  "referenceId": "yyyy"
}

customer.authroization.extended

In order to ease third party account linking experience, we will increase user authorization expiry from the date of last transaction/ grant. So merchants and users will have to give authorization less often.

This notification is sent after user's authorization is extended from PayPay side.

{
  "notification_type": "customer.authroization.extended",
  "notification_id": "evt_aXnbdeFt2Ke",
  "createdAt": "1349654313",
  "scopes": "preauth_capture_native",
  "userAuthorizationId": "xxxxx",
  "expiry": 1234567  // the authorization id expiration epoch timestamp in seconds
}

customer.authroization.canceled

This notification will be sent after a user has been deleted.

sample event:

{
  "notification_type": "customer.authroization.canceled",
  "notification_id": "evt_aXnbdeFt2Ke",
  "createdAt": "1349654313",
  "userAuthorizationId": "xxxxx"
}

Transaction Events

Events related to order transaction state changes.

AUTHORIZED | Create a payment authorization

This notification is triggered under 2 cases:

  1. a payment authorization is created successfully;
  2. the expiration of a payment authorization is unexpectedly shortened due to uncontrollable events at PayLater end (only applicable for PAY_LATER_CC authorization).

In case 2, an updated expiration will be included in the payload. Merchant is expected to implement proper handling after consuming such an event to avoid capture failure.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "paid_at": null,
  "order_amount": 12345,
  "state": "AUTHORIZED"
}

AUTHORIZED | Update a payment authorization

This notification is sent after the reauthorization process is completed successfully. The state of transaction is still maintained as AUTHORIZED.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "paid_at": null,
  "order_amount": 12345,
  "reauth_request_id": "123456789",
  "state": "AUTHORIZED"
}

COMPLETED

This notification is sent after the order status changes to COMPLETED.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "paid_at": "2020-04-13T13:35:29Z",
  "order_amount": 12345,
  "state": "COMPLETED"
}

CANCELED

This notification is sent after the order status changes to CANCELED.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "paid_at": null,
  "order_amount": 12345,
  "state": "CANCELED"
}

EXPIRED

This notification is sent after the order status changes to EXPIRED.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "paid_at": null,
  "order_amount": 12345,
  "state": "EXPIRED"
}

EXPIRED_USER_CONFIRMATION

This notification is sent when your request to approve the increase has expired. The increase approval request expires 6 hours after the request.

{
  "notification_type": "Transaction",
  "merchant_id": "123456789",
  "store_id": "123456",
  "pos_id": "123",
  "order_id": "123456789123456",
  "merchant_order_id": "",
  "authorized_at": "2020-03-13T13:35:30Z",
  "expires_at": "2020-04-13T13:35:29Z",
  "confirmation_expires_at": "2020-04-13T13:35:29Z",
  "order_amount": 12345,
  "reauth_request_id": "123456789",
  "state": "AUTHORIZED"
}

Recon file

PayPay generates a transaction file by daily processing and notifies it by Webhook.
If "transactionStatus": "FAILED", depending on the cause of the error, it may not be output to the recon file.
The following are examples of transaction data not be output to the recon file.
・Transaction failure due to exceeding the user's spending limit
・Transaction failure due to exceeding a single settlement limit

File linkage specifications

Category Description Note
File linkage method Webhook
File Name preauth_transaction_<merchant_id>_<from>_<to>.csv
File creation unit merchant_id
Processing cycle Daily Transactions from 00:00:00 to 23:59:59.
Notification time (JST) Between 1:30 and 10:00
format CSV
File acquisition period 2hours
File retention period 1 week If the recon file cannot be obtained due to a merchant failure, etc., PayPay will be able to resend the webhook.
Please contact us if you would like to be notified again.
character code(Contents) Shift_JIS
character code(file name) UTF-8
newline code CRLF

File layout

Key Value from Note
orderId paymentId paymentId issued by PayPay.
merchantId merchant_id merchantId issued by PayPay.
brandName brandName Brand name registered with PayPay.
storeId storeId storeId set in the request.
storeName storeName Store name registered with PayPay.
terminalId terminalId terminalId set in the request.
transactionStatus "AUTHORIZED" , ”CANCELED” , "COMPLETED" , "EXPIRED", "FAILED", "REFUNDED" Status of transaction data managed by PayPay
If "transactionStatus": "FAILED", depending on the cause of the error, it may not be output to the recon file.
The following are examples of transaction data not be output to the recon file.
・Transaction failure due to exceeding the user's spending limit
・Transaction failure due to exceeding a single settlement limit
acceptedAt Described in the attached table below
amount amount Absolute value notation only
orderReceiptNumber "orderReceiptNumber" orderReceiptNumber issued by Merchant.
methodOfPayment "wallet", "pay_later_cc", "point" Comma separated payment methods.
merchantPaymentId Described in the attached table below merchantPaymentId issued by Merchant.
paymentDetails [{"paymentMethod":"POINT", "amount":80}, {"paymentMethod":"WALLET", “amount":400}] This is the payment amount for each payment method.

Since the acquisition source of the value of merchantPaymentId and acceptedAt changes for each transactionStatus, they are described below.

transactionStatus merchantPaymentId acceptedAt
AUTHORIZED merchantPaymentId Create a payment authorization request: acceptedAt
Update a payment authorization: acceptedAt
Get payment details response: acceptedAt
CANCELED merchantRevertId Revert a payment authorization request: acceptedAt
Get payment details response: revert.data.[].acceptedAt
COMPLETED merchantCaptureId Capture a payment authorization response: acceptedAt
Get payment details response: captures.data.[].acceptedAt
EXPIRED merchantPaymentId Get payment details response: expiresAt
FAILED merchantPaymentId Get payment details response: failedAt
REFUNDED merchantRefundId Refund a payment response: acceptedAt
Get payment details response: refunds.data.[].acceptedAt

Download Sample File

Webhook notifications

Get the file from the path notified by the webhook.

{
  "notification_type":"file.created",
  "notification_id": "<UUID>",
  "fileType":"transaction_recon",
  "path":"https://<server_path>/<filename>?parameters",
  "requestedAt":"<epoch time>"
}

FAQ

Click here for the latest FAQ.

Changelog

Date of Documentation Update Date of Release Type of Change Section Updates
2022.08.23 2022.12.05 Feature Update a payment authorization 1. Removed the error code of HIGHER_AMOUNT_REAUTH_NOT_SUPPORTED
2. Added the sequence diagram of Update a Payment Authorization for both lower and higher amount reauthorization
3. Added redirectUrl, redirectType, and userAgent of Update a Payment Authorization for higher amount reauthorization
4. Added 201 response of Update a Payment Authorization in higher reauthorize case
2022.09.07 2022.12.07 Feature Create a payment authorization Updated the description of request parameter "paymentMethodType"
2022.09.10 2022.12.05 Feature Update a payment authorization 1. Changed the code of for USER_CONFIRMATION_REQUIRED to 08300104.
2. Deleted qrCodeId and deeplink for USER_CONFIRMATION_REQUIRED on Update a payment authorization API.
3. Adjusted the response for USER_CONFIRMATION_REQUIRED to return url and expiresAt instead of echoing back merchant's request
2022.09.21 2022.12.05 Feature Update a payment authorization 1. Changed the redirectType from APP_DEEPLINK to APP_DEEP_LINK.
2022.10.20 2022.10.27 Feature Create a payment authorization Added new error code USER_DAILY_LIMIT_FOR_MERCHANT_EXCEEDED
2022.11.04 2022.12.05 Feature Update a payment authorization 1. Added acceptedAt attribute to 200 OK response
2022.12.17 2023.01.31 Feature Create a payment authorization Returned acceptedAt as zero when state is CREATED in Create a payment authorization api and Get payment details
2023.01.25 Released Documentation Fix Create a topup QR Code Fixed the description of minimumTopUpAmount parameter
2023.02.13 Released Desc. Create a payment authorization
Transaction Events > AUTHORIZED | Create a payment authorization
update the description of expiresAt
2023.03.10 TBD Documentation Fix Update status code description 1. Changed description of ORDER_NOT_REVERSIBLE status code
2023.03.30 Released Documentation Fix File linkage specifications Fixed the description of Notification time.
2023.04.13 Released Documentation Fix Recon file Added that for "transactionStatus": "FAILED", it may not be output to the recon file depending on the cause of the error.
2023.04.26 2023.06.12 Feature Create a payment authorization, Update a payment authorization, Get payment details Add paymentMethods response field
2023.06.16 Released Documentation Fix Refund a payment Changed the description of Refund a payment.
2023.07.04 Released Documentation Fix Create a payment authorization, Get payment details, Capture a payment authorization, Create topup QR code, Get topup details Updated the description of metadata.
2023.07.31 Released Feature Update a payment authorization, Error handling 1. Removed part of description about supported payment method for ReAuthorize.
2. Add new error code PAY_METHOD_INVALIDATED.
2023.08.01 Released Documentation Fix Create a payment authorization, Get payment details Updated the description of acceptedAt.
2023.09.01 2023.09.12 Feature Create a payment authorization, Get user wallet balance, Check user wallet balance Add description of onetimeUseCashback parameter.
2023.09.08 2023.10.05 Feature Get payment methods Adding a new field membership in Get payment methods api response for PAY_LATER_CC payment method type.
2023.11.06 2023.12.04 Feature Create a payment authorization, Capture a payment authorization, Update a payment authorization, Get payment details Added POINT to paymentMethods.type.
2023.10.24 2023.11.13 Feature Capture a payment authorization Add paymentMethods response field.
2023.11.15 2023.12.04 Feature Recon file Added POINT payment type in methodOfPayment and new column paymentDetails and recon structure changes in Update a payment authorization.
2023.12.19 TBD Feature Get Refund details Added new query param paymentId for the request and updated Get Refund details api description.
2024.01.18 TBD Feature Get PayPaySTEP rate Adding new API interface for Get cashback rate details
2024.03.12 Released Documentation Fix Create a payment authorization, Get payment details, Capture a payment authorization, Create topup QR code, Get topup details Added that the metadata is obsolete.