Quick Start
Use this guide to get a Sandbox integration working end to end. Most partners begin with Payments. If you are focused on submitting merchant applications, follow the Onboarding path and then continue in the Onboarding section.
Pick a path
Accept a payment (most partners start here)
Submit a merchant application (onboarding integrators)
Before you begin
Get Sandbox credentials for your team
Confirm your environment base URLs and identity realm
Choose an HTTP client (curl, Postman, or your SDK)
Payments path
1) Authenticate
Request an access token using OAuth 2.0 (OpenID Connect token endpoint).
Token URLs
Test / Non-prod
https://identity.beadpay.io/realms/nonprod/protocol/openid-connect/tokenProduction
https://identity.beadpay.io/realms/prod/protocol/openid-connect/token
Form fields
Example curl (Test / Non-prod)
The response contains access_token. Use it as a Bearer token for all API calls.
For grant types, token fields, and refresh flows, see the Authentication section.
2) Create a payment (minimal)
Create a hosted payment using the Payments API. For a fast test, configure your Sandbox merchant or terminal to support Klarna, then use it as the tender presented on the hosted page.
Sandbox API base
Request
Example body (hosted payment flow)
This example shows a minimal CryptoPaymentRequest with a single cart item and a webhook.
Key points:
merchantIdandterminalIdidentify the merchant and terminal in BeadrequestedAmountis the amount in the requested currency (for simple tests, use whole numbers in USD)cartItemsmust contain at least one item, withid,quantity, andpriceredirectUrlis optional and controls where Bead sends the browser after checkoutemailReceipt,smsReceipt, andwebhookUrlsare optional, but recommended in real integrations
Typical response shape
The POST /payments/crypto endpoint returns a CryptoPaymentResponse that includes a tracking identifier, a payment page identifier, and one or more hosted payment URLs.
For a basic flow:
Store
trackingIdto check status laterStore
paymentPageIdif you plan to use Payment Pages specific endpointsUse the first entry in
paymentUrlsas the hosted payment URL in your application
For full request and response details, see the Create Payment page.
3) Present the hosted page
Redirect the shopper to the hosted payment URL, or open it inside your application.
Use the first URL in the paymentUrls array (or whichever you choose) to begin checkout.
Common patterns:
Web or SPA Embed the URL in an iframe or open it in a new browser tab or window.
Native app Load the URL in an in app browser or webview.
Redirect behavior:
If
redirectUrlis provided, Bead redirects the browser toredirectUrlafter success or cancel and appends context in the query string. You can use this to show your own confirmation page.If
redirectUrlis not provided, Bead shows a hosted confirmation page indicating success or cancellation.
Regardless of redirect behavior, you should always confirm the final status via webhooks or status polling before shipping goods or granting access.
4) Confirm the result
You can confirm the result by polling or by using a webhook.
Poll
Example response
Key statuses:
createdandprocessingwhile the customer is payingcompletedwhen the payment has fully succeededunderpaid,overpaid,expired,invalid, orcancelledfor non happy path outcomes
For the full set of status values and their meanings, see Payment Statuses.
Webhook (optional)
Instead of polling, you can configure Payment Webhooks so that your system is notified whenever
statusCodechanges.Register a payment webhook at the terminal level and optionally send
webhookUrlsin the payment requestReceive JSON payloads for status transitions such as
completed,underpaid,overpaid, andexpiredRespond with HTTP 200 as soon as you persist or queue the event
See Payment Webhooks for payload format, retries, and handler examples.
5) Next steps
Once you can create and complete a payment in Sandbox and confirm the result, you can:
Build reconciliation and settlement exports using Reporting and Settlement
Explore tender specific options such as Klarna, PayPal, Venmo, Alipay, WeChat Pay, and Cash App
Use Reporting (Merchant, Partner, and Terminal Payments) to build dashboards and payment history views
Use Settlement (Merchant settlements and Payment settlements) to see how payments roll into settlement batches and when funds are available
Onboarding path (short version)
This path is for partners who will submit merchant applications programmatically.
Authenticate using the same token process as above
POST /merchant-onboarding/applicationwithsignerandmerchantDataStore
applicationIdandonboardingUrlfrom the response; the signer is sent the package automaticallyGET /merchant-onboarding/application/{applicationId}or use an onboarding webhook to track statusAfter approval, use Entity Management to add locations and terminals
The Onboarding section provides full request and response details and example payloads.
Conventions
JSON for request and response bodies
ISO 8601 timestamps in UTC
Idempotency keys on POST operations you may retry
Standard error payloads with type, title, status, and trace identifier
See Reference Guide for more details on error formats, rate limits, and core schemas.
Troubleshooting
Cannot authenticate
Verify realm,
client_id, and user credentialsCheck for clock skew between your environment and the identity provider
Hosted page will not load
Confirm you are passing a valid Bearer token on create
Confirm you are using a URL from the
paymentUrlsarray returned by the create payment response
No status change
Confirm you are polling the correct
trackingIdConfirm that your webhook endpoint is reachable and returning HTTP 200 if you are using webhooks
When payments are flowing correctly, move on to the Payments, Reporting, and Settlement sections for deeper integration patterns.
Last updated