API Version: v1.0
Developer API

Payments API Requests

POST https://api.cruisepay.finance/api/v1/payment

Overview


The S2S Payments API allows a payment to be submitted through a single server-to-server POST request. The API returns the transaction result synchronously or provides a 3dsurl when additional customer authentication is required.

  • Integration model: Your server collects the customer and payment information and submits it directly to the payment gateway. When using CARD, raw card data passes through your server, so the integration falls within the applicable PCI DSS scope.
  • Supported payment methods: CARD, GOOGLEPAY, APPLEPAY.
  • Minimum transaction amount: 10.00 in the transaction currency.
  • Results: The transaction result is returned in the API response and is also sent asynchronously to the configured statusUrl webhook.

Authentication - Generating an API Key


  1. 1. Account Creation & Password Generation:
    • After successful onboarding, the client receives a 'Business Account Setup' email containing the information required to establish access to the business domain.
    • Open the email, follow the activation link, and create a secure password to activate the account.
    • After the password is successfully created, the account is activated. Visit the business domain and sign in using the registered email address and newly created password. After successful authentication, the Dashboard opens and provides access to the available features and services.
  2. 2. Open the Integration Module:
    • From the left sidebar, navigate to Integration → API Credentials.
    • The API Credentials page displays the business in the credentials table, where the required integration credentials can be generated.
  3. 3. Generate Payment API Credentials (Applies to S2S)
    • Under the Payment API section, click Generate to begin creating the payment API credentials.
    • A confirmation dialog appears asking you to confirm the generation of new API credentials.
  4. 4. Confirm Generated Payment API Credentials
    • Click Generate API Key to confirm. The system processes the request and creates the credentials.
    • A success message confirms that the payment API credentials have been generated successfully.
    • The merchant can download or copy the generated credentials for integration. The newly created credentials are then available for use.
  5. 5. Generate Hosted Public Identifier Key (Applies to Hosted Checkout)
    • In the Hosted Page section, click Generate and confirm the action in the confirmation dialog.
    • A success notification confirms that the Hosted Checkout credentials have been generated successfully.
    • The merchant can download or copy the generated credentials for integration. The credentials are now ready to be used with the Hosted Checkout flow.
  6. 6. Credential History — Integration Ready
    • Previously generated credentials can be reviewed together with the following information:
      • Status
      • Generated Date
      • Last Updated Date
      • Available Actions
    • The generated credentials are ready to integrate the CruisePay Payment API or Hosted Checkout into your application.
0:00 / 0:00
Important Security Information
  • API keys are displayed only once after generation and cannot be viewed again.
  • We do not store your API Secret Key. Save it securely before leaving this page.
  • Treat your API keys like passwords. Do not share them or expose them in client-side code.
  • Regenerating an API key immediately revokes the existing key.
  • All integrations using the revoked key will stop working until updated with the new key.
  • Update all applications and services with the newly generated key after regeneration.
  • Generate or regenerate API keys only when necessary to avoid service interruptions.
  • If you suspect a key has been compromised, regenerate it immediately and update all integrations.

Request Parameters


Include all required fields in the request body when creating a payment transaction, ensuring that each field follows the specified data format and structure.

Request Fields (All Payment Methods)

paymentMethod string required

Customer’s payment method.
CARD or GOOGLEPAY or APPLEPAY (Only as given)

Example: CARD
firstName string optional

Customer's First Name.
A Maximum of 50 Characters allowed

Example: Sherlock
lastName string optional

Customer's Last Name.
A Maximum of 50 Characters allowed

Example: Holmes
amount number required

Amount of the transaction.
The format depends on the currency exponent.

Example: 100.5
invoiceNumber string required

Transasction ID assigned by Merchant.
Minimum length of 7 characters.

Example: ABC123
email email required

Customer's email

currency string required

Payment Currency
3 Letter Currency Code

Example: USD
phone string optional

Customer's Phone Number
Min 7 digits - Max 18 digits - No need to enter country code.

Example: 6549873215
address string optional

Customer's Address
Min 3 & Max 45 characters

Example: 221 B, Baker Street
city string optional

Customer's City
Min 3 & Max 45 characters

Example: London
state string optional

Customer's State
Min 2 & Max 45 characters

Example: State
zip string optional

Customer's Zip Code
Only Alpha Numeric values allowed

Example: NW16XE
country string required

Customer's Country Code
2-letter country code

Example: UK
ip string optional

IP address (IPv4 or IPv6)

Example: 192.168.1.1
returnUrl string Optional

URL to redirect Customer after processing

Example: Https://abcwebsite.com
statusUrl string Optional

API endpoint to receive the payment status
To know either Success or Failure

Example: Https://abcwebsite.com/returnurl

Card Fields (CARD Only)

cardNumber string required

Card primary account number (PAN).
All non-numeric characters will be ignored.
Minimum length of 14 to 19 characters.

Example: 4000000000000002
expMonth string required

Card Expiry Month - 2 Digits only

Example: 08
expYear string required

Card Expiry Year - last 2 Digits of the year value only

Example: 29
cvv string required

CVV Code - 3 Digits or 4 (for AMEX)

Example: 123

Sample Request


Each payment method has its own request body. Card requests carry the four card fields; Google Pay and Apple Pay requests leave them out.

1. Card — CARD

Card Request Payload (JSON)
{
  "paymentMethod": "CARD",
  "firstName": "John",
  "lastName": "Doe",
  "amount": "10.00",
  "invoiceNumber": "1234567",
  "cardNumber": "4000000000000002",
  "expMonth": "12",
  "expYear": "2028",
  "cvv": "123",
  "email": "[email protected]",
  "currency": "USD",
  "phone": "9089090989",
  "city": "Miami",
  "state": "Florida",
  "address": "New Street",
  "country": "US",
  "zip": "234567",
  "ip": "127.0.0.1",
  "returnUrl": "https://your-site.com/return",
  "statusUrl": "https://your-site.com/webhook"
}

2. Google Pay — GOOGLEPAY

Google Pay Request Payload (JSON)
{
  "paymentMethod": "GOOGLEPAY",
  "firstName": "John",
  "lastName": "Doe",
  "amount": "10.00",
  "invoiceNumber": "1234567",
  "email": "[email protected]",
  "currency": "USD",
  "phone": "9089090989",
  "city": "Miami",
  "state": "Florida",
  "address": "New Street",
  "country": "US",
  "zip": "234567",
  "ip": "127.0.0.1",
  "returnUrl": "https://your-site.com/return",
  "statusUrl": "https://your-site.com/webhook"
}

3. Apple Pay — APPLEPAY

Apple Pay Request Payload (JSON)
{
  "paymentMethod": "APPLEPAY",
  "firstName": "John",
  "lastName": "Doe",
  "amount": "10.00",
  "invoiceNumber": "1234567",
  "email": "[email protected]",
  "currency": "USD",
  "phone": "9089090989",
  "city": "Miami",
  "state": "Florida",
  "address": "New Street",
  "country": "US",
  "zip": "234567",
  "ip": "127.0.0.1",
  "returnUrl": "https://your-site.com/return",
  "statusUrl": "https://your-site.com/webhook"
}

Sample Responses


Below are sample JSON responses returned by the payment API for different transaction outcomes.

1. 3DS Required

3DS Required Response (JSON)
{
  "status": 200,
  "timestamp": "2026-01-10T05:42:10Z",
  "result": {
    "action": "SALE",
    "state": "REDIRECT",
    "message": "3D Secure authentication required",
    "transaction": {
      "invoiceNumber": "INV-456789",
      "transactionId": "TXN-9988776655",
      "descriptor": "ONLINE STORE PAYMENT"
    },
    "business": "Demo Merchant",
    "channel": "Primary MID",
    "paymentFlow": "3DS",
    "amount": {
      "value": "62.00",
      "currency": "USD"
    },
    "paymentMethod": {
      "type": "CARD",
      "brand": "VISA"
    },
    "card": {
      "cardNumber": "400000******0002",
      "expMonth": "05",
      "expYear": "28",
      "issuerCountry": "US",
      "issuerBank": "Chase Bank",
      "cardBrand": "VISA"
    },
    "authentication": {
      "type": "3DS",
      "status": "REQUIRED"
    },
    "redirect": {
      "url": "https://secure-acs.example.com/3ds/authenticate",
      "method": "GET"
    }
  }
}

2. Success

Success Response (JSON)
{
  "status": 200,
  "timestamp": "2026-01-10T05:30:15Z",
  "result": {
    "action": "SALE",
    "state": "SUCCESS",
    "message": "Transaction completed successfully",
    "transaction": {
      "invoiceNumber": "INV-123456",
      "transactionId": "TXN-987654321",
      "descriptor": "MERCHANT DESCRIPTOR"
    },
    "transactionDate": "2026-01-10 10:59:00",
    "business": "Demo Merchant",
    "channel": "Primary MID",
    "paymentFlow": "3DS",
    "amount": {
      "value": "62.00",
      "currency": "USD"
    },
    "paymentMethod": {
      "type": "CARD",
      "brand": "VISA"
    },
    "card": {
      "cardNumber": "400000******0002",
      "expMonth": "05",
      "expYear": "28",
      "issuerCountry": "US",
      "issuerBank": "Chase Bank",
      "cardBrand": "VISA"
    }
  }
}

3. Declined

Declined Response (JSON)
{
  "status": 200,
  "timestamp": "2026-01-10T05:35:42Z",
  "result": {
    "action": "SALE",
    "state": "DECLINED",
    "message": "Transaction Declined",
    "transaction": {
      "invoiceNumber": "INV-789456",
      "transactionId": "TXN-1122334455"
    },
    "orderDate": "2026-01-10 11:02:18",
    "business": "Demo Merchant",
    "channel": "Primary MID",
    "paymentFlow": "3DS",
    "amount": {
      "value": "62.00",
      "currency": "USD"
    },
    "paymentMethod": {
      "type": "CARD",
      "brand": "VISA"
    },
    "card": {
      "cardNumber": "400000******0002",
      "expMonth": "05",
      "expYear": "28",
      "issuerCountry": "US",
      "issuerBank": "Chase Bank",
      "cardBrand": "VISA"
    },
    "decline": {
      "reason": "Insufficient funds"
    }
  }
}

4. Unauthorized

Unauthorized Response (JSON)
{
  "status": 401,
  "message": "Unauthorized access"
}