Reference
Payment Form
HTML form-based integration for creating secure checkout sessions without JavaScript. Supports order management, customer creation, payment customization, and redirect handling with simple form submissions.
Form basic example
<form action="https://kwik.co.za/checkout/form" method="post">
<input type="hidden" name="public_key" value="q9ZfVf7dT9g1uEJpXj7lZ0n2W8kYz4aLJc3p5Qw7s2A">
<input type="hidden" name="mode" value="one-off"> <!-- recurring or save -->
<input type="hidden" name="amount" value="100.00">
<input type="hidden" name="currency" value="ZAR">
<input type="submit">
</form>
Form advanced example
<form action="https://kwik.co.za/checkout/form" method="post">
<input type="hidden" name="public_key" value="q9ZfVf7dT9g1uEJpXj7lZ0n2W8kYz4aLJc3p5Qw7s2A">
<input type="hidden" name="mode" value="one-off"> <!-- recurring or save -->
<input type="hidden" name="amount" value="100.00">
<input type="hidden" name="currency" value="ZAR">
<input type="hidden" name="item_name" value="Test Product">
<!-- [optional: redirects] -->
<input type="hidden" name="return_url" value="https://www.example.com/success">
<input type="hidden" name="cancel_url" value="https://www.example.com/cancel">
<input type="hidden" name="notify_url" value="https://www.example.com/notify">
<!-- [optional: order details] -->
<!-- either pass the order_id or the order object -->
<input type="hidden" name="order_id" value="ord_12345">
<!-- create a new order -->
<input type="hidden" name="order_reference" value="ORD0045">
<input type="hidden" name="order_description" value="Monthly plan + setup">
<input type="hidden" name="order_items_0_sku" value="plan_pro_monthly">
<input type="hidden" name="order_items_0_name" value="Pro Plan (Monthly)">
<input type="hidden" name="order_items_0_quantity" value="1">
<input type="hidden" name="order_items_0_unit_amount" value="1200.00">
<input type="hidden" name="order_items_0_tax_amount" value="0">
<input type="hidden" name="order_items_0_metadata_custom_field_1" value="custom data 1">
<input type="hidden" name="order_items_0_metadata_custom_field_2" value="custom data 2">
<!-- [optional: customer details] -->
<!-- either pass the customer_id or the customer object -->
<input type="hidden" name="customer_id" value="cus_abc123...">
<!-- create a new customer -->
<input type="hidden" name="customer_reference" value="CLN240919000001">
<input type="hidden" name="customer_company_name" value="">
<input type="hidden" name="customer_person_name" value="John">
<input type="hidden" name="customer_person_surname" value="Doe">
<input type="hidden" name="customer_client_type_lookups_id" value="loo_abc123...">
<input type="hidden" name="customer_id_type_lookups_id" value="loo_abc123...">
<input type="hidden" name="customer_id_number" value="900112....">
<input type="hidden" name="customer_email" value="johndoe@mail.com">
<input type="hidden" name="customer_contact_number" value="+27831234567">
<input type="hidden" name="customer_billing_address_line1" value="1 Loop Street">
<input type="hidden" name="customer_billing_address_line2" value="Floor 5">
<input type="hidden" name="customer_billing_address_city_or_town" value="Cape Town">
<input type="hidden" name="customer_billing_address_province_or_state" value="Western Cape">
<input type="hidden" name="customer_billing_address_postal_or_zip_code" value="8001">
<input type="hidden" name="customer_billing_address_country_lookups_id" value="loo_abc123...">
<input type="hidden" name="customer_shipping_contact_name" value="Jane Doe">
<input type="hidden" name="customer_shipping_contact_number" value="+27820000000">
<input type="hidden" name="customer_shipping_address_line1" value="1 Loop Street">
<input type="hidden" name="customer_shipping_address_line2" value="Floor 5">
<input type="hidden" name="customer_shipping_address_city_or_town" value="Cape Town">
<input type="hidden" name="customer_shipping_address_province_or_state" value="Western Cape">
<input type="hidden" name="customer_shipping_address_postal_or_zip_code" value="8001">
<input type="hidden" name="customer_shipping_address_country_lookups_id" value="loo_abc123...">
<input type="hidden" name="customer_metadata_custom_field_1" value="custom data 1">
<input type="hidden" name="customer_metadata_custom_field_2" value="custom data 2">
<!-- [optional: payment settings] -->
<input type="hidden" name="payment_payment_methods_ids_0" value="pam_abc123">
<input type="hidden" name="payment_metadata_custom_field_1" value="custom data 1">
<input type="hidden" name="payment_metadata_custom_field_2" value="custom data 2">
<!-- [optional: card settings] -->
<input type="hidden" name="card_request_3ds" value="automatic">
<input type="hidden" name="card_save_card" value="true">
<input type="hidden" name="card_payment_type" value="DB">
<!-- [optional: notifications] -->
<input type="hidden" name="notifications_send_invoice" value="true">
<input type="hidden" name="notifications_send_confirmation_email" value="true">
<input type="hidden" name="notifications_confirmation_email_override" value="accounts@example.com">
<!-- [optional: customization] -->
<input type="hidden" name="customization_locale" value="en-ZA">
<input type="hidden" name="customization_theme" value="light">
<input type="hidden" name="customization_type" value="page">
<input type="hidden" name="customization_display_cancel_button" value="true">
<input type="hidden" name="customization_display_total" value="true">
<input type="hidden" name="customization_display_cart" value="true">
<input type="hidden" name="customization_brand_primary" value="#00DC82">
<input type="submit">
</form>
Request Parameters
Field | Required | Type | Description | Example |
---|---|---|---|---|
public_key | Y | String | Public API key for authentication | q9ZfVf7dT9g1uEJpXj7lZ0n2W8kYz4aLJc3p5Qw7s2A |
mode | Y | String | Payment mode - one-off, recurring, or save | one-off |
amount | Y | String | Payment amount | 100.00 |
currency | Y | String | Currency code | ZAR |
item_name | Y | String | Name/description of the item being purchased | Test Product |
return_url | N | String | URL to redirect on successful payment | https://www.example.com/success |
cancel_url | N | String | URL to redirect on cancelled payment | https://www.example.com/cancel |
notify_url | N | String | Webhook URL for payment notifications | https://www.example.com/notify |
order_id | C | String(32) | Either pass order_id OR order object. ID of existing order | ord_12345 |
order_reference | C | String(35) | Order reference identifier | ORD0045 |
order_description | C | String | Description of the order | Monthly plan + setup |
order_items_0_sku | C | String | Product SKU for first item | plan_pro_monthly |
order_items_0_name | C | String | Product name for first item | Pro Plan (Monthly) |
order_items_0_quantity | C | Integer | Item quantity for first item | 1 |
order_items_0_unit_amount | C | String | Unit price for first item | 1200.00 |
order_items_0_tax_amount | N | Number | Tax amount for first item | 0 |
order_items_0_metadata_custom_field_1 | N | String | Custom metadata for first item | custom data 1 |
order_items_0_metadata_custom_field_2 | N | String | Custom metadata for first item | custom data 2 |
customer_id | C | String(32) | Either pass customer_id OR customer object. ID of existing customer | cus_abc123... |
customer_reference | C | String(35) | Reference to identify a specific customer | CLN240919000001 |
customer_company_name | N | String(64) | Company name if applicable | null |
customer_person_name | N | String(32) | Customer's first name | John |
customer_person_surname | N | String(32) | Customer's surname | Doe |
customer_client_type_lookups_id | N | String(32) | Client type lookup ID | loo_abc123... |
customer_id_type_lookups_id | N | String(32) | ID type lookup (e.g. South African ID, passport) | loo_abc123... |
customer_id_number | N | String(13) | ID number | 900112... |
customer_email | N | String(128) | Customer email address | johndoe@mail.com |
customer_contact_number | N | String(16) | Customer contact number | +27831234567 |
customer_billing_address_line1 | N | String | Billing address line 1 | 1 Loop Street |
customer_billing_address_line2 | N | String | Billing address line 2 | Floor 5 |
customer_billing_address_city_or_town | N | String | Billing city | Cape Town |
customer_billing_address_province_or_state | N | String | Billing province/state | Western Cape |
customer_billing_address_postal_or_zip_code | N | String | Billing postal code | 8001 |
customer_billing_address_country_lookups_id | N | String(32) | Billing country lookup ID | loo_abc123... |
customer_shipping_contact_name | N | String | Shipping contact name | Jane Doe |
customer_shipping_contact_number | N | String(16) | Shipping contact number | +27820000000 |
customer_shipping_address_line1 | N | String | Shipping address line 1 | 1 Loop Street |
customer_shipping_address_line2 | N | String | Shipping address line 2 | Floor 5 |
customer_shipping_address_city_or_town | N | String | Shipping city | Cape Town |
customer_shipping_address_province_or_state | N | String | Shipping province/state | Western Cape |
customer_shipping_address_postal_or_zip_code | N | String | Shipping postal code | 8001 |
customer_shipping_address_country_lookups_id | N | String(32) | Shipping country lookup ID | loo_abc123... |
customer_status_lookups_id | N | String(32) | Customer status lookup ID | loo_abc123... |
customer_metadata_custom_field_1 | N | String | Custom metadata field 1 | custom data 1 |
customer_metadata_custom_field_2 | N | String | Custom metadata field 2 | custom data 2 |
payment_payment_methods_ids_0 | N | String(32) | Payment method ID for first option | pam_abc123 |
payment_metadata_custom_field_1 | N | String | Payment metadata field 1 | custom data 1 |
payment_metadata_custom_field_2 | N | String | Payment metadata field 2 | custom data 2 |
card_request_3ds | N | String | 3D Secure request mode - automatic, always | automatic |
card_save_card | N | Boolean | Whether to save card for future use | true |
card_payment_type | N | String | Payment type - DB (debit) or PA (preauth) | DB |
notifications_send_invoice | N | Boolean | Send invoice to customer | true |
notifications_send_confirmation_email | N | Boolean | Send confirmation email | true |
notifications_confirmation_email_override | N | String | Override email for confirmations | accounts@example.com |
customization_locale | N | String | Checkout page locale | en-ZA |
customization_theme | N | String | Checkout page theme - light or dark | light |
customization_type | N | String | Display type - page or embed | page |
customization_display_cancel_button | N | Boolean | Show cancel button on checkout | true |
customization_display_total | N | Boolean | Display total amount | true |
customization_display_cart | N | Boolean | Display cart details | true |
customization_brand_primary | N | String | Primary brand color hex code | #00DC82 |
Checkout Page
Create a secure, customizable checkout page session to capture payments with cards, bank transfers, and other payment methods. Supports 3D Secure authentication, order management, customer creation, and webhook notifications.
Payments
Process one-time and recurring payments across multiple methods including Pay-in, EFT Debit Orders, DebiCheck, Registered Mandates, and Card payments. Handle payment creation, status tracking, refunds, and webhook notifications.