Akahu · Schema
OneOffPaymentRequest
A request for payment from the user
CompanyFinanceOpen BankingNew ZealandAPI
Properties
| Name | Type | Description |
|---|---|---|
| payee | object | The payee's details |
| payer | object | The payer's details |
| amount | number | The amount to be paid in dollars, e.g. 12.34. (Rounded to 2 decimal places). |
| redirect_uri | string | The URI to redirect the user to after payment approval |
| redirect_mode | object | |
| webhook_uri | string | The URI to send webhooks regarding updates to this payment |
| expires_at | string | The payment will be cancelled at this time, unless it has been authorised. Defaults to 1 hour in the future. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/akahu/main/json-schema/akahu-one-off-payment-request-schema.json",
"title": "OneOffPaymentRequest",
"description": "A request for payment from the user",
"x-generated": "2026-10-27",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/akahu-one-off-payments-api-openapi.yml#/components/schemas/OneOffPaymentRequest",
"type": "object",
"properties": {
"payee": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 70,
"pattern": "^[A-Za-z0-9 '\\.,&\\-_]*$",
"description": "The name of the payee"
},
"account_number": {
"$ref": "#/$defs/BankAccountNumber"
},
"particulars": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Particulars field that will go on the payee's bank statement"
},
"code": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Code field that will go on the payee's bank statement"
},
"reference": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Reference field that will go on the payee's bank statement"
}
},
"required": [
"name",
"account_number"
],
"description": "The payee's details"
},
"payer": {
"type": "object",
"properties": {
"bank": {
"$ref": "#/$defs/OneOffPaymentBank"
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 70,
"pattern": "^[A-Za-z0-9 '\\.,&\\-_]*$",
"description": "The name of the payer"
},
"account_number": {
"allOf": [
{
"$ref": "#/$defs/BankAccountNumber"
},
{
"description": "The bank account number of the payer"
}
]
},
"release_account_details": {
"type": "boolean",
"default": false,
"description": "Request that the bank releases the payer's account details. These details will be populated in the `payer.name` and `payer.account_number` fields of the payment once available. Payer account release cannot be requested when the payer account number is specified as part of the initial payment request."
},
"particulars": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Particulars field that will go on the payer's bank statement"
},
"code": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Code field that will go on the payer's bank statement"
},
"reference": {
"type": "string",
"maxLength": 12,
"pattern": "^[A-Za-z0-9 \\-_]*$",
"description": "The Reference field that will go on the payer's bank statement"
}
},
"description": "The payer's details"
},
"amount": {
"type": "number",
"minimum": 0.01,
"maximum": 1000000,
"description": "The amount to be paid in dollars, e.g. 12.34. (Rounded to 2 decimal places)."
},
"redirect_uri": {
"type": "string",
"format": "uri",
"description": "The URI to redirect the user to after payment approval"
},
"redirect_mode": {
"$ref": "#/$defs/OneOffPaymentRedirectMode"
},
"webhook_uri": {
"type": "string",
"format": "uri",
"description": "The URI to send webhooks regarding updates to this payment"
},
"expires_at": {
"type": "string",
"format": "date-time",
"description": "The payment will be cancelled at this time, unless it has been authorised. Defaults to 1 hour in the future."
}
},
"required": [
"payee",
"amount",
"redirect_uri"
],
"$defs": {
"BankAccountNumber": {
"type": "string",
"pattern": "^\\d{2}-\\d{4}-\\d{7}-\\d{2,3}$",
"description": "The bank account number of the payee"
},
"OneOffPaymentBank": {
"type": "string",
"enum": [
"anz",
"asb",
"bnz",
"kiwibank",
"nzhl",
"westpac",
"demo_bank"
],
"description": "The bank the customer must use to make this payment"
},
"OneOffPaymentRedirectMode": {
"type": "string",
"enum": [
"deep_link"
],
"description": "The mode used by Akahu when redirecting the user to your provided `redirect_uri`.\nThis option is important for native mobile app developers.\n - `deep_link` → Specify this value if your provided `redirect_uri` intends to activate your native mobile application via iOS [universal link](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content/) or Android [app link](https://developer.android.com/training/app-links/about). When you supply this value, the user will be required to tap to confirm before returning to your application. This interaction is important to ensure successful native app activation."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/akahu-one-off-payment-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.