Plexy
Pay API
Gate APISDKDashboard
Pay API
Gate APISDKDashboard
  1. Wallet
  • Overview
  • Authorization
  • Webhooks
  • API Errors
  • Test Scenarios
  • Ecommerce Plugins
  • API
    • Payments
      • Overview
      • Transaction Errors
      • 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
    • 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
    • Invoice
      • List Bank Invoices
      • Create Bank Invoice
      • Get Bank Invoice
    • Distributions
      • Create distribution
      • List distributions
      • Get distribution by ID
      • Get distributions balance
  • Client SDK
    • SDK Overview
    • Wallet
      • Apple Pay
      • Google Pay
    • Android
      • Android Components
      • Android SDK
      • Android Drop-in
      • Android Customization
    • React Native
      • React Native SDK
    • Flutter
      • Flutter SDK
    • iOS
      • iOS Components
      • iOS Drop-in
      • iOS Customization
      • iOS SDK
    • Server Integration
      • Overview
      • Sessions Flow
      • Advanced Flow
      • Authentication
      • Result Codes and Errors
      • Payment Methods and Checkout Settings
      • Test and Live Payments
      • API Reference
      • Payment Methods
        • Get a list of available payment methods
      • Payments
        • Start a transaction
        • Submit details for a payment
      • Sessions
        • Create a payment session
        • Get the result of a payment session
    • Web
      • Web SDK
      • Web Customization
      • Web Drop-in
      • Web Components
  • 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
      • git_plexypay_com_ecom_back_api_internal_domain_view.Page-domain_Report
      • git_plexypay_com_ecom_back_api_internal_domain_view.Page-entity_UserProfile
      • 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.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
    • response.BankInvoice
    • DistributionStatus
    • LivenessResponse
    • DecimalAmount
    • errors.Source
    • Currency
    • AmountDto
    • ProductType
    • errors.Message
    • DistributionRecipient
    • PaymentMethodsRequestDto
    • ProductCategory
    • request.CreateBankInvoice
    • DistributionCreateRequest
    • PaymentMethodDto
    • Product
    • git_plexypay_com_ecom_back_api_internal_platform_errors.Code
    • DistributionBase
    • StoredPaymentMethodDto
    • response.Error
    • Order
    • DistributionCreatedResponse
    • PaymentMethodsResponseDto
    • AgentBalance
    • response.BankInvoiceList
    • DistributionDetailResponse
    • CreatePaymentDto
    • AgentDeposit
    • errors.Type
    • DistributionListItem
    • AdditionalDataDto
    • TopupRequest
    • DistributionListResponse
    • ActionDto
    • CreateOrderRequest
    • DistributionBalanceResponse
    • CreatePaymentResponseDto
    • PaymentDetailsDto
    • PaymentDetailsRequestDto
    • PaymentActionDto
    • FraudResultDto
    • ResponsePaymentMethodDto
    • PaymentDetailsResponseDto
    • ApplePayMerchantValidationRequestDto
    • ApplePayMerchantSessionResponseDto
    • ApplePaySessionRequestDto
    • ApplePaySessionResponseDto
    • GooglePayDecodeRequestDto
    • GooglePayPaymentMethodDetails
    • GooglePayDecryptedData
    • GooglePayDecodeSuccessResponseDto
    • RiskDataDto
    • GooglePayPaymentMethodDto
    • BrowserInfoDto
    • GooglePayPaymentRequestDto
    • EncryptedCardDataDto
    • GooglePayPaymentResponseDto
    • GooglePayPaymentErrorResponseDto
    • LineItemDto
    • AddressDto
    • CreateCheckoutSessionRequestDto
    • CreateCheckoutSessionResponseDto
    • PaymentDto
    • SessionResultResponseDto
    • EncryptedSessionDataDto
    • DecryptPaymentRequestDto
    • DecryptPaymentResponseDto
    • ThreeDSDetailsDto
    • SessionPaymentDetailsRequestDto
    • SessionPaymentDetailsResponseDto
    • CardDetailsRequestDto
    • CardBrandDetailsDto
    • CardDetailsResponseDto
    • PublicKeyResponseDto
  1. Wallet

Apple Pay

Apple Pay lets your shoppers pay with the cards stored in their Apple Wallet, using Face ID, Touch ID, or a passcode to authorise. Enabling Apple Pay with Plexy is a one-time setup in your dashboard at Settings → Integrations, plus per-platform steps below.

Web setup#

For Apple Pay on the web you only need to validate the domain you serve checkout from. Plexy holds the merchant identity certificate, so no certificate upload happens on the web side.
Hosted Checkout
If you use Plexy Hosted Checkout through Payment Links, Apple Pay works out of the box. The domain verification steps below are required only when Apple Pay is displayed directly on your website through the Plexy Web SDK.

Before you start#

RequirementDescription
Plexy accountYou need access to Plexy Dashboard.
Website domainExample: shop.example.com.
Plexy Web SDK integrationPayment components must be integrated on your website.
Integration manager contactYour Plexy technical integration manager must receive your domain list.
1
Prepare the domain list
List every domain where Plexy Web SDK payment components can be displayed, for example shop.example.com, checkout.example.com, and example.com.
2
Send domains to Plexy
Send the full domain list to your Plexy technical integration manager. Plexy must register the merchant domains before you complete domain verification in the dashboard.
3
Download the domain association file
After Plexy confirms the domains are registered, open Web Integration → Apple Pay Domain Verification in the Plexy dashboard and click Download verification file. This downloads apple-developer-merchantid-domain-association (no file extension).
4
Host the file on your domain
Serve the file at:
https://<your-domain>/.well-known/apple-developer-merchantid-domain-association
The file must be reachable over HTTPS, without redirects, and without an added extension.
5
Check file availability
Open the file URL in a browser and confirm HTTP status 200. The file must not be blocked by firewall, CDN, WAF, or authentication, and your server must not modify its content.
6
Verify and register the domain
Back in the Plexy dashboard, type the same domain into the Domain verification input and click Verify. On success, click Register. The domain now appears under Registered domains.
7
Configure the Web SDK merchant name
Configure Apple Pay in your Web SDK payment-method configuration with the merchant name from Plexy Dashboard Settings → Merchant Settings → merchantName.
Warning
Each domain that serves your Apple Pay checkout must be registered. Subdomains
count separately — register www.example.com and checkout.example.com if
both serve checkout.
Do not skip Plexy registration
Domain verification in the Plexy dashboard should be done only after Plexy confirms that the domain has been registered on its side. If Apple Pay is shown on a domain that was not registered and verified, Apple Pay may not appear or may fail during payment.
Once the domain is registered, the Plexy Web SDK renders the Apple Pay button automatically.
After domain verification and Web SDK configuration, check that:
the Apple Pay button is displayed on the verified domain;
the Apple Pay sheet opens;
the merchant name is displayed correctly;
the payment token is created successfully;
the payment is processed by Plexy.
Availability
Apple Pay is available only in supported browsers, devices, regions, and cards.
Web SDK
Mount Drop-in or individual components to render Apple Pay on the web.

Native setup (iOS)#

Prerequisites#

An Apple Developer Program membership.
Access to the Plexy dashboard's Settings → Integrations page (requires a store).
For native iOS apps you'll generate a Certificate Signing Request (CSR) in the Plexy dashboard, sign it with Apple, then upload the resulting .cer back to Plexy. This binds your Apple Merchant ID to Plexy so the SDK can decrypt payment tokens.
CSR ownership
Do not generate your own private key or CSR for this integration. Plexy generates and stores the private key because Plexy decrypts Apple Pay payment tokens.

Key concepts#

TermMeaning
CSRCertificate Signing Request generated by Plexy and uploaded by the merchant to Apple.
Private keySecret key generated and stored by Plexy. It is not shared with the merchant.
Payment Processing CertificateCertificate issued by Apple for the merchant's Apple Merchant ID.
Apple Merchant IDApple identifier used by the merchant app to accept Apple Pay payments.
Info
The CSR does not contain the private key. It contains the public key and certificate request data. Apple uses the Payment Processing Certificate to encrypt Apple Pay payment data; Plexy uses the corresponding private key to decrypt the payment token.
1
Create a Merchant ID in Apple Developer
In Apple Developer →
Identifiers
,
create a new Merchant ID (for example, merchant.com.yourbrand.app).
2
Generate a CSR in the Plexy dashboard
In Settings → Integrations → Apple Pay certificates, enter a label, then
click Generate CSR. The dashboard downloads a .csr file and adds a new
certificate row in pending status.
3
Create the Payment Processing Certificate in Apple Developer
On your Merchant ID's page in Apple Developer, click Create Certificate
under Apple Pay Payment Processing Certificate, upload the .csr, then
download the signed .cer Apple returns.
4
Upload the signed certificate to Plexy
Back in the Plexy dashboard, on the pending certificate row, click Upload
certificate
and select the .cer. The row moves to active once Plexy
verifies it. Plexy validates that the certificate matches the private key generated by Plexy, is a Payment Processing Certificate, is valid and not expired, and belongs to the expected Apple Merchant ID.
5
Enable Apple Pay in Xcode
In Xcode, open your target's Signing & Capabilities, add the Apple
Pay
capability, and select the same Merchant ID. The Plexy iOS SDK reads
the Merchant ID from your app and uses the certificate Plexy now holds to
decrypt payment tokens.

What to upload#

FileUpload to Apple?Upload to Plexy?
.csr from PlexyYesNo
.cer from AppleNoYes
Private keyNoNo
.p12 / .pfxNoNo
Merchant Identity CertificateNoNo
Wrong file types
For this setup, upload only the Apple-issued .cer Payment Processing Certificate to Plexy. Do not upload Apple Merchant Identity Certificates, Apple Development or Distribution Certificates, APNs Certificates, TLS/SSL certificates, private keys, .p12, or .pfx files.
Your iOS app must use the same Merchant ID that was used to create the Payment Processing Certificate:
Info
Apple Pay is not available on Android. For Android, see Google
Pay.
iOS SDK
Render Apple Pay in your iOS app with Drop-in or Components.
React Native SDK
Apple Pay on iOS via the Plexy React Native wrapper.
Flutter SDK
Apple Pay on iOS via the Plexy Flutter wrapper.

Troubleshooting#

Warning
Domain verification fails with 404. The file must be served at the exact
.well-known/apple-developer-merchantid-domain-association path, over HTTPS,
without a redirect and without an added extension.
Warning
Certificate stuck in pending. The uploaded .cer must be signed against
the CSR Plexy generated. If the row never moves to active, generate a fresh
CSR in Plexy and re-issue the certificate in Apple Developer.
Warning
iOS app does not present the Apple Pay sheet. Confirm the Apple Pay
capability is enabled in Xcode and the selected Merchant ID matches the one
tied to your active certificate in Plexy.
ErrorCauseHow to fix
Plexy cannot validate certificateWrong certificate uploadedUpload the Payment Processing Certificate issued from the Plexy-generated CSR
Plexy cannot decrypt tokenCSR was not generated by PlexyGenerate a new CSR in Plexy and create a new certificate in Apple
Apple Pay token rejectedToken was modifiedSend the original token without changes
Merchant ID mismatchApp uses another Merchant IDUse the same Merchant ID in Apple Developer Portal, the iOS app, and Plexy Dashboard
Wrong certificate typeMerchant Identity Certificate uploadedUpload the Payment Processing Certificate
Apple Pay fails in Web SDKDomain was not registered by PlexySend the domain to your Plexy integration manager
Merchant name is missingmerchantName is not configuredAdd merchantName to the Web SDK payment component config
Wrong merchant name is displayedIncorrect merchantName valueUpdate merchantName in the Web SDK config
Modified at 2026-07-07 10:25:45
Previous
SDK Overview
Next
Google Pay
Built with