One API. Get paid by every South African bank.

Bucala is a payment platform built for South Africa. One integration, with the request formats, objects and webhooks developers already know, connects you to South African bank rails: PayShap, EFT and DebiCheck first, with cards to follow.

Bucala is in development. The sandbox uses simulated banks, and no real money moves yet.

R150.00 by PayShap. The payer approves the payment in their own banking app, and the money settles in seconds.

How a payment moves

Every step is a clear API object and a signed event your system can act on.

  1. You create a PaymentIntent

    Send the amount in cents and the payment method, such as za_payshap. Bucala returns a PaymentIntent with its status and the next step.

  2. The payer approves in their banking app

    With PayShap Request, the payer approves the payment where they already bank. Your checkout shows a short "check your banking app" screen.

  3. The bank confirms and the ledger records it

    The PaymentIntent moves to succeeded, and a balanced double-entry record is written. Your webhook receives a signed payment_intent.succeeded event.

  4. Funds become available

    A balance transaction tracks the money from pending to available, on a schedule you can see.

  5. You pay out

    Send available funds to any South African bank account by PayShap in seconds, or by EFT the next day. Bucala checks the account with the bank before any money moves.

Payment methods

One integration for the ways South Africans pay. "In the sandbox" means you can build and test against it today with simulated banks.

Payment methods and their status
MethodWhat it doesStatus
PayShap RequestThe payer approves a payment request in their banking app.In the sandbox
Bank transfer (EFT)The payer pays by EFT with a unique reference; Bucala matches the money to the payment as soon as the bank reports it.In the sandbox
PayShap payoutsPay a supplier, seller or customer to their ShapID in seconds.In the sandbox
RefundsRefund a PayShap payment in full or in part, straight back to the payer.In the sandbox
RTC payoutsInstant payouts to any bank account by Real-Time Clearing, checked with the bank first.In the sandbox
EFT payoutsNext-day payouts to any bank account, checked with the bank first.In the sandbox
DebiCheckDebit orders the customer approves in their banking app, for subscriptions, insurance and loans.In the sandbox
Bank pay-by-bankCapitec Pay, Absa Pay and Nedbank Direct, inside each bank's own app. The sandbox simulates each bank; live use needs an agreement with each bank.In the sandbox
Cards and walletsVisa, Mastercard, Apple Pay and Google Pay, with 3-D Secure. The sandbox accepts test cards only; live cards need PCI DSS certification and acquirer agreements.In the sandbox
QR codesSnapScan and Zapper: the customer scans a code with their app. The sandbox simulates both; live use needs agreements with SnapScan and Zapper.In the sandbox
CashCash at the till for customers without cards or bank apps: the customer pays at a shop with a payment number. The sandbox simulates it; live use needs agreements with retailers.In the sandbox

Who Bucala is for

Online businesses and software companies

Integrate once with a modern payments API and add South African bank payments, without building to each bank separately.

Businesses that collect every month

Insurers, lenders, gyms, schools and landlords need debit orders that customers authorise, and fast money when a collection fails.

Platforms and marketplaces

Take payments for many sellers and pay each of them out, with Bucala holding the funds as the licensed payment provider.

Built so money is never lost

A payment provider is only as good as its books. These rules are in the code and in the database.

Every cent in a double-entry ledger
Each entry balances to zero, and records are never changed or deleted. Corrections are new entries.
No double payments
Requests are idempotent, and Bucala asks the bank for a payment's status before it ever retries.
Books checked against the bank
Every day, Bucala compares its books with the bank statement, checks that the bank holds at least what merchants are owed, and lists every difference: money the bank moved that Bucala did not record, money Bucala recorded that the bank did not move, and amounts that do not agree. At the end of each month, each merchant gets a proof-of-funds statement that shows what Bucala owed them and the money it held for them.
Signed webhooks
Every event is signed with HMAC-SHA256 so you can check it came from Bucala, and failed deliveries retry for three days.
Hosted in South Africa
When Bucala goes live, personal and payment data will stay in South African data centres, in line with POPIA.
Security standards
Bucala is being built for PCI DSS Level 1 certification before card payments go live.

Pricing

Simple, published prices with no setup or monthly fees. These are proposed prices; final prices will be published before launch.

Proposed prices, excluding VAT
MethodProposed price (excluding VAT)
PayShap and PayShap RequestR2.50 per payment
Pay-by-bank1.5%, capped at R25 per payment
Local cards2.7% + R1
Next-day EFT payoutsFree
Instant payoutsA small flat fee per payout

South Africa first, then Namibia

Bucala plans a Namibian gateway on the same API, so a business that trades in both countries can use one integration and one dashboard, with rand and Namibian dollar accounts kept separate.

Try the sandbox

The sandbox runs on simulated South African banks. Use a test ShapID such as 0820000001@capitec to see a payment succeed, or 0820000002@capitec to see the payer decline it.

curl -u "$BUCALA_KEY:" https://api.bucala.co.za/v1/payment_intents \
  -d amount=15000 -d currency=zar \
  -d "bucala_payer_shap_id=0820000001@capitec" \
  -d confirm=true

The sandbox has a dashboard too. Sign in with your test secret key to see your balance, payments, payouts and DebiCheck mandates, and to add webhook endpoints.

To get sandbox access or talk about your payments, email hello@bucala.co.za.