1. Alternative Payment Methods
Sipay API Documentation - ZA
  • Overview
    • Getting Started
    • Test Cards
  • Authentication
    • Token Generation
      POST
  • Commission
    • Commission
      POST
  • HASH
    • Hash Creation
    • Hash Validation
  • Non-Secure Payment
    • Non-Secure Payment Flow
    • Non-Secure Card Payment
      POST
    • Non-Secure Pre-Authorization Payment
      POST
    • Confirm Payment
      POST
  • 3D Secure Payment
    • 3D Secure Payment Flow
    • 3D Secure Card Payment
      POST
    • 3D Secure Pre-Authorization Payment
      POST
    • Complete Payment
      POST
    • Confirm Payment
      POST
  • Non-Secure and 3D Payment with Sipay
    • Non-Secure and 3D Secure Payment with Sipay
  • Check Status
    • Check Status
  • Refund
    • Refund
  • Webhook
    • Webhook
  • Status Codes
    • Status Codes
  • Alternative Payment Methods
    • Overview
    • Payment Flow
    • Base URL & Environments
    • Hash Key
    • Client-side SDK handling
    • Status Codes
    • End-to-end example
    • GPay Payment Example
    • Authentication
      POST
    • walletCheckout
      POST
    • walletPay
      POST
  1. Alternative Payment Methods

walletPay

Testing
POST
/ccpayment/api/walletPay
Authorizes and captures the transient token produced by the wallet button, persists the sale, and returns the final result. The transient JWT already encodes the amount, currency and tokenized card, so the request body is intentionally minimal.
Do not send the wallet type — Sipay reads it back from wallet provider's authorize response (001 = Apple Pay, 012 = Google Pay) and tags the sale accordingly.
💡
Duplicate / concurrency guard. Before any wallet provider call, walletPay rejects a second attempt for an invoice_id that is already processed or in-flight (returns status_code: 3). This prevents a double-charge if the wallet button is submitted twice. Always use a fresh invoice_id per order.

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Body Params application/jsonRequired

Examples

Responses

🟢200Success
application/json
Field set and commission breakdown mirror paySmart2D. On success, reason-code fields are blank.
Bodyapplication/json

🟠41Error
⚪69Error
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://test01-app.sipay.co.za//ccpayment/api/walletPay' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "merchant_key": "$2y$10$....",
  "hash_key": "iv:salt:ciphertext__",
  "invoice_id": "ORDER-2026-0001",
  "wallet_transient_token": "eyJraWQiOiIwOC...",
  "name":"x",
  "surname":"y",
  "bill_email": "deneme@gmail.com"
}'
Response Response Example
200 - Success
{
  "status_code": 100,
  "status_description": "Payment process successful",
  "data": {
    "sipay_status": 1,
    "order_no": "AB12CD34EF",
    "order_id": "AB12CD34EF",
    "invoice_id": "ORDER-2026-0001",
    "sipay_payment_method": "CREDITCARD",
    "credit_card_no": "453985****2342",
    "transaction_type": "Auth",
    "payment_status": 1,
    "payment_method": "CREDITCARD",
    "error_code": 100,
    "error": "Success",
    "auth_code": "123456",
    "merchant_commission": 3.45,
    "user_commission": 0.00,
    "merchant_commission_percentage": 2.30,
    "merchant_commission_fixed": 0.25,
    "host_reference_id": "7012345678901234567",
    "payment_reason_code": "",
    "payment_reason_code_detail": ""
  }
}
Modified at 2026-06-02 14:26:59
Previous
walletCheckout
Built with