Quick Start
This page gets you live in Sandbox quickly. Most integrators start with Payments. If you are here to submit merchant applications, see 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
grant_type=password
client_id={client_id}
username={username}
password={password}
scope={optional}Example curl (Test / Non-prod)
curl -s -X POST "https://identity.beadpay.io/realms/nonprod/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password" \
-d "client_id={client_id}" \
-d "username={username}" \
-d "password={password}"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)
Post a minimal payment with your chosen tender. For the fastest test, use Klarna.
Sandbox API base
https://api.test.devs.beadpay.ioRequest
POST https://api.test.devs.beadpay.io/payments
Authorization: Bearer {access_token}
Content-Type: application/jsonExample body (hosted payment flow)
{
"amount": 199.99,
"currency": "USD",
"tenderType": "klarna",
"orderId": "ord_9aNQy7w4",
"description": "Test order #9aNQy7w4",
"returnUrl": "https://merchant.example.com/checkout/return",
"metadata": { "customerRef": "CUST-1825" }
}Typical response shape
{
"paymentId": "pay_01J73V0M3Q2W5YA3K8",
"trackingId": "trk_01J73V2E6S8B1H3Z2D",
"hostedUrl": "https://pay.example/session/3c52f0b9",
"statusCode": "created"
}Capture paymentId or trackingId and the hostedUrl. The exact response fields depend on tender and environment. For full request and response details, see the Create Payment page.
3) Present the hosted page
Redirect the shopper to hostedUrl or open it in an in-app webview. After completion, your returnUrl will receive the shopper back.
The hosted page handles:
Displaying tender options
Presenting QR codes or wallet flows
Collecting customer inputs required by the tender
4) Confirm the result
You can confirm the result by polling or by using a webhook.
Poll
GET https://api.test.devs.beadpay.io/payments/tracking/{trackingId}
Authorization: Bearer {access_token}
Accept: application/jsonExample response
{
"trackingId": "trk_01J73V2E6S8B1H3Z2D",
"statusCode": "completed",
"amounts": {
"requested": { "amount": 199.99, "currency": "USD" },
"paid": { "amount": 199.99, "currency": "USD" }
}
}Key statuses:
createdandprocessingwhile the customer is payingcompletedwhen the payment has fully succeededunderpaid,overpaid,expired,invalid, orcancelledfor non happy path outcomes
See Payment Statuses for the full list of status values and meanings.
Webhook (optional)
Register a payment webhook once per terminal and rely on events such as
completed,underpaid,overpaid, andexpiredVerify the request, return HTTP 200, and implement retries on non-2xx responses in your own code
See Payment Webhooks for payload format, retry guidance, and example handlers.
5) Next steps
Once you can create a payment and confirm the result in Sandbox, you can:
Add refunds and voids where supported
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 are grouped 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 the
hostedUrlreturned by the API 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