{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"cf64e20c-fbe2-4dae-a989-527c52f0dc06","name":"Prunny Platform","description":"The Prunny Platform APIs allows application providers leverage the Prunny  platform to build mobile and web applications for their customers.\n\nAll data presented here are dummy values.\n\nSuggestions and comments are welcomed. To contribute or know more, kindly email support@prunny.com or visit [Prunny Platform](https://prunny.com)\n\n# Getting started\n\n1. Register a profile on Prunny Platform: You can visit [Prunny Platform](https://www.prunny.com) to sign-up if you are not already registered.\n\n---\n\n# Environments\nWe  provide multiple sandboxes that allow you to explore, develop and integrate with your applications, before progressing to test against your Prunny **LIVE** profile. Kindly note the following specifications:\n\n\n| Environment      |What's it for? |  Url |\n| :---        |    :----   |    :----   |\n| Sandbox/Demo Environment | Request a token to explore the API set, make and receive data from Prunny demo environment. All transactions and request are made against mock services.Response received from the API/Services are not real world transactions.       |https://api-demo.punny.com |\n| Live Environment | |https://api.punny.com |\n\n---\n\n# Authentication\nAuthentication to the Prunny Platform API is performed via Bearer Authentication. Every endpoint requires authentication, so you will need to add the following header to each request:\n\n`Authorization: Bearer <APIKey>`\n\n---\n\n# Data Types\nAll of the API responses returned are in `JSON` format, with these data types defined below:\n\n|Type    | Description|\n| ----------- | ----------- |\n|string    | A UTF-8 encoded string|\n|number    | An integer|\n|datetime    | An ISO8601 encoded DateTime. All datetimes are returned in UTC with offset +00:00 |\n|decimal    | All monetary values are returned with up to two decimal places and may be positive (20.78) or negative (-32.50) |\n\n\n# Data Length\n\n|Type    | Description|Length\n| ----------- | ----------- | ----------- |\n|Text fields    |string| max-length 255 characters\n|BVN    |integers starting with 1 or 2 |11 digits.\n|DMB Account Number    | integers | 10 digits.\n|OFI Account Number    | integers | 15 digits.\n\n\n---\n\n# Paging\nFor endpoints that provide several records, the response may be paged depending on the total number of records that the server can return at a time. This means that to retrieve the full set of items for a given resource you may be required to make several requests.\n\n## URL Parameters\n| Parameters | Description |\n|-------------|-------------|\n|page|    The page number you wish to retrieve|\n|limit|The number of items to return in a page|\n|signature|Used to guarantee consistency of the data being returned|\n\n## Response\n| Field    | Type | Description\n|-------------|-------------|-------------|\n|responseData|array|The actual data items you have requested|\n|_meta|object|Key/value information that is not essential to understanding the resources returned but offers additional detail|\n|_links|array|A collection of links that you can use to navigate the paged data|\n\n## _meta\n| Field    | Type | Description\n|-------------|-------------|-------------|\n|totalNumberOfRecords |number |The total number of data items in the collection |\n|totalNumberOfPages |number |The number of pages in the collection |\n|pageNumber |number | The current page number|\n| pageSize|number |The current page size |\n\n## _links\n| Field    | Type | Description\n|-------------|-------------|-------------|\n|rel|string|The relation of the linked resource to the current resource |\n|href|string|The absolute URI of the related resource |\n\n## Navigating through pages\n* If you are on the first page, the \"prev\" link will not be present in the response.\n* If you are at the final page, the \"next\" link will not be present in the response\n* If there are no pages and all data is returned neither \"prev\" or \"next\" links will be present in the response\n\n---\n\n# Errors\nErrors in the API are expressed as a combination of HTTP status codes and an accompanying JSON body providing required detail where possible. You should be able to rely on the HTTP status code alone to determine the cause of the problem.\n\n## Error Response Fields\n\n| Field    | Type |\n|-------------|-------------|\n| message    | `string`    A human-readable message as to the specifics of the problem. For example, it may contain a detail description of what caused the problem |\n| status number | The HTTP status code used in the response |\n| errorCode    number    | The specific Open Banking Nigeria error code for the problem\n\n---\n\n# Expansion Fields\nThis would help to pass on proprietary information or additional processing directives unique to the specific implementation.\n\nThe `expansionFields` are optional and are a collection which means multiple instances of these fields may be included in any message.\n\n## Response Body Fields\n| Field |Type |Description |\n| ----------- | ----------- | ----------- |\n|id| string | A unique identifier for the extra field |\n|description| string | A description of the extra field |\n|type| string | A type of field but defined by the bank |\n|value| string | The value of the extra field |\n\nFor this documentation, the `expansionFields` will not be included in the Response Body Fields\n\n---\n# Response Code\nFind in the table below the possible response codes usually formatted as `status` and their respective descriptions. They follow the `8583 standards`.\n\n| Code | Description |\n| ----------- | ----------- |\n| 00 | Approved or completed successfully |\n| 01 | Status unknown, please wait for settlement report |\n| 07 | Invalid Account |\n| 09 | Request processing in progress |\n| 12 | Invalid transaction |\n| 16 | Unknown Bank Code |\n| 21 | No action is taken |\n| 51 | No sufficient funds |\n| 61 | Transfer limit Exceeded |\n| 69 | Unsuccessful Account/Amount block |\n| 70 | Unsuccessful Account/Amount unblock |\n| 94 | Duplicate transaction |\n| 96 | System malfunction |\n| 97 | Timeout waiting for a response from destination |\n| 98 | Account already exists |\n| 99 | Invalid Source Account |\n| 100 | Invalid Beneficiary Account |\n| 101 | Unsuccessful Source Account/Amount block |\n| 102 | Unsuccessful Source Account/Amount block |\n| 103 | Debit ok |\n\n---\n# Request Timestamp\nThe time stamp (or expiration time) you use in the request must be a dateTime object, with the complete date plus hours, minutes, and seconds (for more information, see http://www.w3.org/TR/xmlschema-2/#da- teTime).\n<br/>\nFor example: **2007-01-31T23:59:59Z** .\n<br/>\n\nAlthough it's not required, we recommend you provide the time stamp in the Coordinated Universal Time (Greenwich Mean Time) time zone.\nThe request automatically expires 5 minutes after the time stamp (in other words, Punny does not process a request if the request time stamp is more than 5 minutes earlier than the current time on Punny servers). Make sure your server's time is set correctly.\n\n> Important\n> <br/>\n> If you're using `.NET` you must not send overly specific time stamps, due to different interpretations of how extra time precision should be dropped.\n<br/>\n> To avoid overly specific time stamps, manually construct dateTime objects with no more than millisecond precision.\n\n---\n\n---\n# Idempotency\n\nPunny Platform API supports idempotency for safely retrying `POST` transactions without accidentally performing the same operation twice. This is useful when an API call is disrupted, and you do not receive a response. For example, `request_time_out` or `response_received_too_late`. Therefore, if you do not get a response message for a transaction, you can retry the request with the same idempotency key, and you are guaranteed that no more than one transaction would be posted.\n\nTo perform an idempotent request, provide an additional Idempotency-Key: <key> header to the request.\n\nPunny Platform API idempotency works by saving the resulting status code and body of the first request made for any given idempotency key, regardless of whether it succeeded or failed. Subsequent requests with the same key should return the same result, including Server (`500`) errors.\n\nIdempotency keys would never expire, so a new request that is generated if a key is reused outside of that time frame would fail.\n\nResults are only saved if an API endpoint started executing. If incoming parameters failed validation, or the request conflicted with another that was executing concurrently, no idempotent result is saved because no API endpoint began execution. It is safe to retry these requests.\n\nAll `POST` requests accept idempotency keys and all transaction API calls must have idempotency keys. Sending idempotency keys in `GET` and `DELETE` requests has no effect and should be avoided, as these requests are idempotent by definition.\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"14168781","team":1504817,"collectionId":"cf64e20c-fbe2-4dae-a989-527c52f0dc06","publishedId":"TWDTNzVq","public":true,"publicUrl":"https://developers.prunny.com","privateUrl":"https://go.postman.co/documentation/14168781-cf64e20c-fbe2-4dae-a989-527c52f0dc06","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2021-02-16T15:51:35.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/6e01c1ee3040d51149fa471989f3faf95e939029ce5b0872481f245b8e789be8","favicon":"https://prunny.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://developers.prunny.com/view/metadata/TWDTNzVq"}