Ozow Hub
POST Ozow sendsyour notification URL
Build with AI 1 package

A build package is every page for one task, with the API operations they use. Copy the prompt into a coding assistant, or hand it the package itself: slim links to each page, full inlines all of them in one document.

  • Migrate refunds from the Payments API to One APIEverything needed to move an existing refunds integration onto One API, with the legacy guide and its One API counterpart side by side.
    View package

Sent to the notification URLWebhook A URL of yours that Ozow calls when something happens, rather than you polling to find out. The call carries no credential of yours and arrives at a public URL, so authenticate it before acting on it: a hash field on the Payments API, a Svix signature on One API. given on the refund request, once the refund has either completed or failed.

Verify the hash field before acting on the contents. Concatenate the notification fields in the order they appear, excluding isRtc and hash, append your private key, lowercase the result, and compare a SHA512SHA-512 A hashing algorithm. Ozow uses it to sign the values in a request or a notification so you can tell that they arrived unaltered and came from us. Hashing is one-way: the hash cannot be turned back into what produced it.Wikipedia of it against the value received.

Authentication

Ozow sends no credential with this call, so this check is the only thing standing between a real delivery and a stranger’s. Verify the Hash field before acting on the contents: your notification URL is public, and anyone can post to it.

Payload

application/x-www-form-urlencoded

  • RefundId string uuid required

    The refund identifier.

  • TransactionId string uuid required

    The transaction identifier of the transaction that is being refunded.

  • CurrencyCode string required

    The refund currency. Will always be the same as the amount in the transaction.

    max length3
  • Amount number double required

    The refund amount, in the currency the currency codeISO 4217 The three-letter currency codes, such as ZAR for the South African rand. Always uppercase.Wikipedia names. Written with two decimal places, which is the form the hash is built from.

  • IsRtc string required

    An indication of whether RTCReal-Time Clearing Payments that clear immediately rather than waiting for a batch. A batch run settles at set times through the day; a Real-Time Clearing payment moves the funds between the two bank accounts as it is made, so the recipient can rely on them straight away.PayInc was used to pay the refund.

  • Status string required

    The refund status. Sent as the name, not as a number, because the notification is form encoded and the status is written out in full.

    values"Pending""Submitted""Complete""Failed""Cancelled""Returned""PendingInvestigation""Invalid""Error"
  • BankName string required

    The name of the bank the refund was paid to.

    max length50
  • AccountNumber string required

    The masked account number payment was made to. The hash is built from the masked value, so hash what you received rather than the number you sent.

    max length50
  • StatusMessage string

    Message regarding the status of the refund. This field will not always have a value.

    max length500
  • Hash string required

    SHA512SHA-512 A hashing algorithm. Ozow uses it to sign the values in a request or a notification so you can tell that they arrived unaltered and came from us. Hashing is one-way: the hash cannot be turned back into what produced it.Wikipedia hash used to ensure that certain fields in the message have not been altered after the hash was generated.

    max length128

Verify the hash

Ozow sends no credential with this call, so Hash is the only thing that tells you the notification came from Ozow. Recompute it and compare before you act on anything else in the body.

  1. Concatenate the fields in the table below, in that order. A field with no value contributes an empty string rather than being skipped.
  2. Append your private key.
  3. Convert the whole string, your private key included, to lowercase.
  4. Take the SHA512 of it and write the digest as hexadecimal.
  5. Compare that against Hash, ignoring case.
PositionField
1RefundId
2TransactionId
3CurrencyCode
4Amount, with two decimal places
5Status
6BankName
7AccountNumber
8StatusMessage
9Your private key

Important

IsRtc arrives in the same body and is not part of the hash. Including it gives a digest that never matches.

Hash calculator builds this string field by field, so you can compare it against the one your code produces.

Your response

200 Acknowledged. Return this once you have stored the notification.

No body.

Guides