Skip to main content

Payment Gateway Guide

FluidGrids supports multiple payment methods to accommodate users worldwide. This guide explains each payment gateway, their features, and how to use them effectively.

Supported Payment Methods

BOFF Workspace supports three payment methods, each optimized for different use cases and regions.

Credits (Direct)

Use your existing credit balance for instant purchases.

Key Features:

  • Processing Time: Instant (immediate confirmation)
  • Transaction Fees: None
  • Best For: Users with existing credit balance
  • Currency: Credits only (1 credit = base currency equivalent)
  • Refunds: Via support ticket with review process
  • Security: Secure database transaction with audit trail
  • Availability: All regions

Advantages:

  • No processing delays
  • No transaction fees
  • Immediate access to purchases
  • Works regardless of geographic location

When to Use:

  • You have sufficient credit balance
  • Need immediate access to resources
  • Want to avoid payment processing delays
  • Making small or frequent purchases

Razorpay (India)

India's leading payment gateway with comprehensive local payment support.

Key Features:

  • Processing Time: 5-15 minutes average
  • Transaction Fees: Standard Razorpay fees apply (varies by payment method)
  • Best For: Indian customers and businesses
  • Currency: INR only (automatically selected for Indian accounts)
  • Payment Methods:
    • UPI (Google Pay, PhonePe, Paytm, BHIM)
    • Credit/Debit Cards (Visa, Mastercard, RuPay, Amex)
    • Net Banking (50+ banks)
    • Wallets (Paytm, Mobikwik, Freecharge, etc.)
  • 3D Secure: Yes (OTP verification for cards)
  • Refunds: Processed via Razorpay dashboard (3-7 business days)
  • Security: PCI DSS Level 1 compliant
  • Modal Interface: Popup payment form with Razorpay branding

Advantages:

  • Wide variety of local payment methods
  • Support for all major Indian banks
  • UPI for instant bank transfers
  • Familiar interface for Indian users
  • Competitive transaction fees for India

When to Use:

  • You're based in India
  • Prefer UPI or net banking
  • Want to use Indian credit/debit cards
  • Need local payment options

Fee Structure:

  • Credit/Debit Cards: ~2% + GST
  • Net Banking: ~₹10-15 per transaction + GST
  • UPI: 0% (free for customers, small fee for merchants)
  • Wallets: Varies by wallet provider

Stripe (International)

Global payment platform supporting customers worldwide.

Key Features:

  • Processing Time: 5-15 minutes average
  • Transaction Fees: Standard Stripe fees apply (varies by region and card type)
  • Best For: International customers and global businesses
  • Currencies: USD, EUR, GBP, INR, and 135+ more
  • Payment Methods:
    • Credit/Debit Cards (Visa, Mastercard, Amex, Discover, JCB, Diners Club)
    • Apple Pay
    • Google Pay
    • Link (Stripe's one-click payment)
  • 3D Secure: Yes (Strong Customer Authentication SCA compliant)
  • Refunds: Processed via Stripe dashboard (5-10 business days)
  • Security: PCI DSS Level 1 compliant, fraud detection included
  • Form Interface: Embedded payment elements with modern UI

Advantages:

  • Global currency support
  • Advanced fraud protection
  • Modern, secure payment form
  • Support for digital wallets
  • Industry-leading reliability
  • Automatic currency conversion

When to Use:

  • You're outside India
  • Need to pay in non-INR currency
  • Prefer international cards
  • Want Apple Pay or Google Pay
  • Making large or international purchases

Fee Structure:

  • Domestic Cards: ~2.9% + $0.30 per transaction
  • International Cards: ~3.9% + $0.30 per transaction
  • Currency Conversion: Additional 1% for conversion
  • Varies by country and card type

Payment Flow

For Razorpay

Follow these steps when using Razorpay for payment:

  1. Select Razorpay at Checkout

    • Choose Razorpay as your payment method
    • Currency is automatically locked to INR
  2. Review Order Summary

    • Verify items in your cart
    • Check total amount in INR
    • Review any applied discounts or credits
  3. Click "Complete Purchase"

    • Initiates payment process
    • Opens Razorpay payment modal
  4. Razorpay Modal Opens

    • Branded Razorpay interface appears
    • Shows merchant details and amount
    • Displays available payment methods
  5. Choose Payment Method

    • UPI: Select UPI app or enter VPA
    • Cards: Enter card details and OTP
    • Net Banking: Select bank and login
    • Wallets: Choose wallet and authenticate
  6. Complete Payment

    • Follow method-specific steps
    • Complete any required authentication (OTP, PIN, etc.)
    • Wait for confirmation
  7. Verification Callback

    • System receives payment confirmation from Razorpay
    • Validates payment signature
    • Checks transaction status
  8. Order Status Updates

    • Status changes from "Pending" to "Processing"
    • Then to "Completed" upon successful verification
    • You'll see real-time status updates
  9. Credits/Items Delivered

    • Credits added to your account immediately
    • Subscriptions activated instantly
    • Store items made available
    • Email confirmation sent

Troubleshooting Razorpay Payments:

  • Payment Stuck: Wait 15 minutes before retrying
  • UPI Timeout: Check bank app, payment may have succeeded
  • Card Decline: Verify OTP entry, check card limits
  • Modal Not Opening: Disable popup blockers

For Stripe

Follow these steps when using Stripe for payment:

  1. Select Stripe at Checkout

    • Choose Stripe as your payment method
    • Currency selection becomes available
  2. Choose Currency

    • Select from: USD, EUR, GBP, INR, or other supported currencies
    • System shows converted amount based on current exchange rates
    • Exchange rate displayed for transparency
  3. Enter Card Details in Embedded Form

    • Card Number: Enter 16-digit card number
    • Expiry Date: MM/YY format
    • CVC: 3 or 4-digit security code
    • Billing Postal Code: For additional verification
    • Form validates entries in real-time
  4. Click "Pay" Button

    • Submits payment information securely to Stripe
    • Initiates payment processing
  5. 3D Secure Authentication (if required)

    • Browser redirects to card issuer's authentication page
    • Enter OTP sent to phone
    • Or use bank's mobile app for authentication
    • Required for cards in EU and other regions with SCA
  6. Payment Processing

    • Stripe processes the transaction
    • Fraud detection systems analyze the payment
    • Typically completes within seconds
    • May take longer for international cards
  7. Webhook Notification

    • Stripe sends secure webhook to our servers
    • Contains payment confirmation and transaction details
    • System validates webhook signature
  8. Order Status Updates

    • Real-time status updates shown in UI
    • Progress from "Processing" to "Completed"
    • Automatic page updates via polling
  9. Credits/Items Delivered

    • Credits added to account immediately
    • Subscriptions activated
    • Store items provisioned
    • Email receipt and confirmation sent

Troubleshooting Stripe Payments:

  • Card Declined: Check card details, ensure sufficient funds
  • 3D Secure Failed: Contact your bank, ensure SMS/app access
  • Currency Issues: Verify correct currency selected
  • Form Errors: Check all fields are filled correctly

Hybrid Payment (Credits + Gateway)

Combine existing credits with gateway payment for flexible purchasing.

How Hybrid Payment Works

If you have partial credits:

  1. System Detects Credit Balance

    • Automatically checks your available credits
    • Calculates remaining amount needed
  2. Payment Split Calculation

    • Credits applied first (up to available balance)
    • Remaining amount calculated for gateway payment
    • Clear breakdown shown at checkout
  3. Example Scenario:

    Total Purchase: $100
    Available Credits: $30

    Payment Breakdown:
    - Credits Applied: $30
    - Pay via Gateway: $70
  4. Complete Payment

    • Credits deducted immediately
    • Gateway processes remaining amount
    • Both transactions must succeed
    • If gateway fails, credits are refunded automatically

Benefits of Hybrid Payment

  • Use Existing Credits: Don't let credits go unused
  • Reduce Payment Fees: Lower transaction fees on smaller gateway amount
  • Flexible Budgeting: Combine multiple payment sources
  • Instant Partial Payment: Credit portion applies instantly

When Hybrid Payment Applies

Hybrid payment is automatically offered when:

  • Your credit balance is greater than $0
  • Your credit balance is less than total purchase amount
  • You haven't opted out of using credits
  • Purchase supports credit payment

Transaction Status Polling

After completing payment, the system monitors transaction status to ensure delivery.

How Polling Works

  1. Initial Status: Transaction marked as "Processing"
  2. Polling Begins: System checks status every 3-5 seconds
  3. Gateway Query: Queries payment gateway for transaction status
  4. Status Updates: UI updates automatically without page refresh
  5. Completion Detection: Stops polling when final status received
  6. Timeout Handling: After 5 minutes, shows message but continues checking in background

What You See

  • Processing Indicator: Animated spinner with "Processing payment..." message
  • Status Messages:
    • "Verifying payment with gateway..."
    • "Confirming transaction..."
    • "Almost there..."
  • Progress Updates: Real-time status changes
  • Final Confirmation: Success message with order details or error notification

If Timeout Occurs

If polling times out (rare), don't panic:

  1. Wait 5-15 Minutes

    • Payment may still be processing
    • Gateway confirmations can be delayed
    • System continues checking in background
  2. Check Billing Dashboard

    • Go to Billing & Subscriptions
    • Check Recent Transactions
    • Look for your transaction ID
    • Status will update there once confirmed
  3. Don't Retry Payment Immediately

    • You might create duplicate charges
    • Wait for first payment to complete or fail
    • Check email for payment confirmation
  4. Contact Support if Not Resolved After 30 Minutes

    • Provide Transaction ID
    • Include screenshot of payment confirmation
    • Support can manually verify status
    • Typical resolution time: 1-2 hours

Transaction Status Meanings

  • Pending: Payment initiated, awaiting confirmation
  • Processing: Gateway processing the payment
  • Verifying: System confirming with gateway
  • Completed: Payment successful, items delivered
  • Failed: Payment declined or error occurred
  • Timeout: Status check timed out (doesn't mean payment failed)

API Reference (for developers)

Integrate payment functionality into your applications using our GraphQL API.

Create Razorpay Order

Initiate a Razorpay payment order.

mutation CreateRazorpayOrder($input: createRazorpayOrderInput!) {
createRazorpayOrder(input: $input) {
orderID
amount
currency
key
transactionID
}
}

Parameters:

ParameterTypeRequiredDescription
billingAccountIdStringYesYour billing account ID
currencySelectedStringYes"INR" (only supported currency for Razorpay)
planIdStringOptionalPlan ID for subscription purchases
storeItemIdStringOptionalStore item ID for marketplace purchases
creditAmountFloatOptionalAmount of credits to purchase
addOnIds[String]OptionalArray of add-on IDs to purchase
recurrenceBooleanOptionaltrue for recurring subscription, false for one-time
includeCreditsBooleanOptionaltrue to use hybrid payment with existing credits

Response Fields:

  • orderID: Razorpay order identifier (use for payment modal)
  • amount: Total amount in smallest currency unit (paise for INR)
  • currency: "INR"
  • key: Razorpay public key for your account
  • transactionID: Internal transaction ID (use for status polling)

Example Request:

{
"input": {
"billingAccountId": "bill_abc123",
"currencySelected": "INR",
"planId": "plan_pro_monthly",
"recurrence": true,
"includeCredits": false
}
}

Example Response:

{
"data": {
"createRazorpayOrder": {
"orderID": "order_razorpay_xyz789",
"amount": 99900,
"currency": "INR",
"key": "rzp_live_1234567890",
"transactionID": "txn_internal_abc123"
}
}
}

Create Stripe Order

Initiate a Stripe payment intent.

mutation CreateStripeOrder($input: createStripeOrderInput!) {
createStripeOrder(input: $input) {
clientSecret
amount
key
transactionID
}
}

Parameters:

All parameters same as Razorpay with the following differences:

ParameterTypeRequiredDescription
currencySelectedStringYes"USD", "EUR", "GBP", "INR", or other supported currency

Response Fields:

  • clientSecret: Stripe client secret (use for payment element)
  • amount: Total amount in smallest currency unit (cents for USD)
  • key: Stripe publishable key
  • transactionID: Internal transaction ID (use for status polling)

Example Request:

{
"input": {
"billingAccountId": "bill_abc123",
"currencySelected": "USD",
"creditAmount": 100.00,
"includeCredits": true
}
}

Example Response:

{
"data": {
"createStripeOrder": {
"clientSecret": "pi_secret_xyz789",
"amount": 7000,
"key": "pk_live_1234567890",
"transactionID": "txn_internal_def456"
}
}
}

Check Transaction Status

Poll transaction status after payment completion.

query PollingStatus($transactionID: String!) {
pollingStatus(transactionID: $transactionID) {
status
message
}
}

Parameters:

ParameterTypeRequiredDescription
transactionIDStringYesTransaction ID from order creation

Response Fields:

  • status: Transaction status ("pending", "processing", "completed", "failed")
  • message: Human-readable status message

Example Request:

{
"transactionID": "txn_internal_abc123"
}

Example Response:

{
"data": {
"pollingStatus": {
"status": "completed",
"message": "Payment successful. Credits have been added to your account."
}
}
}

Polling Best Practices:

  • Poll every 3-5 seconds
  • Implement exponential backoff after 1 minute
  • Stop polling after receiving "completed" or "failed" status
  • Timeout after 5 minutes, but inform user to check later
  • Include error handling for network failures

Error Responses

All API calls may return errors. Common error codes:

{
"errors": [
{
"message": "Insufficient credits in billing account",
"extensions": {
"code": "INSUFFICIENT_CREDITS",
"availableCredits": 50.00,
"requiredCredits": 100.00
}
}
]
}

Common Error Codes:

  • INSUFFICIENT_CREDITS: Not enough credits for hybrid payment
  • INVALID_BILLING_ACCOUNT: Billing account not found or no access
  • INVALID_CURRENCY: Unsupported currency for selected gateway
  • PAYMENT_GATEWAY_ERROR: Gateway returned an error
  • DUPLICATE_TRANSACTION: Transaction already in progress
  • INVALID_PLAN: Plan not found or not available
  • INVALID_ADDON: Add-on not compatible with plan

Security Considerations

Data Protection

  • PCI Compliance: Never send card details to our servers; goes directly to gateway
  • Encryption: All payment data encrypted in transit (TLS 1.3)
  • Tokenization: Card details tokenized by payment gateway
  • No Storage: We never store complete card numbers or CVV

Fraud Prevention

  • Gateway Fraud Detection: Both Stripe and Razorpay include fraud analysis
  • 3D Secure: Required for supported cards to prevent unauthorized use
  • Velocity Checking: Multiple failed payments temporarily blocked
  • Risk Scoring: Suspicious transactions flagged for review

Best Practices

  1. Keep Credentials Secret: Never share API keys or client secrets
  2. Verify SSL: Always check for HTTPS in payment pages
  3. Monitor Transactions: Regularly review billing dashboard
  4. Report Suspicious Activity: Contact support immediately for unusual charges
  5. Use Strong Authentication: Enable 2FA on your account

Choosing the Right Payment Method

Decision Matrix

ScenarioRecommended MethodReason
Located in IndiaRazorpayLocal payment methods, lower fees
International userStripeMulti-currency support
Have credit balanceCredits (Direct)Instant, no fees
Large purchaseStripeBetter for high-value transactions
Recurring subscriptionEither gatewayBoth support auto-renewal
Need immediate accessCreditsInstant processing
Prefer UPIRazorpayBest UPI support
Using Apple PayStripeApple Pay supported

Next Steps

Now that you understand payment gateways:

  1. Set Up Payment Method: Add your preferred payment option in billing settings
  2. Make a Purchase: Try purchasing credits or a subscription
  3. Monitor Transactions: Check billing dashboard after purchase
  4. Save for Future: Payment methods can be saved for faster checkout
  5. Enable Auto-Reload: Set up automatic credit reload (coming soon)

Secure, flexible payment options ensure you can access FluidGrids features regardless of your location.