HSRCPAY Documentation

Welcome to the documentation

Introduction to HSRC Pay docs: payment orchestration, sandbox, checkout, routing, and the path to production.

Start here

HSRC Pay is not a payment button; it is an orchestration layer that models, tests, and runs payment behavior. This documentation is designed to help you understand payment lifecycle, provider adapters, sandbox network, routing, and event/webhook discipline in a single product language.

What does HSRC Pay provide?

HSRC Pay does not fit the classic payment gateway narrative. It brings together the merchant payment intent, payment method data, provider selection, provider execution results, charge attempts, webhook/event delivery, and operational visibility under one lifecycle.

The goal is to make provider complexity manageable for merchants through a single API, a single state model, and a single event discipline.

Where should you start?

Position the product

Read HSRC Pay Overview to understand why the platform is an orchestration layer that reduces provider dependency, not just a gateway.

Learn the payment lifecycle

On Payment Lifecycle and Confirm, clarify the difference between creating a payment and starting provider execution.

Choose an integration model

For hosted checkout, follow the Checkout Session Guide. For API-only, start from Payment Flows.

Rehearse in sandbox

Use Sandbox Network, Sandbox Cards, 3DS Simulation, and Testing Declines to test behaviors beyond success as well.

Complete production readiness checks

Validate webhook, idempotency, trace, credential separation, and operational controls with Integration Readiness.

Persona-based routes

ProfileFirst readNext stepWatch out for
Developer integrating for the first timeHSRC Pay OverviewPayment Lifecycle and ConfirmCreating a payment is not the same as starting collection
Merchant using hosted checkoutCheckout Session GuideWebhook DeliveryRedirect result alone is not final payment proof
Team doing API-only integrationPayment FlowsData Modelsrequires_action and decline outcomes must be handled
Team reviewing provider/routing architectureProvider and Adapter ModelRouting SimulationProvider behavior should be read through adapter and confirm orchestrator language
QA/engineering doing sandbox testingSandbox NetworkTesting DeclinesTesting with only a success card is not enough

Core concepts

ConceptShort meaning
PaymentMerchant payment intent or business record
ChargeAuthorization or financial attempt at provider/rail level
ConfirmControlled step that moves a payment into provider execution
Payment MethodHow the user pays: card, wallet, bank transfer, or local method
Provider adapterProvider-specific pay / capture / refund / 3DS resume implementation
Confirm orchestratorTries routing candidates; produces confirmResult and lifecycle status
routing_strategyConfirm API field (narrows via config or provider identifier)
Normalized ResultAdapter kind (success, requires_action, declined, error) mapped to Payment status
Sandbox NetworkTest network that rehearses payment behavior without real money movement

Before going to production

  • Clarify the Payment and Charge distinction within your team.
  • Verify checkout redirect results with webhook or server-side query.
  • Test requires_action, timeout, hard decline, and soft decline scenarios.
  • Separate sandbox credentials from production credentials.
  • Mask card data, provider secrets, signature material, and raw provider payload logs.
  • Design your webhook handler to be idempotent.
  • Confirm you can trace payment attempts with trace/request id.

Security boundary

The sandbox environment does not create real money movement. Do not move production cards, production credentials, or real customer data into sandbox test payloads.