Overview
Payaza supports Apple Pay and Google Pay as collection channels. You initiate the payment from your server using the mobile payment API which generates a payment URL for the customer to access, and the customer authorizes the charge through their device’s native wallet experience.Apple Pay works on Safari (iOS and macOS). Google Pay works on Chrome and
Android browsers. Always provide a fallback payment method for customers who
do not have a supported wallet configured on their device.
Key Requirements
Use your public API key encoded in Base64 for all wallet payment requests.
See the Authentication guide for setup instructions.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /merchant-collection/mobile_payment/initiate | Initiate an Apple Pay or Google Pay payment |
GET | /merchant-collection/transfer_notification_controller/transaction-query | Query transaction status by transaction_reference |
How it works
Initiate the payment
Your server calls the Initiate endpoint with the customer details, amount,
and
payment_option set to "APPLEPAY" or "GOOGLEPAY" which generates a
payment URL.Customer authorizes
The customer views the payment URL and sees the native Apple Pay or Google
Pay checkout modal on their device and authenticates with Face ID, Touch ID,
or their device PIN.
Step 1 — Initiate the payment
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
transaction_reference | string | Yes | Your unique reference for this payment. Must be unique per transaction |
payment_option | string | Yes | Wallet type — "APPLEPAY" or "GOOGLEPAY" |
amount | number | Yes | Amount to collect from the customer |
currency_code | string | Yes | ISO currency code — e.g. "USD", "NGN" |
country_code | string | Yes | ISO currency code for the transaction country — e.g. "NGN" |
description | string | Yes | Description shown on the customer’s payment confirmation |
first_name | string | Yes | Customer’s first name |
last_name | string | Yes | Customer’s last name |
redirect_url | string | Yes | URL to redirect the customer to after successful payment |
cancel_url | string | Yes | URL to redirect the customer to if they cancel |
error_url | string | Yes | URL to redirect the customer to on payment error |
Sample response
Step 2 — Query transaction status
Use this endpoint to confirm the final outcome of a payment. Call it after initiating, or as a fallback if a webhook is not received within your expected timeout.cURL
Errors
| Error | Cause | Fix |
|---|---|---|
"Kindly check the provided Authorization" | Invalid or missing API key | Re-encode your key and use the Payaza <key> format |
"Transaction Reference already exists" | Reused transaction_reference | Generate a unique reference per payment attempt |
"Payment option can be either GOOGLEPAY or APPLEPAY" | Invalid payment_option value | Pass exactly "GOOGLEPAY" or "APPLEPAY" |
"Payment option is currently not available via this channel" | Unsupported currency code | Use a supported currency for wallet payments |
"Transaction not found" | transaction_reference does not exist | Verify the reference and retry |
What’s next
Card Collections
Accept card payments directly via the API.
Webhooks
Receive real-time payment notifications from Payaza.