What already runs, and what we build
We list Yoco as running on our platform because we already wrote and run that code. Your conversation is still built by our engineers, because we don't offer a do-it-yourself bot builder. This is the split:
| Part | Status | What it means |
|---|---|---|
| Yoco as your payment gateway | Runs | Your Yoco keys go into your account's payment gateway settings. On save, the platform registers its own webhook with Yoco. |
| Hosted checkout | Runs | We create a Yoco checkout for the exact amount, in rand, and send its link in the chat. The customer pays on Yoco's page. |
| Payment confirmation | Runs | A payment counts as paid only when Yoco's webhook confirms it, never because a customer says "done". |
| The conversation around the payment | Build | Our engineers write the steps: what to charge, when to send the link, what happens once it's paid or abandoned. |
| Refunds, reconciliation, other systems | Build | Done through Yoco's API and your systems' APIs, per client. |
Saved cards and split payouts run on our platform for Paystack, not Yoco. Your account sends chat payment links through one gateway, so pick Yoco or Paystack. We don't support Ozow, PayFast, Stripe or Peach.
Typical flows, both directions
From WhatsApp to Yoco
- Pay a deposit to hold a booking. The customer picks a slot in the chat, gets a Yoco link for the deposit, and the booking is confirmed once Yoco says it's paid.
- Pay for an order placed in the chat. The customer chooses items, gets a checkout link for the total, and the order goes to your team as paid.
- Pay a call-out fee or a balance. Your team or your job system sets the amount, and the link goes to the customer's WhatsApp.
- Buy a ticket or make a donation. A fixed or chosen amount, paid by link, then a confirmation in the chat.
From Yoco back to WhatsApp
- Payment succeeded. Yoco's webhook tells us, and the conversation sends a confirmation, receipt or ticket straight away.
- Payment failed or not finished. The customer can get a fresh link, or a nudge later. A reminder sent more than 24 hours after their last message has to be an approved template.
- Refund issued. If we build refunds, the customer gets a message when the refund goes through. Yoco's checkout API allows full and partial refunds.
How the build works
Codeswop is a Meta Tech Provider. You connect your own WhatsApp account through Meta's Embedded Signup, and Meta bills you directly for messages. On the Yoco side, we use Yoco's public developer API.
- Create the checkoutWhen the conversation reaches the payment step, the platform calls Yoco's Checkout API with the amount in cents. Yoco only supports rand for this. We attach reference details, such as the booking or order number, as checkout metadata, which Yoco describes as "often used to reconcile data with an external system".
- Send the linkYoco returns a
redirectUrl. We send it in the WhatsApp chat, either as a plain link or as a message with a button the customer taps to open the payment page. - Wait for Yoco's webhookYoco sends a
payment.succeededorpayment.failedevent. Yoco signs every event with an HMAC-SHA256 signature in thewebhook-signatureheader, plus awebhook-timestampheader, so an event can be checked as genuinely from Yoco and not replayed. The payment only counts once that event arrives. - Carry on the conversationThe waiting conversation picks up where it stopped: it confirms the booking, releases the ticket or tells your team the order is paid.
- Pass it on (build)If you want it, we post the payment to your other systems through their APIs: a QuickBooks Online invoice, a CRM deal marked won, a row in Google Sheets, or your own job system.
Yoco docs: Create checkout · Payment notification · Verifying webhook events · Refund checkout
Yoco also publishes a wider business API, covering orders, payments, refunds, payouts and items, with webhooks of its own (Yoco API reference). Reading your Yoco sales or card-machine data that way would be a custom build, scoped once we've confirmed your Yoco account has access to it.
What you need to provide
- A Yoco account able to take online payments, and its API keys. We test with Yoco's test keys first.
- Your WhatsApp account, connected through Meta's Embedded Signup, with a payment method added in WhatsApp Manager so Meta can bill you.
- Your price rules: what you charge for, fixed amounts or where the amount comes from, and your refund policy.
- Access to any other system that should hear about payments, such as QuickBooks, your CRM or your job system, through its API.
- The wording for confirmations and reminders. We submit reminder templates to Meta for approval in your account.
What it costs
- Yoco's fees. Payments settle to your Yoco account under your own agreement with Yoco, at Yoco's transaction fees.
- Meta's fees. Meta charges per delivered message, billed directly to you. A link sent while the customer is chatting is a service message. Each number gets 1,000 free service messages a month, then US$0.0095 each. A reminder or confirmation sent outside the 24-hour window is a utility template at US$0.0095 to a South African number, from 1 October 2026. We add nothing to Meta's rates.
- Our fees. A one-off build from R15,000 ex VAT, plus R7,500 per integration, and a monthly fee from R4,950 ex VAT to run it.
Source: Pricing on the WhatsApp Business Platform · Customer service windows. Worked examples in rand are on our pricing page.