# Request Payout

> POST `/requestpayout`
> Part of the Payouts API reference. Source: https://hub.ozow.com/api-reference/payouts-api/post-requestpayout/

Server: `https://payoutsapi.ozow.com/v1` (Production)

Other environments: `https://stagingpayoutsapi.ozow.com/v1` (Staging)

Request a payout of the specified amount to the destination.

## Authentication

- `ApiKey` (API key in the ApiKey header)

## Header parameters

- `SiteCode` (string, required) - A unique code for the site currently in use. A site code is generated when adding a site in the Ozow merchant admin section. [Please contact support for SiteCode - support@ozow.com]

## Request body

- `siteCode` (string, required, max length 50) - A unique code for the site currently in use. A site code is generated when adding a site in the Ozow merchant admin section. [Please contact support for SiteCode - support@ozow.com]
- `amount` (number, double, required) - The payout amount in ZAR.
- `merchantReference` (string, required, max length 20) - The merchant's reference for the transaction.
- `customerBankReference` (string, required, max length 20, pattern ^[A-Za-z0-9 -]+) - The reference that will appear on the customer’s bank statement. Only alphanumeric characters, spaces and dashes are allowed.
- `isRtc` (boolean, required) - Whether the payout should be processed as an RTC payout. ***RTC is not available in the staging environment so should always be set to false when testing in this environment***
- `notifyUrl` (string, uri, max length 150) - The URL that we should use to post all payout notifications.
- `bankingDetails` (object, required) - Payout destination banking details.
- `hashCheck` (string, required) - SHA512 hash used to ensure that certain fields in the message have not been altered after the hash was generated. Check the generate hash section in the documentation for more details on how to generate the hash.

## Responses

### 200 OK. The request reached the API, which is not the same as the payout being accepted. A rejected payout is also a 200, with the reason in `payoutStatus.errorMessage` and no `payoutId`. Check that field, not the status code.

- `payoutId` (string, uuid, required) - A unique identifier that should be used to identify the payout.
- `payoutStatus` (object, required) - Payout status.

### 400 Bad Request. The request did not reach the API. A required header or query parameter is missing, or the body does not match the expected shape.

- `message` (string) - What was wrong with the request.

### 403 Forbidden. The `SiteCode` and `ApiKey` pair was not accepted.

- `message` (string) - What was wrong with the request.

### 500 Internal Server Error. The gateway could not reach the service or the integration failed. A failure inside the service is not this one. Those come back as a 200 with the reason in the payload, because the gateway maps every integration response it has no other rule for onto 200.

- `message` (string) - What was wrong with the request.
