View FAQ →

Payments

Accepting Payments

TackQuote collects buyer payments through your own Stripe, Razorpay, or PayPal account — money goes directly to you, and TackQuote never touches your funds. This guide covers connecting each gateway and choosing how buyers pay.

Concept

How payments work

All payment gateways are configured under Settings → Payments in the seller portal. Each tenant connects its own gateway accounts, so buyer payments settle directly into your Stripe, Razorpay, or PayPal account. Credentials are encrypted with AES-256-GCM before storage — the encryption key lives server-side and is never persisted in the database.

  • Stripe — credit/debit card checkout, best for US and international card payments.
  • Razorpay — INR payments (UPI, cards, netbanking) for buyers in India.
  • PayPal — PayPal balance and card checkout via your PayPal Business account.
Payment gateways are separate from storefront checkout. If you connect a store under Integrations and enable Use for checkout, buyers can be routed to Shopify, WooCommerce, Magento, or BigCommerce instead. The buyer checkout mode decides which option wins when both are available.

Gateway

Connect Stripe (US / cards)

  1. Grab your Stripe API keys

    In the Stripe Dashboard → Developers → API keys, copy your Secret key (and optionally the Publishable key for client-side payment elements).

  2. Open Settings → Payments → Configure Stripe

    Paste your keys into the Stripe card. Only the secret key is required; it must start with sk_.

    FieldRequiredExample
    Secret KeyYessk_live_… / sk_test_…
    Publishable KeyOptionalpk_live_… / pk_test_…
    Webhook Signing SecretRecommendedwhsec_…
  3. Add the webhook endpoint

    In Stripe, add a webhook endpoint pointing at your TackQuote instance, then paste the signing secret back into the form:

    Stripe webhook endpoint
    https://app.yourdomain.com/v1/webhooks/stripe

    Subscribe to checkout.session.completed and payment_intent.succeeded. Without a webhook secret, payment confirmation may be delayed.

  4. Save

    Click Save Stripe Configuration. The status badge flips to Configured.

API reference

GET/v1/settings/payments
POST/v1/settings/payments/stripe
DELETE/v1/settings/payments/stripe

Gateway

Connect Razorpay (India)

Razorpay is the recommended gateway for INR checkout — it supports UPI, cards, and netbanking. When a quote is priced in INR, TackQuote automatically prefers Razorpay over other configured gateways.

  1. Generate Razorpay API keys

    From Razorpay Dashboard → Account & Settings → API Keys, generate a Key ID and Key Secret.

  2. Open Settings → Payments → Configure Razorpay

    FieldRequiredExample
    Key IDYesrzp_live_… / rzp_test_…
    Key SecretYes••••••••
    Webhook SecretRecommended••••••••
  3. Add the webhook

    Razorpay webhook endpoint
    https://app.yourdomain.com/v1/webhooks/razorpay

    Subscribe to the payment.captured event and paste the webhook secret into the form.

API reference

POST/v1/settings/payments/razorpay
DELETE/v1/settings/payments/razorpay

Gateway

Connect PayPal

  1. Create a PayPal REST app

    In the PayPal Developer Dashboard, create an app to obtain a Client ID and Client Secret.

  2. Open Settings → Payments → Configure PayPal

    FieldRequiredNotes
    Client IDYes
    Client SecretYes
    ModeYeslive or sandbox (defaults to live)
    Webhook IDRecommendedAsync capture events are rejected without it
  3. Add the webhook

    PayPal webhook endpoint
    https://app.yourdomain.com/v1/webhooks/paypal

    Create a webhook for PAYMENT.CAPTURE.COMPLETED and paste its Webhook ID into the form.

API reference

POST/v1/settings/payments/paypal
DELETE/v1/settings/payments/paypal

Configuration

Buyer checkout modes

When a buyer accepts a quote, TackQuote decides which payment path to surface. If you have both a storefront (enabled for checkout under Integrations) and an in-app gateway (Stripe/PayPal/Razorpay), the preferred checkout mode controls the primary call-to-action. Set it under Settings → Payments → Preferred buyer checkout.

ModeBehaviour
platformPrefer storefront checkout. The primary CTA sends buyers to your eCommerce platform; in-app gateways stay under "Other options". This is the default.
gatewayPrefer Stripe / PayPal / Razorpay. Skip the storefront for Accept & Pay and use in-app gateways only.
buyer_choosesShow storefront and gateway buttons as equal, primary options and let the buyer decide.
For INR quotes, TackQuote prefers Razorpay among the in-app gateways; for other currencies it prefers Stripe, then PayPal, then Razorpay. Any gateway you haven't configured is simply skipped.

API reference

POST/v1/settings/payments/preferred-checkout

Environments

Test vs live mode

GatewayHow mode is setTestLive
StripeImplied by key prefixsk_test_…sk_live_…
RazorpayImplied by key prefixrzp_test_…rzp_live_…
PayPalExplicit Mode fieldsandboxlive
Always validate a full checkout with test credentials before going live. Swap the keys (and, for PayPal, flip Mode to live) once you've confirmed a successful payment end-to-end.

Reference

Payment webhooks

Webhooks are how TackQuote confirms a payment and marks the quote as paid. Each provider posts to a dedicated endpoint; TackQuote verifies the signature against the secret you stored before acting on the event.

ProviderEndpointSignature headerKey events
StripePOST /v1/webhooks/stripestripe-signaturecheckout.session.completed, payment_intent.succeeded
RazorpayPOST /v1/webhooks/razorpayx-razorpay-signaturepayment.captured
PayPalPOST /v1/webhooks/paypalVerified via headers + Webhook IDPAYMENT.CAPTURE.COMPLETED
Webhook deliveries are idempotent and amount/currency-checked against the quote before it is marked paid, so retries are safe. If a delivery fails after being accepted, the provider will retry.