NewChangedDeprecated
Consolidated in-flight Payment statuses under a single pending status
The Payment status field now reports a single pending value for any payment with an in-flight attempt, instead of exposing the more granular initiating, pending_action, and processing values at the payment level. The detailed phase of an in-flight payment is an attempt-level concern and is no longer surfaced on the payment aggregate status.New value on Payment status:pending: the payment has an in-flight attempt and is awaiting a final outcome
initiating,pending_action, andprocessingare deprecated as Paymentstatusvalues. They remain valid enum members for backwards compatibility, but new payment responses and webhook payloads will not emit them. Integrations should treat any of these legacy values aspending.
status: initiating, processing, or pending_action will now appear with status: pending. Terminal statuses (succeeded, failed, cancelled, expired) and draft are unchanged. If your integration matches on the legacy in-flight values, map them to pending.👉 See the Payment object referenceNewChangedDeprecated
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.
New
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
New
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
NewChanged
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
NewChanged
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
New
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 OverviewNew
Introduced 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
New
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_appliedNew
Introduced 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
New
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
New
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 OptionsNew
Introduced 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

