# Check payout status Endpoint: GET /payouts/{payoutId} Version: v1 Security: bearerAuth ## Path parameters: - `payoutId` (string, required) The payoutId of the payout you want to check the status of. ## Response 200 fields (application/json): - `payoutId` (string, required) The payoutId which was used to initiate this payout. Example: "f4401bd2-1568-4140-bf2d-eb77d2b2b639" - `status` (string, required) Possible payout statuses: * ACCEPTED - The payout request has been accepted by Blu Penguin for processing. * ENQUEUED - The payout request has been accepted, but has been enqueued for processing later. Read more about [enqueued payouts](https://docs.transaction-monitor.io/payouts#enqueued-payouts). * SUBMITTED - The payout request has been submitted to the MMO and is being processed. * COMPLETED - The payout request has been successfully processed. This is a Final state. * FAILED - The payout request has been processed, but failed. Final state. Enum: "ACCEPTED", "SUBMITTED", "ENQUEUED", "COMPLETED", "FAILED" - `amount` (string, required) The amount to be collected (deposit) or disbursed (payout or refund). Amount must follow below requirements or the request will be rejected: * Between zero and two decimal places can be supplied, depending on what the specific MMO supports. Learn about all [MMO supported decimal places](https://docs.transaction-monitor.io/using_the_api#correspondents). * The minimum and maximum amount depends on the limits of the specific MMO. You can find them from the [Active Configuration](#/paths/~1active-conf/get) endpoint. * Leading zeroes are not permitted except where the value is less than 1. For any value less than one, one and only one leading zero must be supplied. * Trailing zeroes are permitted. Valid examples: 5, 5.0, 5.00, 5.5, 5.55, 5555555, 0.5 Not valid examples: 5., 5.555, 5555555555555555555, .5, -5.5, 00.5, 00.00, 00001.32 Example: "15" - `currency` (string, required) The currency in which the amount is specified. Format must be the ISO 4217 three character currency code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). You can find all the supported currencies that the specific correspondent supports [from here](https://docs.transaction-monitor.io/using_the_api#correspondents). The [active configuration](#/paths/~1active-conf/get) endpoint provides the list of correspondents configured for your account together with the currencies. Example: "ZMW" - `country` (string, required) The country in which the MMO operates. Format is ISO 3166-1 alpha-3, three character country code in upper case. Read more from [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3#Officially_assigned_code_elements). Example: "ZMB" - `correspondent` (string, required) The correspondent code refers to the specific MMO that the specified phone number (MSISDN) has an active mobile money wallet with. You can find all the supported correspondents [listed here](https://docs.transaction-monitor.io/using_the_api#correspondents). The [active configuration](#/paths/~1active-conf/get) endpoint provides the list of correspondents configured for your account. You can use the [predict correspondent](#/paths/~1v1~1predict-correspondent/post) enpoint to predict the correct correspondent to use based on the phone number (MSISDN). Example: "MTN_MOMO_ZMB" - `recipient` (object, required) The phone number (MSISDN) of the recipient or payer must be specified as the value of the address. - `recipient.type` (string, required) The type of financial address. At the moment, only MSISDN is supported as the financial address. Enum: "MSISDN" - `recipient.address` (object, required) - `recipient.address.value` (string, required) The phone number (MSISDN) of the payer or recipient. The format is described in [Wikipedia](https://en.wikipedia.org/wiki/MSISDN). MSISDN validation has following rules: * Only digits without whitespaces or any other separators or prefixes like '+'. * Should not start with zero. * Country code is mandatory. * Should not exceed or be less than the valid length of specified country. Valid examples for Zambia: 260763456789 Not valid examples for Zambia: +260763456789, 260 763 456789, 260-7634-56789, 0260763456789, 2607634567, 260763456789543, 999558708954, 37255870895 Example: "260763456789" - `customerTimestamp` (string, required) The timestamp for when you initiated the payout process. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6). Example: "2020-02-21T17:32:28Z" - `statementDescription` (string) Short description for the transaction. Depending on the specific MMO performing the transaction this message may be visible to the customer in the SMS receipt or within their transaction history. Must be between 4 and 22 alphanumeric characters. Example: "Note of 4 to 22 chars" - `created` (string, required) The timestamp of when the payout was created in the Blu Penguin platform. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6). Example: "2020-02-21T17:32:29Z" - `receivedByRecipient` (string) When the payment was received by the recipient. Format defined by 'date-time' in RFC3339 section 5.6 from [IETF](https://tools.ietf.org/html/rfc3339#section-5.6). Example: "2020-02-21T17:32:30Z" - `correspondentIds` (object) The unique ID for this financial transaction assigned by the MMO. Example: {"MTN_INIT":"ABC123","MTN_FINAL":"DEF456"} - `failureReason` (object) - `failureReason.failureCode` (string, required) Possible payout failure codes: * BALANCE_INSUFFICIENT - The Blu Penguin wallet balance is insufficient to proceed with the payout. * RECIPIENT_NOT_FOUND - The financial address (phone number) specified as the recipient does not belong to the MMO specified as the correspondent. * RECIPIENT_NOT_ALLOWED_TO_RECEIVE - The recipient has reached a limit on their wallet that stops them from being able to accept this payout. * MANUALLY_CANCELLED - The payout request was enqueued and subsequently cancelled from the Blu Penguin Dashboard or through the [Cancel Enqueued Payout](#/paths/~1payouts~1fail-enqueued~1%7BpayoutId%7D/post) endpoint. * OTHER_ERROR - Any other error. Please refer to failureMessage. Enum: "BALANCE_INSUFFICIENT", "RECIPIENT_NOT_FOUND", "RECIPIENT_NOT_ALLOWED_TO_RECEIVE", "MANUALLY_CANCELLED", "OTHER_ERROR" - `failureReason.failureMessage` (string) Additional optional failure message Example: "Recipient's address is blocked" - `metadata` (object) The metadata that was provided in the original initation request in a JSON object format. Example: {"orderId":"ORD-123456789","customerId":"customer@email.com"} - `metadata.value of fieldName` (string) Each passed in metadata field will be a property of the metadata JSON object. The key will be the 'fieldName' and the value will be 'fieldValue'. ## Response 400 fields (application/json): - `errorId` (string, required) A unique error ID in the Blu Penguin platform. Example: "63743264-7292-11ea-bc55-0242ac130003" - `errorCode` (integer, required) Blu Penguin internal error code. Example: 1 - `errorMessage` (string, required) Error message. Example: "Internal error" ## Response 401 fields (application/json): - `errorId` (string, required) A unique error ID in the Blu Penguin platform. Example: "63743264-7292-11ea-bc55-0242ac130003" - `errorCode` (integer, required) Blu Penguin internal error code. Example: 1 - `errorMessage` (string, required) Error message. Example: "Internal error" ## Response 403 fields (application/json): - `errorId` (string, required) A unique error ID in the Blu Penguin platform. Example: "63743264-7292-11ea-bc55-0242ac130003" - `errorCode` (integer, required) Blu Penguin internal error code. Example: 1 - `errorMessage` (string, required) Error message. Example: "Internal error" ## Response 500 fields (application/json): - `errorId` (string, required) A unique error ID in the Blu Penguin platform. Example: "63743264-7292-11ea-bc55-0242ac130003" - `errorCode` (integer, required) Blu Penguin internal error code. Example: 1 - `errorMessage` (string, required) Error message. Example: "Internal error"