Plexy
Pay API
Gate APIDashboard
Pay API
Gate APIDashboard
  1. Pay API
  • Overview
  • Authorization
  • Webhooks
  • API Errors
  • Test Scenarios
  • Ecommerce Plugins
  • API
    • Payments
      • Overview
      • Payment Links
        • Create Payment Link
        • List Payment Links
        • Retrieve Payment Link by Order Reference
        • Cancel Payment Link
        • Retrieve Payment Link
        • Update Payment Link Expiration
        • Retrieve Payment Links Statistics
      • Reccurent Payments
        • Create Merchant-Initiated Payment
      • Direct Payments
        • Get Keys
        • Create Host-to-Host Payment
      • Transaction Management
        • Find Transaction's History by ID
        • Find Transaction by Payment Link ID
        • Find Transaction by ID
        • Find Transaction by Order reference
      • Payment Management
        • Cancel Payment
        • Capture Payment
        • Process Refund
      • Split Requests
        • Create
        • List
        • Update
        • Get By Id
        • Delete
      • Settlement Payment Order
        • Create
        • Get by id
        • List
    • Payouts
      • Retrieve Payout Transactions
      • Process Payout
      • Save Card for Payouts
    • Customers
      • Get Customer's Card Tokens
      • List Customers
      • Create Customer
      • Get Customer by ID
      • Get Customer's Transactions
    • Merchants
      • Payment Beneficiary
        • Create
        • Update
        • Gey By Id
        • List
        • Transfer from beneficiary balance to merchant balance
        • Create manual settlement for beneficiary
      • Retrieve Merchant's Details
    • Wallet
      • Authorize
      • Сapture
      • Refund
      • Cancel
    • Payment Methods
      • Google Pay™ Integration
  • Client SDK
    • Server flow
      • Session server flow
    • Web
      • Web Drop-in
      • Web iFrame
    • Flutter
      • Flutter Drop-in
  • Schemas
    • Schemas
      • response.TransactionList
      • entity.SplitRequest
      • entity.PaymentBeneficiary
      • request.CreatePaymentBeneficiary
      • entity.SettlementPaymentOrder
      • entity.PayoutRequest
      • entity.PayoutRequestRowData
      • entity.UserProfile Copy
      • entity.Store
      • request.AssignStoreToUser
      • request.RemoveStoreFromUser
      • entity.AccountExternalSystem
      • response.AssignStoreToUser
      • request.CreateStore
      • response.Store
      • response.UserList
      • request.WalletAuthorizeRequest
      • entity.ShortWalletTransaction
      • response.WalletAuthorizeResponse
      • request.WalletCapture
      • response.RemoveStoreFromUser
      • command.HandleThreeDResult
      • domain.Report
      • entity.CardSaveSessionCustomer
      • entity.Permission
      • entity.UserProfile
      • entity.UserRole
      • errors.Message
      • errors.Source
      • errors.Type
      • git_plexypay_com_ecom_back_api_internal_domain_view.Page-domain_Report
      • git_plexypay_com_ecom_back_api_internal_domain_view.Page-entity_UserProfile
      • git_plexypay_com_ecom_back_api_internal_platform_errors.Code
      • models.CSVApiRequest
      • models.CreateBussinessDetails
      • models.KeyResponse
      • models.OnboardingRequest
      • models.Transaction
      • paymentcore.Address
      • paymentcore.CustomerDetails
      • request.AuthorizePayment
      • request.BrowserDetails
      • request.CardData
      • request.ChangeUserRole
      • request.ContinueThreeDS
      • request.CreateCardSaveSession
      • request.CreateInviteSession
      • request.CreatePaymentLink
      • request.CreatePaymentLinkMetadata
      • request.HandlePayout
      • request.MerchantInitiatedPayment
      • request.PasswordRequest
      • request.Recurring
      • request.RefundPayment
      • request.SaveCard
      • request.SaveOneCustomer
      • request.TwoStepAuthorizePayment
      • request.UpdateMerchantSettingsRequest
      • request.UpdatePaymentLink
      • response.AcquirerResponseThreeDSecure
      • response.AuthorizeAndCapturePayment
      • response.AuthorizePayment
      • response.CancelPaymentResponse
      • response.CapturePaymentResponse
      • response.ContinueThreeDS
      • response.Currency
      • response.Customer
      • response.CustomerTransaction
      • response.CustomerTransactions
      • response.Customers
      • response.Error
      • response.Merchant
      • response.MerchantInitiatedPayment
      • response.MerchantSettings
      • response.PaymentLink
      • response.PaymentLinkInfo
      • response.PaymentLinkMetadata
      • response.PaymentLinksInfo
      • response.PaymentLinksStatistics
      • response.PaymentLinksStatisticsItem
      • response.Payout
      • response.Permission
      • response.RefundPaymentResponse
      • response.Report
      • response.SavedCard
      • response.Session
      • response.Settlement
      • response.SettlementTransaction
      • response.Store
      • response.Stores
      • response.Transaction
      • response.TransactionDetails
      • response.TransactionEvents
      • response.TransactionHistoryEvent
      • response.TransactionHistoryEventData
      • response.TransactionResponse
      • response.TransactionWebhookDetails
      • response.Transactions
      • response.UpdateMerchantSettingsResponse
      • response.UserProfile
      • value.PaymentMethod
    • receipt
    • Error
    • DecimalAmount
    • ProductType
    • ProductCategory
    • Product
    • Order
    • AgentBalance
    • AgentDeposit
    • TopupRequest
    • CreateOrderRequest
  1. Pay API

Webhooks

Webhooks allow Plexy Pay to instantly notify a merchant’s system about critical events such as: Payment success or failure; Refund completion; Chargeback or dispute notification; Status change (e.g., pending - success). Instead of requiring the merchant to constantly poll for updates, webhooks push event data securely and immediately to a pre-defined URL on the merchant’s server.

Authorization#

Each webhook is secured with a dedicated request header.
Authorization: Bearer <your-api-token>
You can contact your integration manager to issue the API key. Your webhook handler must verify the exact value of this header against the locally stored secret (kept in environment variables or a secure storage) and reject requests if it does not match. The key is only transmitted in the header (not in the URL or body), it is case-sensitive, and can be rotated without downtime.
It is recommended to complement the key check with additional measures: IP/ASN allowlisting, strict timeouts, logging all invalid attempts, and returning 401 Unauthorized without extra details. Upon a valid check, respond with 200 OK and handle the event asynchronously so webhook delivery is not blocked.

Structure#

Webhooks are used to notify merchants about transaction updates in real-time. When a transaction status changes, a webhook event is triggered and sent to the merchant's configured endpoint.
Each payment webhook event contains the following structure:

{

  "name": "transaction.<status>",
  "merchantId": "123456",
  "data": {
    "id": "txn_abcdef123456",
    "amount": 1000,
    "balance": 9000,
    "currency": "USD",
    "status": "charged",
    "type": "payment",
    "last4": "6789",
    "paymentMethod": "card",
    "payerIp": "192.168.1.1",
    "merchantReference": "INV-1001",
    "description": "Order payment",
    "createdAt": "2024-04-01T12:00:00Z",
    "updatedAt": "2024-04-01T12:05:00Z",
    "authedAt": "2024-04-01T12:02:00Z",
    "confirmedAt": "2024-04-01T12:03:00Z",
    "processedAt": "2024-04-01T12:04:00Z",
    "processedAmount": 1000,
    "storeId": "store_1234",
    "terminalId": "term_5678",
    "secure3d": true,
    "parentTransactionId": "txn_parent1234",
    "recurringType": "subscription",
    "retrievalReferenceNumber": "RRN987654321",
    "paymentLinkId": {
      "Value": "pl_019a2a21f46f706ea202a75adabcbb80"
    },
    "paymentSessionId": {
      "Value": "019a2a22-1b0d-7732-9672-134baf97b06c"
    },,
    "cardTokenId": {
      "Value": "4400437244977189"
    },
    "customerId": {
      "Value": "01989f41-a6eb-77d4-a666-9361fb25bec6"
    },
  }
}
Merchants should implement webhook listeners to handle these events and update their system accordingly. It is recommended to:
Log incoming events for debugging.
Process event data and update the order status.
Respond with a 200 OK to acknowledge receipt of the webhook.

Transaction Statuses#

Transaction Created
transaction.created — A new transaction has been created and is pending authorization.
Payment Successful
🟢 transaction.authorized — The payment has been successfully authorized — funds on the customer’s card are reserved (blocked) and waiting for capture. You can consider this transaction successful: the bank confirmed the availability of funds, and the payment will be captured automatically or manually from the dashboard.
Payment Failed
transaction.rejected — The transaction was rejected by the bank (for example, insufficient funds or incorrect card data).
transaction.failed — The transaction failed due to a system or network error. You may retry the payment or contact support if this persists.
Finalized Statuses
transaction.charged — The transaction has been successfully charged — funds have been finally debited from the customer’s account.
Use this status if you are integrated via manual clearing flow and handle captures yourself.
transaction.cancelled — The transaction was successfully cancelled before capture.
This notification confirms that the authorization hold has been released and the customer’s funds are no longer reserved.
transaction.refunded — The transaction was successfully refunded.
This notification indicates that a refund transaction was created.

Webhook Payload Structure#

This webhook is sent to the Merchant’s configured webhook URL when a transaction is created and/or when its state changes.

Event Metadata#

FieldTypeRequiredDescriptionExample
namestringYesWebhook event name in the format transaction.<status>. The <status> part indicates the transaction state at the moment the webhook was emitted.transaction.charged
merchantIdstringYesUnique identifier of the merchant account in Plexy.35f3569c-a328-4b41-ba04-e0cfb0ca4d5d
dataobjectYesTransaction payload.{ ... }

Transaction Details#

FieldTypeDescriptionExample
idstringUnique transaction identifier generated by Plexy.f0394412-2fe8-4467-a4a8-cfd41a68dc7e
amountnumberTransaction amount in the smallest currency unit (e.g., cents) or in the API’s standard numeric representation for the given currency (depends on your integration setup).1000
balancenumberMerchant balance after applying this transaction (if provided by the system for this event).9000
currencystringISO 4217 currency code of the transaction.USD
typestringTransaction operation type (e.g., payment, refund, reversal), depending on the product flow.payment
last4stringLast 4 digits of the payment card (if the payment method is a card).6789
paymentMethodstringPayment method used for the transaction (e.g., card).card
payerIpstringIP address of the payer/customer at the time of initiating the payment (if captured).192.168.1.1
merchantReferencestringMerchant’s own internal reference for the transaction (the same as orderRefernce).INV-1001
descriptionstringFree-text description provided by the merchant for reconciliation or UI display.Order payment
createdAtstringTimestamp when the transaction was created (ISO 8601, UTC).2024-04-01T12:00:00Z
updatedAtstringTimestamp when the transaction was last updated (ISO 8601, UTC).2024-04-01T12:05:00Z
authedAtstringTimestamp when the transaction was authorized (ISO 8601, UTC), if authorization step exists in the flow.2024-04-01T12:02:00Z
confirmedAtstringTimestamp when the transaction was confirmed (ISO 8601, UTC), if confirmation step exists in the flow.2024-04-01T12:03:00Z
processedAtstringTimestamp when the transaction was processed/settled by the platform (ISO 8601, UTC), if applicable.2024-04-01T12:04:00Z
processedAmountnumberFinal processed amount. May differ from amount due to partial processing, rounding, fees, or adjustments depending on the product flow.1000
storeIdstringIdentifier of the store (sub-entity under a merchant) associated with this transaction.f08b3695-a632-4594-b89d-f40730420557
terminalIdstringIdentifier of the terminal/channel where the payment was initiated.5f2a1c13-99d8-4eb1-873a-563b1304e0a9
secure3dbooleanIndicates whether 3-D Secure was used/required for this card transaction (when applicable).true
parentTransactionIdstringIdentifier of the parent transaction, used when this transaction is derived from another one (e.g., follow-up action, recurring, refund chain).97870f4f-edc7-4f7e-830f-52c371bf6c32
recurringTypestringRecurring payment classification (e.g., subscription/unscheduled) if the transaction is part of a recurring/merchant-initiated payment flow.subscription
retrievalReferenceNumberstringAcquirer reference (RRN) used for reconciliation with the bank/acquirer, if available.RRN987654321
paymentLinkIdobjectPayment Link identifier associated with the transaction (present when payment was initiated via Pay-by-Link). Wrapper object contains Value.{ "Value": "pl_..." }
paymentSessionIdobjectPayment Session identifier associated with the transaction (present for session-based flows). Wrapper object contains Value.{ "Value": "019a2a22-..." }
cardTokenIdobjectSaved card token identifier used for tokenized/recurring flows. Wrapper object contains Value.{ "Value": "4400437244977189" }
customerIdobjectCustomer identifier in Plexy (if your integration creates/uses customers). Wrapper object contains Value.{ "Value": "01989f41-..." }
Modified at 2026-02-13 07:49:51
Previous
Authorization
Next
API Errors
Built with