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.
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.
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:
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.
Everything related to OPA API Authorization is described here.
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.
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.
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. |
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. |
Status | Code | Description |
---|---|---|
400 | ORDER_NOT_REVERSIBLE | This code is returned in the following cases: 1) If the status of the target order is REFUNDED , EXPIRED , COMPLETED , or CANCELED . This error code will not be returned for anything other than shipping sales, even if the order status is COMPLETED . 2) If the cancellation window has passed. |
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 |
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. |
Status | Code | Description |
---|---|---|
400 | INVALID_PARAMS | Invalid parameters received |
400 | ORDER_NOT_CANCELABLE | Order is not cancelable. |
404 | RESOURCE_NOT_FOUND | Order not found |
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 |
Status | Code | Description |
---|---|---|
404 | NO_SUCH_REFUND_ORDER | Refund not found |
Status | Code | Description |
---|---|---|
400 | DUPLICATE_TOPUP_QR_REQUEST | Topup QR with same merchantTopUpId exists. |
Status | Code | Description |
---|---|---|
404 | TOPUP_DETAILS_NOT_FOUND | Invalid merchantTopUpId. |
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. |
Status | Code | Description |
---|---|---|
400 | CANCELED_USER | The user has canceled PayPay account. |
401 | INVALID_USER_AUTHORIZATION_ID | The specified user authorization ID is invalid. |
Status | Code | Description |
---|---|---|
401 | INVALID_USER_AUTHORIZATION_ID | The specified user authorization ID is invalid. |
Status | Code | Description |
---|---|---|
400 | CANCELED_USER | Canceled user |
Status | Code | Description |
---|---|---|
400 | VALIDATION_FAILED_EXCEPTION | Input data is wrong. |
500 | UNAUTHORIZED_ACCESS | Un-authorised access |
Status | Code | Description |
---|---|---|
400 | NO_VALID_PAYMENT_METHOD | User does not have any payment methods. |
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.
There are two ways to react with this situation
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.
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
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
agreeSimilarTransaction | string (Optional) If the parameter is set to "true", the payment duplication check will be bypassed. |
Payment
merchantPaymentId required | string (MerchantPaymentId) <= 64 characters Transaction ID provided by merchant that uniquely identifies the transaction. |
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 (StoreId) <= 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. |
paymentMethodType | string (PaymentMethodType) <= 64 characters Payment method type. Possible values are the followings:
Merchant can make use of this field to designate the payment method to be used for a payment transaction. If If not set, PayPay will define the payment method the transaction will be tried on.
|
paymentMethodId | string (PaymentMethodId) <= 64 characters 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 You may regard paymentMethodId as a string representation of a numeric value, with a maximum length of approximately 20 digits. |
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 (OnetimeUseCashbackForCreatePayment) Enum: "ENABLED" "DISABLED" NOTE: To use this parameter, Whether to use cashback for this transaction.
For example, if it's This parameter will be ignored when the master setting is "Earn Points" If it is not provided, PayPay will apply user's master settings. |
{- "merchantPaymentId": "string",
- "userAuthorizationId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "expiresAt": 0,
- "storeId": "string",
- "terminalId": "string",
- "orderReceiptNumber": "string",
- "orderDescription": "string",
- "orderItems": [
- {
- "name": "string",
- "category": "string",
- "quantity": 1,
- "productId": "string",
- "unitPrice": {
- "amount": 0,
- "currency": "JPY"
}
}
], - "metadata": { },
- "paymentMethodType": "string",
- "paymentMethodId": "string",
- "productType": "DONATION",
- "onetimeUseCashback": "ENABLED"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "paymentId": "string",
- "status": "CREATED",
- "acceptedAt": 0,
- "refunds": {
- "data": [
- {
- "status": "CREATED",
- "acceptedAt": 0,
- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
]
}, - "captures": {
- "data": [
- {
- "acceptedAt": 0,
- "merchantCaptureId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "orderDescription": "string",
- "requestedAt": 1704112496,
- "expiresAt": 0,
- "status": "USER_REQUESTED"
}
]
}, - "revert": {
- "acceptedAt": 0,
- "merchantRevertId": "string",
- "requestedAt": 1704112496,
- "reason": "string"
}, - "merchantPaymentId": "string",
- "userAuthorizationId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "expiresAt": 0,
- "storeId": "string",
- "terminalId": "string",
- "orderReceiptNumber": "string",
- "orderDescription": "string",
- "orderItems": [
- {
- "name": "string",
- "category": "string",
- "quantity": 1,
- "productId": "string",
- "unitPrice": {
- "amount": 0,
- "currency": "JPY"
}
}
], - "metadata": { },
- "paymentMethods": [
- {
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "type": "WALLET",
- "breakdown": {
- "points": [
- {
- "amount": 0,
- "type": "REGULAR"
}
]
}
}
]
}
}
Get payment details.
Timeout: 15s
merchantPaymentId required | string (MerchantPaymentIdSimple) <= 64 characters Transaction ID provided by merchant that uniquely identifies the transaction. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "paymentId": "string",
- "status": "CREATED",
- "acceptedAt": 0,
- "refunds": {
- "data": [
- {
- "status": "CREATED",
- "acceptedAt": 0,
- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
]
}, - "captures": {
- "data": [
- {
- "acceptedAt": 0,
- "merchantCaptureId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "orderDescription": "string",
- "requestedAt": 1704112496,
- "expiresAt": 0,
- "status": "USER_REQUESTED"
}
]
}, - "revert": {
- "acceptedAt": 0,
- "merchantRevertId": "string",
- "requestedAt": 1704112496,
- "reason": "string"
}, - "merchantPaymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "expiresAt": 0,
- "canceledAt": 0,
- "storeId": "string",
- "terminalId": "string",
- "orderReceiptNumber": "string",
- "orderDescription": "string",
- "orderItems": [
- {
- "name": "string",
- "category": "string",
- "quantity": 1,
- "productId": "string",
- "unitPrice": {
- "amount": 0,
- "currency": "JPY"
}
}
], - "metadata": { },
- "userAuthorizationId": "string",
- "paymentMethods": [
- {
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "type": "WALLET",
- "breakdown": {
- "points": [
- {
- "amount": 0,
- "type": "REGULAR"
}
]
}
}
]
}
}
This API is used when, while creating a payment, the client cannot determine the status of the payment. For example, the client receives a timeout or the response does not indicate the exact payment status.
If the request is accepted, PayPay will guarantee the money eventually goes back to user's account. Please note this is an asynchronous API and hence there can be a lag in processing the cancellation.
Note:
You can utilize the Cancel API within the specified timeframe.
By default, the window is opened until 00:14:59 AM on the following day after the transaction took place.
Once this window is closed, kindly use the refund API to initiate refund.
For orderType REMITTANCE, the window is opened until 25 minutes after PayPay accepted the transaction.
You're not able to initiate refund request for REMITTANCE.
When you use PreAuth, you can cancel the payment only when the status is AUTHORIZED
.
Once the payment status becomes COMPLETED
or the payment is expired and the status is EXPIRED
, you cannot cancel the payment.
Timeout: 15s
merchantPaymentId required | string (MerchantPaymentIdSimple) <= 64 characters Transaction ID provided by merchant that uniquely identifies the transaction. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": { }
}
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
merchantPaymentId required | string (MerchantPaymentIdSimple) <= 64 characters Transaction ID provided by merchant that uniquely identifies the transaction. |
required | object (MoneyAmount) |
merchantCaptureId required | string (MerchantCaptureId-2) <= 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 |
{- "merchantPaymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "merchantCaptureId": "string",
- "requestedAt": 1704112496,
- "orderDescription": "string"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "paymentId": "string",
- "status": "COMPLETED",
- "acceptedAt": 1704112496,
- "refunds": {
- "data": [
- {
- "status": "CREATED",
- "acceptedAt": 0,
- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
]
}, - "captures": {
- "data": [
- {
- "acceptedAt": 0,
- "merchantCaptureId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "orderDescription": "string",
- "requestedAt": 1704112496,
- "status": "COMPLETED"
}
]
}, - "merchantPaymentId": "string",
- "userAuthorizationId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "expiresAt": 0,
- "storeId": "string",
- "terminalId": "string",
- "orderReceiptNumber": "string",
- "orderDescription": "string",
- "orderItems": [
- {
- "name": "string",
- "category": "string",
- "quantity": 1,
- "productId": "string",
- "unitPrice": {
- "amount": 0,
- "currency": "JPY"
}
}
], - "metadata": { },
- "assumeMerchant": "string",
- "paymentMethods": [
- {
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "type": "WALLET",
- "breakdown": {
- "points": [
- {
- "amount": 0,
- "type": "REGULAR"
}
]
}
}
]
}
}
This API is used when the merchant wants to cancel the payment authorization because of the user has cancelled the order.
Timeout: 30s
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-2) <= 64 characters The payment transaction id provided by PayPay |
requestedAt required | integer (EpochTime) Epoch timestamp in seconds |
reason | string (Reason-2) <= 255 characters |
{- "merchantRevertId": "string",
- "paymentId": "string",
- "requestedAt": 1704112496,
- "reason": "string"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "status": "CANCELED",
- "acceptedAt": 1704112496,
- "paymentId": "string",
- "requestedAt": 1704112496,
- "reason": "string"
}
}
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
Refund
merchantRefundId required | string (MerchantRefundId) <= 64 characters Transaction ID provided by merchant to uniquely identify a refund of a transaction. |
paymentId required | string (PaymentId-2) <= 64 characters The payment transaction id provided by PayPay |
required | object (MoneyAmount) |
requestedAt required | integer (EpochTime) Epoch timestamp in seconds |
reason | string (Reason-2) <= 255 characters |
{- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "status": "CREATED",
- "acceptedAt": 0,
- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
}
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 paymentId
s in the POST Refund API.
In case you use same merchantRefundId
for the different paymentId
s (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
merchantRefundId required | string (MerchantRefundIdSimple) <= 64 characters Transaction ID provided by merchant to uniquely identify a refund of a transaction. |
paymentId | string (PaymentId-2) <= 64 characters The payment transaction id provided by PayPay |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "status": "CREATED",
- "acceptedAt": 0,
- "merchantRefundId": "string",
- "paymentId": "string",
- "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "requestedAt": 1704112496,
- "reason": "string"
}
}
Timeout: 15s
request params
requestId required | string <= 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 |
userAuthorizationId required | string (UserAuthorizationId-2) <= 64 characters The PayPay user reference id returned by the user authorization flow |
merchantId | string ID of merchant issued by PayPay. |
storeId | string (StoreId) <= 255 characters Id to identify store under merchant |
requestedAt | integer <int64> UNIX epoch timestamp |
Array of objects (MerchantOrderItem-2) Either this value or | |
object (MoneyAmount) | |
productType | string (ProductTypeWithPoint) 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. |
{- "requestId": "string",
- "merchantPaymentId": "string",
- "userAuthorizationId": "string",
- "merchantId": "string",
- "storeId": "string",
- "requestedAt": 1234567890,
- "orderItems": [
- {
- "name": "string",
- "category": "string",
- "quantity": 1,
- "productId": "string",
- "unitPrice": {
- "amount": 0,
- "currency": "JPY"
}
}
], - "amount": {
- "amount": 0,
- "currency": "JPY"
}, - "productType": "VIRTUAL_BONUS_INVESTMENT"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": [
- {
- "paymentMethodType": "WALLET",
- "campaignMessage": "Get 100 Yen cashback",
- "normalCashbackAmount": 100,
- "normalCashbackPercentage": "15",
- "lotteryCashbackPercentage": "5.5"
}, - {
- "paymentMethodType": "PAY_LATER_CC",
- "campaignMessage": "Get 100 Yen cashback",
- "normalCashbackAmount": 100,
- "normalCashbackPercentage": "15",
- "lotteryCashbackPercentage": "5.5"
}
]
}
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
userAuthorizationId required | string (UserAuthorizationId-2) <= 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. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "walletInfo": {
- "userAuthorizationId": "string",
- "totalBalance": {
- "amount": 0,
- "currency": "JPY"
}
}, - "paymentMethods": [
- {
- "paymentMethodType": "CREDIT_CARD",
- "id": "string",
- "issuerName": "string",
- "accountNo": "string",
- "logoUrl": "string",
- "disabled": true,
- "underMaintenance": true,
- "authenticated": true,
- "limited": true,
- "paymentMethodStatus": "string",
- "membership": "PRIMARY",
- "creditCardRank": "GOLD",
- "brand": "V",
- "cardIconUrl": "string",
- "cardBrandUrl": "string",
- "cardName": "string"
}
]
}
}
Check if user has enough balance to make a payment
Timeout: 15s
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" Example: onetimeUseCashback=ENABLED Note: To use this parameter, Whether to include cashback.
For example, PayPay will take cashback balance into account if it's This parameter will be ignored when the master setting is "Earn Points" If it is not provided, PayPay will apply user's master settings. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "hasEnoughBalance": true
}
}
Retrieve the total amount in a user's Wallet. Application to PayPay is separately required to get user wallet balance. Timeout: 15s
userAuthorizationId required | string (UserAuthorizationId-2) <= 64 characters The PayPay user reference id returned by the user authorization flow |
currency required | string Value: "JPY" |
productType | string 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.
|
onetimeUseCashback | string Enum: "ENABLED" "DISABLED" Example: onetimeUseCashback=ENABLED To use this parameter, Whether to include cashback.
For example, PayPay will take cashback balance into account if it's 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. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "userAuthorizationId": "string",
- "totalBalance": {
- "amount": 0,
- "currency": "JPY"
}, - "balanceDetails": [
- {
- "account": "CASHBACK",
- "balance": {
- "amount": 0,
- "currency": "JPY"
}, - "usable": true
}
], - "preference": {
- "useCashback": false,
- "cashbackAutoInvestment": false
}
}
}
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
QRCode
merchantTopUpId required | string (MerchantTopUpId) <= 64 characters The unique user credit transaction id provided by merchant |
userAuthorizationId required | string (UserAuthorizationId-2) <= 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. |
codeType required | string Value: "TOPUP_QR" Pass string as "TOPUP_QR" |
requestedAt required | integer (EpochTime) Epoch timestamp in seconds |
redirectType | string (RedirectTypeTopUp) 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 (UserAgentQrCode) When this parameter is set, please set redirectType as 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 found by using the Javascript function This parameter supports WEB browsers as follows. If a browser other than below is set, user's default browser starts up after transaction. However, you cannot redirect correctly in private browsing or incognito.
Even if this parameter is not specified, user's default browser starts up after transaction. |
{- "merchantTopUpId": "string",
- "userAuthorizationId": "string",
- "minimumTopUpAmount": {
- "amount": 100,
- "currency": "JPY"
}, - "metadata": { },
- "codeType": "TOPUP_QR",
- "requestedAt": 1704112496,
- "redirectType": "WEB_LINK",
- "redirectUrl": "string",
- "userAgent": "string"
}
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "codeId": "string",
- "url": "string",
- "status": "string",
- "merchantTopUpId": "string",
- "userAuthorizationId": "string",
- "minimumTopUpAmount": {
- "amount": 100,
- "currency": "JPY"
}, - "metadata": { },
- "expiryDate": 0,
- "codeType": "TOPUP_QR",
- "requestedAt": 1704112496,
- "redirectType": "WEB_LINK",
- "redirectUrl": "string",
- "userAgent": "string"
}
}
Get the details of topup done using QR Code
Timeout: 30s
merchantTopUpId | string (MerchantTopUpId) <= 64 characters The unique user credit transaction id provided by merchant |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "topUpId": "string",
- "merchantTopUpId": "string",
- "userAuthorizationId": "string",
- "requestedAt": 1704112496,
- "acceptedAt": 1704112496,
- "expiryDate": 0,
- "status": "CREATED",
- "metadata": { }
}
}
Unlink a user from the client
Timeout: 15s
userAuthorizationId required | string (UserAuthorizationId-2) <= 64 characters The PayPay user reference id returned by the user authorization flow |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": { }
}
Get the authorization status of a user
Timeout: 15s
userAuthorizationId required | string (UserAuthorizationId) <= 64 characters The PayPay user reference id returned by the user authorization flow |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "userAuthorizationId": "string",
- "referenceIds": [
- "string"
], - "status": "ACTIVE",
- "scopes": [
- "preauth_capture_native"
], - "expireAt": 0,
- "issuedAt": 0
}
}
Get the masked phone number of the user
userAuthorizationId required | string (UserAuthorizationId-2) <= 64 characters The PayPay user reference id returned by the user authorization flow |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "phoneNumber": "*******1234"
}
}
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
userAuthorizationId required | string (UserAuthorizationId-2) <= 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. |
{- "resultInfo": {
- "code": "string",
- "message": "string",
- "codeId": "string"
}, - "data": {
- "currentMonth": {
- "period": "2021-03",
- "campaigns": [
- {
- "name": "pay_with_paypay",
- "eligibleRate": 0.1,
- "eligibleGoldRate": 0.1,
- "maxRate": 0,
- "suggestionType": "apply_pay_later",
- "condition": {
- "campaignBase": {
- "rate": 0.1,
- "fulfilled": true
}, - "goldCard": {
- "rate": 0.1,
- "fulfilled": true
}, - "eligibleTransaction": {
- "rate": 0.1,
- "fulfilled": true,
- "singleTransactionAmountThreshold": 0,
- "eligibleTransactionCount": 0,
- "eligibleTransactionAmount": 0,
- "transactionCountThreshold": 0,
- "transactionAmountThreshold": 0
}
}
}
]
}
}
}
If the user allows notification from the PayPay app, the following will be notified to the user.
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.
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 |
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.
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
}
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.
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"
}
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
}
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"
}
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"
}
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"
}
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"
}
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"
}
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 |
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 |
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. It will only be provided when transactionStatus is COMPLETED or REFUNDED. |
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 |
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>"
}
Click here for the latest FAQ.
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 reauthorization4. 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. |
2024.05.13 | 2024.08.05 | Feature | Capture a payment authorization | Added schema for multiple payment methods. |
2024.05.27 | Released | Documentation Fix | Create a Code | Updated the description of userAgent. |
2024.06.14 | TBD | Feature | Get payment details | Added HIVEX as supported value in data.paymentMethods.type |
2024.08.19 | 2024.08.19 | Feature | Cancel a payment. Error Handling | Added Cancel acceptable window description for REMITTANCE order type. |
2024.09.05 | 2024.09.05 | Feature | Recon file | Updated condition for showing paymentDetails in recon file. |
2024.09.05 | TBD | Feature | Create a payment authorization, Get payment details, Capture a payment authorization | Added a field breakdown under paymentMethods in the response. |
2024.09.05 | TBD | Feature | Recon file | Added breakdown to paymentDetails . |