Introduced payment_outcome on Payment Sessions, deprecating payment_status
The Payment Session resource now exposes a richer payment_outcome field that supersedes payment_status. The new field carries the existing paid, unpaid, and pending values and adds three more to cover flows that the binary payment_status could not express cleanly.New field on the Payment Session object:payment_outcomeβ the canonical state of the payment associated with the session
not_startedβ payment has not been initiatedpendingβ payment is in flight, awaiting a final outcomepaidβ payment succeeded (terminal)unpaidβ payment failed, expired, or was cancelled (terminal)reservedβ funds were authorised on acapture_method: manualflow; subsequent capture and void operations are tracked on the underlying Payment resourcepayment_method_verifiedβ supportedamount: 0verification flow succeeded and the payment method was vaulted
payment_statusis now deprecated. It continues to be populated withpaid,unpaid, orpendingfor backwards compatibility. New integrations should readpayment_outcome.
Added Authorisation and Capture and Payment Method Verification to Payments and Payment Sessions APIs
Introduced support for authorisation and capture payment flows, and payment method verification, across both the Payments and Payment Sessions APIs.Payments API β new endpoints:POST /collect/payments/{id}/capturesβ capture a previously authorised paymentPOST /collect/payments/{id}/voidsβ cancel a previously authorised payment
capture_methodβ whether the payment uses immediate or manual captureauthorized_amountβ the amount held under authorisationpaid_amountβ the amount captured and collectedvoided_amountβ the amount voided when an authorisation is cancelledintentβ indicates whether the payment was initiated for verification or payment collectionmetadatanow accepted on capture and void requestsexternal_referenceenforces a pattern of^[a-zA-Z0-9_-]+$
payment_method_optionsadded to One Time, First In Series, and Next In Series payment sessions to configure the capture method and enable payment method verification flows
Added Mandate and Subscription Options to Payment Sessions API
Payment sessions now support mandate and subscription options for recurring payment flows. Merchants can configure consent terms, validity periods, execution schedules, and payment amount controls when initiating a mandate.Mandate options:mandate_optionsadded to First In Series payment sessions- Supported mandate types: Scheduled, On Demand, and Installment
- Execution constraints control when recurring payments can be collected:
day_of_month,day_of_week,day_of_year,nth_day_of_month - Period limits define how much can be collected within a given window, with support for calendar-aligned and cycle-aligned windows
- Amount can be fixed or variable within defined bounds
subscription_optionsadded to support plan-driven recurring payments- Recurrence can be configured as daily, weekly, or monthly with flexible scheduling
Added Payment Rules and Schema Refinements to Billing API
New fields on the Account object:payment_rules.min_amountβ minimum payment amount acceptedpayment_rules.max_amountβ maximum payment amount acceptedpayment_rules.overpayment_allowedβ whether payments exceeding the balance are acceptedpayment_rules.underpayment_allowedβ whether partial payments are accepted
external_referenceon accounts now excludes the reservedbacc_prefixexternal_referenceon customers and bills now excludes the reservedbcus_prefixconflictandpayment_not_founderror codes added across all billing endpoints
Added Presentation Mode to Payment Sessions API
presentation_mode is now available on checkout_options in the Payment Sessions API to control how the Moment checkout is presented to customers.Supported modes:redirectβ redirects the customer to the Moment-hosted checkout pageembedded_modalβ displays checkout as a modal overlay within the merchantβs pageembedded_inlineβ renders checkout inline within the merchantβs page
display_pay_buttonreplaces the previousdisplayPayButtonfield on embedded mode optionspayment_not_foundadded as a new error code across create and retrieve endpoints
Introduced Payments API
Initial release of the Payments API.Endpoints:GET /collect/payments/{id}β retrieve the full Payment object by its identifier
payment_method_details is returned as a discriminated union β each payment method type (Card, Capitec Pay, Instant EFT, Zapper, MTN MoMo) is a distinct subschema identified by a type discriminator.π See Payment Objectπ See Payments OverviewIntroduced Payment Requests API
Initial release of the Payment Requests API, enabling merchants to create and share direct payment links with customers via SMS, email, or messaging apps.Endpoints:POST /collect/payment_requestsβ create a payment requestGET /collect/payment_requests/{id}β retrieve a payment requestPATCH /collect/payment_requests/{id}β update a payment requestDELETE /collect/payment_requests/{id}β delete a payment request
payment_request.createdβ triggered when a payment request is createdpayment_request.updatedβ triggered when a payment request is updatedpayment_request.paidβ triggered when a payment request is paid
Added obligation.amount_applied Webhook to Billing API
The obligation.amount_applied webhook event is now available, triggered when an amount is received against a billing obligation such as a bill, account, or customer.π See obligation.amount_appliedIntroduced Payment Pages API
Initial release of the Payment Pages API, enabling merchants to create branded hosted payment pages that customers can access via a shareable link.Endpoints:POST /collect/payment_pagesβ create a payment pageGET /collect/payment_pages/{id}β retrieve a payment pagePATCH /collect/payment_pages/{id}β update a payment pageDELETE /collect/payment_pages/{id}β delete a payment pagePATCH /collect/payment_pages/{id}/inactiveβ deactivate a payment pageGET /collect/payment_pages/{id}/transactionsβ retrieve transactions for a payment page
payment_page.payment_receivedβ triggered when a payment is received on a hosted page
Introduced Billing API
Initial release of the Billing API, providing full lifecycle management of customers, accounts, and bills.Customers:POST /billing/customersβ create a customerGET /billing/customers/{customer}β retrieve a customerPATCH /billing/customers/{customer}β update a customer
POST /billing/accountsβ create an account under a customerGET /billing/accounts/{account}β retrieve an accountPATCH /billing/accounts/{account}β update an account
POST /billing/billsβ create a billGET /billing/bills/{bill}β retrieve a billPATCH /billing/bills/{bill}β update a billPOST /billing/bills/{bill}/voidβ cancel a bill
Added Checkout Options to Payment Sessions API
checkout_options added to One Time and First In Series payment sessions, allowing merchants to configure the checkout experience presented to customers.π See Checkout OptionsIntroduced Payment Sessions API
Initial release of the Payment Sessions API.Endpoints:POST /collect/payment_sessionsβ create a new payment sessionGET /collect/payment_sessions/{id}β retrieve a payment session by its identifier
- One Time β a single payment flow with checkout and payment method options
- First In Series β initiates a recurring payment flow and captures the mandate
- Next In Series β continues a recurring payment flow using an existing mandate

