Demo Bank
Find out how to use Akahu's Demo Bank to test your integration
For non-production environments, Akahu offers a Demo Bank connection for application development and testing. Demo Bank can be used for both one-off and enduring connections. It is also possible to connect to Demo Bank in MyAkahu for Personal App development.
Demo Bank is useful for testing purposes, however it does not fully mimic the behaviour of live connections. Please check our feature support table to see what functionality is currently available. We strongly recommend that you test your application with real institutions before going live.
Connecting to Demo Bank
There are two ways to connect to Demo Bank:
-
For Personal Apps, you can connect by logging in to MyAkahu, navigating to the "Developers" page and adding a new Demo Bank connection. After Demo Bank is connected to your Akahu account, you must also select and share specific Demo Bank accounts with your Personal App via the "Developers" page.
-
For Full Apps, you can connect Demo Bank during the Akahu OAuth flow. Demo Bank will only be available as a connection for non-production environments.
When connecting to Demo Bank, you'll be prompted to enter a username and password. You may enter any value into these fields to continue. In order to simulate an incorrect credential error, the password "Password1" can be entered.
The next screen will simulate a multi-factor authentication screen by asking a simple math question. You must answer this question correctly to complete the connection flow.
Feature support
The following features are supported for Demo Bank connections.
| Enduring access | One-off access | |
|---|---|---|
| Account data | ✅ | ✅ |
| Transaction data | ✖️ | ✅ |
| Party (identity) data | ✅ | ✅ |
| Payments | ✅ | ✅ |
| Webhooks | ✅ | N/A |
For further information about using Demo Bank with enduring access features, please see the enduring access section below.
Enduring access
The information below is relevant if you are using Demo Bank connections with enduring access.
Accounts
Demo Bank has 4 static accounts:
| Name | Account Number | Type | Notes |
|---|---|---|---|
| Demo Checking | 99-9999-9999999-91 | CHECKING | A checking account is useful for testing payments |
| Demo Savings | 99-9999-9999999-92 | SAVINGS | A savings account that can't make payments |
| Demo Overdrawn | 99-9999-9999999-93 | CHECKING | A checking account that has a negative balance |
| Demo Kiwisaver | 99-9999-9999999-94 | KIWISAVER | A KiwiSaver account which cannot make payments |
Transactions
Transaction data is not currently supported for Demo Bank accounts connected with enduring access.
Transaction related API endpoints will not return any data for Demo Bank accounts.
Payments
Demo Bank has both a classic connection and an official open banking connection, matching the two ways that Akahu connects to real banks. Your app's configuration determines which one your users connect to, and payment outcomes differ between them. One-off payments always use the official connection.
Choosing a destination account
You should always pay a real NZ bank account number. Attempting to pay a Demo Bank account number will fail bank-account validation with an HTTP 400 error.
Magic amounts
Demo Bank forces a scripted payment outcome when the amount matches one of the codes below. Amounts are matched to two decimal places, and a leading 105. is treated as an alias for 5. (so 105.15 behaves as 5.15), handy when a demo should not look like it is moving loose change.
Each outcome is listed as status / status code. Enduring payments report the code in status_code, and one-off payments report it in status_reason.code.
| Amount | Description | Official (One-Off) | Official (Enduring) | Classic |
|---|---|---|---|---|
| 5.01 | Payment creation fails | 500 error response | 500 error response | 500 error response |
| 5.02 | Internal error | FAILED / INTERNAL_ERROR | ERROR / INTERNAL_ERROR | ERROR / INTERNAL_ERROR |
| 5.03 | Bank error | FAILED / BANK_ERROR | ERROR / BANK_ERROR | ERROR / BANK_ERROR |
| 5.04 | Indeterminate bank error | FAILED / BANK_ERROR_INDETERMINATE | ERROR / BANK_ERROR_INDETERMINATE | ERROR / BANK_ERROR_INDETERMINATE |
| 5.11 | Account not allowed to make payments | N/A | N/A | DECLINED / INVALID_ACCOUNT |
| 5.14 | Source and destination are the same account | N/A | N/A | DECLINED / INVALID_ACCOUNT |
| 5.15 | Insufficient funds* | FAILED / REJECTED | DECLINED / REJECTED | DECLINED / INSUFFICIENT_FUNDS |
| 5.16 | Single limit exceeded | N/A | DECLINED / SINGLE_LIMIT_EXCEEDED | DECLINED / SINGLE_LIMIT_EXCEEDED |
| 5.17 | Consent limit exceeded | N/A | DECLINED / PERIOD_LIMIT_EXCEEDED | DECLINED / DAILY_LIMIT_EXCEEDED |
| 5.19 | Consent no longer valid | N/A | DECLINED / CONSENT_REVOKED | DECLINED / AUTHENTICATION_FAILED |
| 5.20 | Short delay, then settles | 30s delay, then SENT | 30s delay, then SENT | 30s delay, then SENT |
| 5.22 | Short delay, then fails | 30s delay, then FAILED / REJECTED | 30s delay, then DECLINED / REJECTED | 30s delay, then DECLINED / INSUFFICIENT_FUNDS |
| 5.23 | Long delay, then settles | 180s delay, then SENT | 180s delay, then SENT | 180s delay, then SENT |
| 5.24 | Long delay, then fails | 180s delay, then FAILED / REJECTED | 180s delay, then DECLINED / REJECTED | 180s delay, then DECLINED / INSUFFICIENT_FUNDS |
*The NZ Open Banking standards do not reveal the reason for a payment rejection, so the equivalent status code for the official connection is REJECTED rather than INSUFFICIENT_FUNDS. See payment status for more on this.
Since these payments are simulated, the source account balance will not change after the payment is made.
Demo Bank does not contain real money.
Webhooks
| Supported | Not supported |
|---|---|
| TOKEN | TRANSACTION |
| ACCOUNT | |
| PAYMENT |
Updated 17 days ago