DEVELOPERS

Ship payments in days, not quarters.

One REST API for Pay by Bank, cards and payouts. Hosted checkout or your own UI. Signed requests and callbacks, a sandbox, and no card data on your servers.

sandbox

POST /v2/payment/banks/{payment_method}/sale

{  "general": { "project_id": 42, "payment_id": "INV-2291",    "signature": "<HMAC-SHA-512, base64>" },  "customer": { "id": "cust_17", "ip_address": "203.0.113.7" },  "payment": { "amount": 4200, "currency": "EUR" },  "account": { "bank_id": 54981 }}

200 OK142 ms

{  "project_id": 42,  "payment": { "id": "INV-2291", "status": "success" },  "operation": { "status": "success", "code": "0" },  "signature": "…"}
Gateway uptime
99.99%
Median auth
142 ms
Processing and storage
UK + EU

Quickstart

Live in the sandbox in an afternoon.

  1. Request sandbox keys

    Tell us what you are building and we send keys the same day.

  2. Create a payment

    Send a signed request and send the customer on to their bank.

  3. Handle the callback

    Check its signature, read the status, reconcile, and you are done.

curl -X POST https://api.sola.live/v2/payment/banks/{payment_method}/sale \  -H "Content-Type: application/json" \  -d '{    "general": { "project_id": 42, "payment_id": "order_10482",      "signature": "<HMAC-SHA-512, base64>" },    "customer": { "id": "cust_17", "ip_address": "203.0.113.7" },    "payment": { "amount": 4900, "currency": "EUR" },    "account": { "bank_id": 54981 },    "return_url": { "success": "https://shop.com/thanks",      "decline": "https://shop.com/declined" }  }'

200 OK142 ms

{  "project_id": 42,  "payment": { "id": "order_10482", "status": "success" },  "operation": { "status": "success", "code": "0" },  "signature": "…"}

Cards use the same shape on /v2/payment/card/sale, with a "card" object instead of "account".

SANDBOX

keys same day

Test data

Test project
Test cards and a test bank flow come with your sandbox keys.

Same requests and callbacks as production — a test project and its secret key are the difference.

Two ways in

  • Hosted checkout

    Fastest route live. We host the payment page, so PCI scope stays with us and you redirect and listen for the callback.

    • Fastest to ship
    • PCI stays with us
    • Method picker included
  • API + your own UI

    Full control over the experience. Hosted fields keep card data off your servers either way.

    • Your design end to end
    • Hosted fields for cards
    • Same API, same callbacks

CALLBACKS & RECONCILIATION

Every status change, signed

Each callback is signed and retried until you answer 200. Check the signature, then act on the status. To check a payment yourself, ask the API for its status.

One settlement file across both rails.

CALLBACK STATUSES

processing
Payment in progress
success
Funds confirmed
decline
Payment did not go through

Security

Neither rail asks you to hold anything you should not be holding.

DATA HANDLING

  • card_data

    Never touches you in the clear

    Hosted fields and tokens do the work. Your servers hold a token, never a card number.

  • bank_credentials

    Never exposed, to you or to us

    Authentication happens entirely between the customer and their own bank.

  • data_residency

    Stays in the UK and EU

    Processing and storage stay in the region you operate in.

  • 3DS2 and SCA
  • Tokenised card storage
  • Signed requests and callbacks
  • UK and EU residency

API ACCESS

What you get on access

One reference, kept current with the API, and libraries for the parts that are easy to get wrong.

  1. Full API docs

    Every endpoint, with request and callback examples.

  2. SDKs

    Go, Java, JavaScript, PHP and Python libraries that sign your requests and parse callbacks.

Sandbox keys, same day.

Tell us what you are building and we send keys, the API docs and the SDKs.

Request API access