Skip to content
API DocsDocs

S2S Flow Payload

Request and response payloads for APM methods that return actionType: NONE.

3 min readUpdated Apr 8, 2026

S2S (server-to-server) APM methods return actionType: NONE — the payment is processed entirely on the backend with no customer redirect or QR code.

All S2S methods use the standard POST /api/v1/payments/apm endpoint.

#Required Request Fields

Top-Level Fields

FieldTypeDescription
callbackUrlStringURL to receive transaction status updates
successRedirectUrlStringURL to redirect the customer after successful payment
failureRedirectUrlStringURL to redirect the customer after failed payment

Billing Details (ApmBillingDetails)

FieldTypeDescription
emailStringThe customer's email address used for communication or receipts

#Payload Structure

S2S methods may require additional method-specific fields (e.g. bank account details, customer identity). Refer to the APM Payload References for required fields per method.

{
  "paymentMethod": "EFT",
  "paymentType": "BANK_TRANSFER",
  "account": "4051111222",
  "bank": "absa",
  "customer": "John Doe"
}

Payload Fields

FieldTypeRequiredDescription
paymentMethodEnumYesS2S method identifier (e.g. EFT)
paymentTypeEnumYesPayment type for the method (e.g. BANK_TRANSFER)
additional fieldsMethod-specificVaries by method — see APM Payload References

#Expected apmResponseData

{
  "paymentMethod": "EFT",
  "paymentType": "BANK_TRANSFER",
  "actionType": "NONE",
  "redirectUrl": null,
  "iframeUrl": null,
  "qrData": null,
  "qrDeepLink": null,
  "providerTransactionId": "820030759747217453",
  "extra": null
}

#Response Fields

FieldTypeRequiredDescription
paymentMethodEnumYesThe S2S method used
paymentTypeEnumYesPayment type
actionTypeEnumYesAlways NONE
redirectUrlStringNoAlways null for S2S methods
iframeUrlStringNoAlways null for S2S methods
qrDataStringNoAlways null for S2S methods
qrDeepLinkStringNoAlways null for S2S methods
providerTransactionIdStringNoTransaction ID in the provider's system
extraMapNoAdditional key-value metadata

The response may be immediately final (SUCCEED or FAILED) or async (PROCESSING / PENDING). In the async case, wait for the webhook — do not rely on the initial transactionStatus.

#See Also

Was this helpful?