Request Transaction for Payment
Try it
Parameters
Bodyapplication/json
Request sample
curl -X POST 'https://one.ozow.com/v1/payments/497f6eca-6276-4993-bfeb-53cbbbba6f08/transactions' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-H 'X-Correlation-ID: 00000000-0000-0000-0000-000000000000' \
-H 'Idempotency-Key: string' \
-d '{
"paymentType": "ozowredirect",
"details": {
"institutionId": "00000000-0000-0000-0000-000000000000",
"beneficiary": {
"institutionId": "ba18699f-8f5f-497b-9bcd-445133076408",
"institutionName": "Demo Bank",
"accountNumber": "1234567890",
"branchCode": "5040"
},
"verifiedBankAccount": {
"institutionId": "ba18699f-8f5f-497b-9bcd-445133076408",
"institutionName": "Demo Bank",
"accountNumber": "1234567890",
"branchCode": "5040"
}
}
}'Response example
Built from the response schema. Values are placeholders, not real data.
https://one.ozow.com/v1/payments/{id}/transactionsProductionStart a transaction against an existing payment request by supplying the payment details directly, rather than redirecting the payer to Ozow. Takes a paymentType and the details object matching it.
Authentication
- OAuth 2.0scopes
payments
Path parameters
idstring requiredThe unique identifier of the payment.
example497f6eca-6276-4993-bfeb-53cbbbba6f08
Header parameters
X-Correlation-IDstringOptional correlation id for the request, if not supplied a new one will be generated and passed onto all underlying requests and returned as a header.
Idempotency-KeystringThe unique key idempotency keyIdempotency A request is idempotent when sending it twice has the same effect as sending it once. It matters most where a retry after a timeout could otherwise take a payment twice.IETF draft as per the following IETF Draft
Request body
paymentTypestring requiredThe payment type being made. To redirectRedirect Sending the payer to the Ozow payment page to complete the payment, and returning them to your site afterwards. The alternative is embedding the checkout in your own page, where the payer never leaves it. to Ozow with a specific institution pre-selected please use the
ozowredirecttype.Except for the
ozowredirectpayment type, all the other listed options require implementation of a callback url to handle responses and requests for more information to complete processing.Payment types such as
absapay,cardandpayshaphave pre-requisites that must be met and may not be available for particular payments and amounts.values"ozowredirect""absapay""bankdeposit""card""nedbankdirecteft""ozowwallet""payshap""voucher"detailsone of
Responses
X-Correlation-IDheaderThe correlation id for the request that was processed.
transactionTransactionFields of
TransactionlinksTransactionLinksFields of
TransactionLinksselfstring uri requiredThe unique URI for this resource.
refundstring uriThe refund operation for this transaction. This is a
POSToperation.
idstring uuid requiredThe transaction id of the payment.
amountAmountThe amount that was requested.
Fields of
Amountcurrencystring requiredThe ISO 4217ISO 4217 The three-letter currency codes, such as
ZARfor the South African rand. Always uppercase.Wikipedia current code.min length3max length3valuenumber float requiredThe amount in the currency specified.
min0.01
merchantReferencestring requiredThe merchant's reference for the transaction.
max length50siteCodestring requiredThe merchant site codeSite code The unique code for a site registered under a merchant. A site is a place to transact: a website, or a branch of a store. A merchant can have several, and each transaction names the one it belongs to, so sending the wrong code files the payment against the wrong place. in use for this payment.
max length50institutionstring requiredThe institution for the transaction.
The status of the transaction.
values"Incomplete""Successful""Error""Pending""Refunded"reasonstringPayment status reason.
createdDatestring date-time requiredThe date the transaction was created.
completedDatestring date-timeThe date the transaction was completed.
requiredActionOptionsarray of RequiredActionFields of
RequiredActionactionstring requiredThe action if any that is required next.
values"redirect""api""websocket"uristring uriThe URI to redirectRedirect Sending the payer to the Ozow payment page to complete the payment, and returning them to your site afterwards. The alternative is embedding the checkout in your own page, where the payer never leaves it., connect to the WebSocket or make the
POSTAPI call if required.inputRequiredInputResponseFields of
InputResponsetransactionIdstring uuid requiredThe transaction id of the payment being processed.
paymentStepstring requiredThe name of the payment step being performed.
pageTitlestring requiredThe title of the page, this will be a user friendly message and can be displayed to the end user.
pageInstructionsstring requiredInstructions for the end user to perform, this will be a user friendly message and can be displayed to the end user.
pageActionTextstring requiredThe action type, this could typically be used as the text for a button or link. This will be a user friendly message and can be displayed to the end user.
displayTypestring requiredThe display type which indicates what sort of action should be taken.
formwill require asking the user for input,promptwill require instructing the user to perform an action (e.g. accept a push message) andbusywill require asking the user to wait.values"form""prompt""busy"inputFieldsarray of InputFieldIf the object is of the
formdisplay type the input fields the user would need to complete will be returned in this array.Fields of
InputFieldnamestring requiredThe name of the transaction input field.
labelstringThe display name of the transaction input field, this will be a user friendly message and can be displayed to the end user.
fieldTypestring requiredvalues"text""select""imagecapture""iframe""partialtext"propertiesany of required
X-Correlation-IDheaderThe correlation id for the request that was processed.
transactionTransactionFields of
TransactionlinksTransactionLinksFields of
TransactionLinksselfstring uri requiredThe unique URI for this resource.
refundstring uriThe refund operation for this transaction. This is a
POSToperation.
idstring uuid requiredThe transaction id of the payment.
amountAmountThe amount that was requested.
Fields of
Amountcurrencystring requiredThe ISO 4217ISO 4217 The three-letter currency codes, such as
ZARfor the South African rand. Always uppercase.Wikipedia current code.min length3max length3valuenumber float requiredThe amount in the currency specified.
min0.01
merchantReferencestring requiredThe merchant's reference for the transaction.
max length50siteCodestring requiredThe merchant site codeSite code The unique code for a site registered under a merchant. A site is a place to transact: a website, or a branch of a store. A merchant can have several, and each transaction names the one it belongs to, so sending the wrong code files the payment against the wrong place. in use for this payment.
max length50institutionstring requiredThe institution for the transaction.
The status of the transaction.
values"Incomplete""Successful""Error""Pending""Refunded"reasonstringPayment status reason.
createdDatestring date-time requiredThe date the transaction was created.
completedDatestring date-timeThe date the transaction was completed.
requiredActionOptionsarray of RequiredActionFields of
RequiredActionactionstring requiredThe action if any that is required next.
values"redirect""api""websocket"uristring uriThe URI to redirectRedirect Sending the payer to the Ozow payment page to complete the payment, and returning them to your site afterwards. The alternative is embedding the checkout in your own page, where the payer never leaves it., connect to the WebSocket or make the
POSTAPI call if required.inputRequiredInputResponseFields of
InputResponsetransactionIdstring uuid requiredThe transaction id of the payment being processed.
paymentStepstring requiredThe name of the payment step being performed.
pageTitlestring requiredThe title of the page, this will be a user friendly message and can be displayed to the end user.
pageInstructionsstring requiredInstructions for the end user to perform, this will be a user friendly message and can be displayed to the end user.
pageActionTextstring requiredThe action type, this could typically be used as the text for a button or link. This will be a user friendly message and can be displayed to the end user.
displayTypestring requiredThe display type which indicates what sort of action should be taken.
formwill require asking the user for input,promptwill require instructing the user to perform an action (e.g. accept a push message) andbusywill require asking the user to wait.values"form""prompt""busy"inputFieldsarray of InputFieldIf the object is of the
formdisplay type the input fields the user would need to complete will be returned in this array.Fields of
InputFieldnamestring requiredThe name of the transaction input field.
labelstringThe display name of the transaction input field, this will be a user friendly message and can be displayed to the end user.
fieldTypestring requiredvalues"text""select""imagecapture""iframe""partialtext"propertiesany of required
X-Correlation-IDheaderThe correlation id for the request that was processed.
idstring uuid requireda unique identifier for this particular occurrence of the problem.
linksobject nullablePresent on an authentication or authorisation failure, and null otherwise.
aboutstring uriA link that leads to further details about this particular occurrence of the problem. When derefenced, this URI SHOULD return a human-readable description of the error.
typestring uriA link that identifies the type of error that this particular error is an instance of. This URI SHOULD be dereferencable to a human-readable explanation of the general error.
codestring requiredAn application-specific error code, expressed as a string value. Key on this rather than on
titleordetail, which are written for a person. A rejection at the transport level uses the status name, one ofBadRequest,Unauthorized,Forbidden,NotFound,NotAllowed,Conflict,UnsupportedMediaType,BadGatewayorInternalServerError. An operation refusing a request on its own rules returns a code of its own.titlestring requiredA short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detailstring requiredA human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.
sourceobject nullableWhere in the request the problem was found. All three keys are present whenever
sourceis, with the ones that do not apply set to null.sourceitself is null where the failure is not about a part of the request.pointerstring json-pointer nullablea JSON PointerJSON Pointer A path into a JSON document, written as
/data/attributes/title. An error response uses one to say exactly which value caused the problem.RFC 6901 RFC6901 to the value in the request document that caused the error [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute]. This MUST point to a value in the request document that exists; if it doesn’t, the client SHOULD simply ignore the pointer.parameterstring nullableA string indicating which URI query parameter caused the error.
headerstring nullableA string indicating the name of a single request header which caused the error.
metaobject nullableA meta object containing non-standard meta-information about the error. Null where the request carried no
X-Correlation-ID, and on an authentication failure, which does not echo it.correlationIdstringThe
X-Correlation-IDsent with the request, echoed back so it can be quoted to support. Absent when the request carried no correlation header.
{
"id": "3a6c9e01-5f2b-4d8a-9c47-1e0b7d5a2f83",
"links": null,
"code": "BadRequest",
"title": "Bad Request",
"detail": "amount: Amount must be greater than 0",
"source": {
"pointer": "/amount",
"parameter": null,
"header": null
},
"meta": {
"correlationId": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
}X-Correlation-IDheaderThe correlation id for the request that was processed.
idstring uuid requireda unique identifier for this particular occurrence of the problem.
linksobject nullablePresent on an authentication or authorisation failure, and null otherwise.
aboutstring uriA link that leads to further details about this particular occurrence of the problem. When derefenced, this URI SHOULD return a human-readable description of the error.
typestring uriA link that identifies the type of error that this particular error is an instance of. This URI SHOULD be dereferencable to a human-readable explanation of the general error.
codestring requiredAn application-specific error code, expressed as a string value. Key on this rather than on
titleordetail, which are written for a person. A rejection at the transport level uses the status name, one ofBadRequest,Unauthorized,Forbidden,NotFound,NotAllowed,Conflict,UnsupportedMediaType,BadGatewayorInternalServerError. An operation refusing a request on its own rules returns a code of its own.titlestring requiredA short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detailstring requiredA human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.
sourceobject nullableWhere in the request the problem was found. All three keys are present whenever
sourceis, with the ones that do not apply set to null.sourceitself is null where the failure is not about a part of the request.pointerstring json-pointer nullablea JSON PointerJSON Pointer A path into a JSON document, written as
/data/attributes/title. An error response uses one to say exactly which value caused the problem.RFC 6901 RFC6901 to the value in the request document that caused the error [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute]. This MUST point to a value in the request document that exists; if it doesn’t, the client SHOULD simply ignore the pointer.parameterstring nullableA string indicating which URI query parameter caused the error.
headerstring nullableA string indicating the name of a single request header which caused the error.
metaobject nullableA meta object containing non-standard meta-information about the error. Null where the request carried no
X-Correlation-ID, and on an authentication failure, which does not echo it.correlationIdstringThe
X-Correlation-IDsent with the request, echoed back so it can be quoted to support. Absent when the request carried no correlation header.
{
"id": "1cecc2b7-1c29-418a-b26a-bf7546926083",
"links": {
"about": "https://ozow.stoplight.io/docs/one-api/zi18vomr0jm8c-generate-authentication-token",
"type": "https://tools.ietf.org/html/rfc7235#section-3.1"
},
"code": "Unauthorized",
"title": "Unauthorized Request",
"detail": "Authorization header is missing or invalid.",
"source": {
"pointer": null,
"parameter": null,
"header": "Authorization"
},
"meta": null
}X-Correlation-IDheaderThe correlation id for the request that was processed.
idstring uuid requireda unique identifier for this particular occurrence of the problem.
linksobject nullablePresent on an authentication or authorisation failure, and null otherwise.
aboutstring uriA link that leads to further details about this particular occurrence of the problem. When derefenced, this URI SHOULD return a human-readable description of the error.
typestring uriA link that identifies the type of error that this particular error is an instance of. This URI SHOULD be dereferencable to a human-readable explanation of the general error.
codestring requiredAn application-specific error code, expressed as a string value. Key on this rather than on
titleordetail, which are written for a person. A rejection at the transport level uses the status name, one ofBadRequest,Unauthorized,Forbidden,NotFound,NotAllowed,Conflict,UnsupportedMediaType,BadGatewayorInternalServerError. An operation refusing a request on its own rules returns a code of its own.titlestring requiredA short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detailstring requiredA human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.
sourceobject nullableWhere in the request the problem was found. All three keys are present whenever
sourceis, with the ones that do not apply set to null.sourceitself is null where the failure is not about a part of the request.pointerstring json-pointer nullablea JSON PointerJSON Pointer A path into a JSON document, written as
/data/attributes/title. An error response uses one to say exactly which value caused the problem.RFC 6901 RFC6901 to the value in the request document that caused the error [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute]. This MUST point to a value in the request document that exists; if it doesn’t, the client SHOULD simply ignore the pointer.parameterstring nullableA string indicating which URI query parameter caused the error.
headerstring nullableA string indicating the name of a single request header which caused the error.
metaobject nullableA meta object containing non-standard meta-information about the error. Null where the request carried no
X-Correlation-ID, and on an authentication failure, which does not echo it.correlationIdstringThe
X-Correlation-IDsent with the request, echoed back so it can be quoted to support. Absent when the request carried no correlation header.
{
"id": "c47a2e08-9b31-4f6d-85a0-7e2c1d9f3b56",
"links": {
"about": "https://ozow.stoplight.io/docs/one-api/zi18vomr0jm8c-generate-authentication-token",
"type": "https://tools.ietf.org/html/rfc7235#section-3.1"
},
"code": "Forbidden",
"title": "Forbidden Request",
"detail": "Request is forbidden, most likely scope does not match required scope to perform requested action.",
"source": {
"pointer": null,
"parameter": null,
"header": "Authorization"
},
"meta": {
"correlationId": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
}X-Correlation-IDheaderThe correlation id for the request that was processed.
idstring uuid requireda unique identifier for this particular occurrence of the problem.
linksobject nullablePresent on an authentication or authorisation failure, and null otherwise.
aboutstring uriA link that leads to further details about this particular occurrence of the problem. When derefenced, this URI SHOULD return a human-readable description of the error.
typestring uriA link that identifies the type of error that this particular error is an instance of. This URI SHOULD be dereferencable to a human-readable explanation of the general error.
codestring requiredAn application-specific error code, expressed as a string value. Key on this rather than on
titleordetail, which are written for a person. A rejection at the transport level uses the status name, one ofBadRequest,Unauthorized,Forbidden,NotFound,NotAllowed,Conflict,UnsupportedMediaType,BadGatewayorInternalServerError. An operation refusing a request on its own rules returns a code of its own.titlestring requiredA short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detailstring requiredA human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.
sourceobject nullableWhere in the request the problem was found. All three keys are present whenever
sourceis, with the ones that do not apply set to null.sourceitself is null where the failure is not about a part of the request.pointerstring json-pointer nullablea JSON PointerJSON Pointer A path into a JSON document, written as
/data/attributes/title. An error response uses one to say exactly which value caused the problem.RFC 6901 RFC6901 to the value in the request document that caused the error [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute]. This MUST point to a value in the request document that exists; if it doesn’t, the client SHOULD simply ignore the pointer.parameterstring nullableA string indicating which URI query parameter caused the error.
headerstring nullableA string indicating the name of a single request header which caused the error.
metaobject nullableA meta object containing non-standard meta-information about the error. Null where the request carried no
X-Correlation-ID, and on an authentication failure, which does not echo it.correlationIdstringThe
X-Correlation-IDsent with the request, echoed back so it can be quoted to support. Absent when the request carried no correlation header.
{
"id": "2f8b6d40-1c7e-49a5-b03f-8d5a2e1c9704",
"links": null,
"code": "Conflict",
"title": "Conflict",
"detail": "Idempotency key and request data do not match a previous request.",
"source": {
"pointer": null,
"parameter": null,
"header": "Idempotency-Key"
},
"meta": {
"correlationId": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
}X-Correlation-IDheaderThe correlation id for the request that was processed.
idstring uuid requireda unique identifier for this particular occurrence of the problem.
linksobject nullablePresent on an authentication or authorisation failure, and null otherwise.
aboutstring uriA link that leads to further details about this particular occurrence of the problem. When derefenced, this URI SHOULD return a human-readable description of the error.
typestring uriA link that identifies the type of error that this particular error is an instance of. This URI SHOULD be dereferencable to a human-readable explanation of the general error.
codestring requiredAn application-specific error code, expressed as a string value. Key on this rather than on
titleordetail, which are written for a person. A rejection at the transport level uses the status name, one ofBadRequest,Unauthorized,Forbidden,NotFound,NotAllowed,Conflict,UnsupportedMediaType,BadGatewayorInternalServerError. An operation refusing a request on its own rules returns a code of its own.titlestring requiredA short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.
detailstring requiredA human-readable explanation specific to this occurrence of the problem. Like title, this field’s value can be localized.
sourceobject nullableWhere in the request the problem was found. All three keys are present whenever
sourceis, with the ones that do not apply set to null.sourceitself is null where the failure is not about a part of the request.pointerstring json-pointer nullablea JSON PointerJSON Pointer A path into a JSON document, written as
/data/attributes/title. An error response uses one to say exactly which value caused the problem.RFC 6901 RFC6901 to the value in the request document that caused the error [e.g. "/data" for a primary data object, or "/data/attributes/title" for a specific attribute]. This MUST point to a value in the request document that exists; if it doesn’t, the client SHOULD simply ignore the pointer.parameterstring nullableA string indicating which URI query parameter caused the error.
headerstring nullableA string indicating the name of a single request header which caused the error.
metaobject nullableA meta object containing non-standard meta-information about the error. Null where the request carried no
X-Correlation-ID, and on an authentication failure, which does not echo it.correlationIdstringThe
X-Correlation-IDsent with the request, echoed back so it can be quoted to support. Absent when the request carried no correlation header.
{
"id": "9e0d5a83-6b24-4c19-8f7a-2d1b3e6c0a97",
"links": null,
"code": "InternalServerError",
"title": "Internal Server Error",
"detail": "Error occurred while processing request.",
"source": {
"pointer": "/data",
"parameter": null,
"header": null
},
"meta": {
"correlationId": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
}