FROM THE EXCEED IT BLOG

Payfast Integration for South African Websites and Apps: What to Scope

Published

Payfast Integration for South African Websites and Apps: What to Scope

A payment integration should connect a customer's purchase to a dependable business record. Adding a payment button is only one step. The complete experience includes merchant setup, the amount charged, confirmation, order handling, failure recovery and a clear view of transactions for the team operating the business.

If you are commissioning a Payfast integration for a South African website or app, start by describing what is being sold and what should happen after payment. Provider features and merchant eligibility can change, so confirm the required payment methods and account capabilities directly with Payfast before treating them as committed scope.

Define the sale and the point of fulfilment

A product order, event reservation, service deposit and recurring membership each need different rules. A deposit may reserve a date without settling the full invoice. A physical order may become ready for dispatch after payment. A digital purchase may grant access immediately after a verified successful result.

Write a simple state sequence for the transaction. For a reservation, it might be requested, temporarily held, awaiting payment, confirmed, expired or cancelled. Explain how long a hold lasts and what happens if a payment result arrives after it expires. Without that rule, a technically successful payment can create an operational dispute.

Assign responsibility for refunds and exceptions. The developer should implement the agreed workflow, while authorised business staff decide when a refund or manual adjustment is appropriate. A support user should be able to explain an order's state without searching several unrelated inboxes.

Establish account ownership and environments

The merchant account should have a clear business owner. Decide who supplies integration configuration, who may change settings and who can access financial reports. Keep test and live credentials separate and provide them through an agreed secure process rather than a public project brief.

Ask for a test environment and a plan for switching to live operation. Test transactions prove parts of the integration; they do not replace checking the live merchant configuration. A controlled launch should verify the actual domain, callback addresses and authorised payment methods.

The Payfast developer documentation is the starting reference for the selected integration method. Have the developer confirm current requirements against that reference and the merchant account, particularly if recurring billing or a less common payment flow is involved.

Keep pricing decisions on the server

The application needs to establish the payable amount from trusted product, order and discount rules. A number displayed in the browser should not be accepted as the final authority for what the customer owes. Recheck relevant order details before initiating payment and link the provider transaction to a stable internal reference.

Specify how delivery charges, discounts and partial payments are represented. If a customer changes the basket after a payment request is created, define whether the old request remains valid or must be replaced. Keep a record of what was purchased at the time, rather than recalculating an old order from today's catalogue prices.

For a B2B ordering portal, company-specific prices and account terms may introduce additional checks. Confirm those rules before choosing a simple consumer checkout pattern.

Separate the customer return page from confirmation

After interacting with the payment provider, the customer may return to your website, close the browser or lose connectivity. Your order process must not depend entirely on that return journey. Use the provider's documented server confirmation and validation process to establish the payment result.

Show an honest state if confirmation is still pending. “We are confirming your payment” is more useful than declaring failure when the application has not yet received a result. Give the customer an order reference and a way to check status without paying again unnecessarily.

The integration should tolerate repeated notifications without creating duplicate orders or sending several fulfilment requests. If processing fails temporarily, retain enough information to investigate and retry safely. Make unresolved payment events visible to an authorised operator.

Decide what happens after payment

Successful payment may trigger an email, an invoice request, a booking confirmation or access to a course. Treat these as separate operations with their own outcomes. If an email service is unavailable, the customer should not be charged again to obtain a receipt or confirmation.

A useful order screen shows the payment result and the fulfilment result separately. An order can be paid while awaiting stock, or paid while a downstream system needs attention. Collapsing every condition into a single “complete” flag makes support and reconciliation harder.

For recurring access, read our subscription billing guide. A recurring product needs renewal, cancellation and overdue rules in addition to its first successful charge.

Include cancellation, refunds and reconciliation

Agree what happens when the customer abandons checkout, cancels a booking or requests a refund. Do not delete the original transaction when a refund occurs. Preserve the relationship between the order, payment and refund so the financial history remains understandable.

The business should be able to compare its internal paid orders with provider records and identify differences. A reconciliation report might highlight a confirmed payment without a matching order, an order marked paid without verified confirmation, or a refund still awaiting an internal update.

Decide how often the team reviews these exceptions and who can resolve them. A dependable integration includes operational visibility; it does not assume that every external service will always respond immediately.

Test the failure paths before launch

  • A customer completes payment but closes the browser before returning.
  • The same server notification arrives twice.
  • A temporary application error interrupts confirmation processing.
  • A booking hold expires before a delayed payment result arrives.
  • An email or accounting integration fails after payment succeeds.
  • An authorised user investigates a refund without altering the original payment history.

Use representative order amounts and combinations of charges. Confirm that test configuration cannot accidentally remain active in production, and that logs do not expose credentials or unnecessary payment information.

What affects the development estimate

The provider connection is only part of the scope. Cost also depends on the existing website, order model, authentication, product rules, recurring billing, accounting integration, migration and administrator tools. A standard checkout for an existing shop differs from building an entire payment-enabled platform.

Send a developer one example purchase, your current technology, required payment methods, fulfilment steps and support process. Our integration readiness checklist helps organise that information. Exceed IT can then scope payment integration work around the actual customer and business journey.

YOUR NEXT CHAPTER

Let’s build something
that moves you forward.

A new idea. A better way of working. A product ready to grow.

Tell us what you’re thinking