PayPay · AsyncAPI Specification

Paypay Webhooks

Version

View Spec View on GitHub CompanyFintechPaymentsMobile PaymentsQR Code PaymentsDigital WalletJapanMerchant PaymentsAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-07-20'
method: searched
source: https://www.paypay.ne.jp/opa/doc/v1.0/dynamicqrcode
type: Webhooks
note: >-
  PayPay OPA sends webhook (HTTP POST) notifications on transaction state changes.
  The client configures a webhook URL (via the merchant panel); each event carries a
  notification_type field. PayPay recommends IP-whitelisting PayPay's addresses.
  Clients must respond 200 OK. No published AsyncAPI document exists; this captures
  the documented webhook catalog.
delivery:
  transport: HTTP POST
  ack: respond with HTTP 200 OK (short body like "OK" recommended)
  security: client IP allowlist of PayPay addresses
  setup: PayPay merchant panel (webhook endpoints configured during onboarding)
events:
- notification_type: Transaction
  name: AUTHORIZED
  trigger: A payment authorization is created (or its expiry unexpectedly shortened for PAY_LATER_CC)
- notification_type: Transaction
  name: COMPLETED
  trigger: Payment captured / instant payment completed
- notification_type: Transaction
  name: EXPIRED
  trigger: Payment authorization expired
- notification_type: Transaction
  name: CANCELED
  trigger: Payment authorization reverted
- notification_type: Transaction
  name: REFUNDED
  trigger: Payment refunded (state transition; webhook per docs)
recon_file:
  channel: webhook
  description: >-
    PayPay generates a daily transaction reconciliation CSV per merchant_id and
    notifies its availability by webhook (notification of preauth_transaction_*.csv,
    Shift_JIS, delivered 01:30-10:00 JST, 2h retention / 1 week resend window).
example_payload:
  notification_type: Transaction
  merchant_id: '123456789'
  store_id: '123456'
  pos_id: '123'
  order_id: '123456789123456'
  authorized_at: '2020-03-13T13:35:30Z'
  expires_at: '2020-04-13T13:35:29Z'
  order_amount: '12345'
  state: AUTHORIZED