Available open banking APIs
Our open banking APIs support secure, consent‑based data sharing and payments for third-party providers (TPPs). You can integrate with:
- Account information APIs to access account and transaction data
- Payment APIs to initiate payments from a customer’s Kiwibank account
Learn how customers use open banking.
Get API access
Submit your details to request access to Kiwibank’s open banking APIs. We’ll review your submission and contact you with next steps.
Versions & compatibility
Supported API versions:
- Version 3.0 of the Payments NZ API Centre Open Banking standard (recommended)
- Version 2.3 (compatibility mode) for existing integrations transitioning to Version 3
Compatibility mode includes support for the Hybrid Authentication Flow and is designed to help third-party providers transition to Version 3.0. Learn more about compatibility mode.
Integration details
The sections below cover the technical detail you’ll need to integrate with our APIs, including authentication, security and compatibility options.
Base URI: https://apis.openbanking.prod.kiwibank.co.nz/open-banking-nz/v3.0/
These endpoints are universal across both Kiwibank and NZHL customer realms. Authorisation is controlled via the IDP used during authentication.
Account access
|
POST |
/account-access-consents |
|
GET |
/account-access-consents/{ConsentId} |
|
DELETE |
/account-access-consents/{ConsentId} |
|
GET |
/accounts |
|
GET |
/accounts/{AccountID}/transactions |
|
GET |
/accounts/{AccountId}/balances |
|
GET |
/accounts/{AccountId}/party |
|
GET |
/balances |
|
GET |
/party |
Payments
|
POST |
/enduring-payment-consents |
|
GET |
/enduring-payment-consents/{ConsentId} |
|
DELETE |
/enduring-payment-consents/{ConsentId} |
|
POST |
/domestic-payment-consents |
|
GET |
/domestic-payment-consents/{ConsentId} |
|
POST |
/domestic-payments |
|
GET |
/domestic-payments/{DomesticPaymentId} |
|
GET |
/domestic-payments/{DomesticPaymentId}/debtor-account |
Eventing
|
POST |
/event-subscriptions |
|
GET |
/event-subscriptions |
|
PUT |
/event-subscriptions/{EventSubscriptionId} |
|
DELETE |
/event-subscriptions/{EventSubscriptionId} |
Your design flows must comply with Kiwibank’s timeout constraints across all authentication flows.
|
Consent validity window |
24 hours |
|
Mobile app approval |
4 minutes |
|
Authorisation Code validity |
60 seconds |
|
Decoupled authentication (expires_in) |
5 minutes |
|
Access Token validity |
5 minutes |
|
Refresh Token validity |
12 months |
Kiwibank provides open banking APIs for:
- Kiwibank customers
- NZHL customers
Both customer groups share the same open banking API endpoint but use different IDP realms.
Third-party providers must direct authentication requests to the correct IDP based on the customer being authenticated.
Supported JWS Algorithms
All request objects, client assertions, and signed payloads must use: PS512.
Note: Other algorithms are not supported.
Required changes for TPPs using v2.3 compatibility mode
If you’re a TPP using v2.3 compatibility mode to connect to Kiwibank’s v3 endpoints, you’ll need to implement a few required changes. These ensure your integration works correctly and avoids issues in compatibility mode.
- Extended identifier field lengths
- The account and payment objects must support identifier fields of up to 128 characters.
- This is an increase from the previous limit of 40 characters, and failure to accommodate this will result in fatal errors as the identifiers issued by Kiwibank may be longer than 40 characters.
2. Updated accountSubType enumeration
The accountSubType field in the account object has been updated to align with Version 3.
Added values:
- Lending
- Transactions
TPPs must ensure their systems can handle these updated enumerations.
3. Mandatory claims in Hybrid Flow Request Object
- When using the Hybrid Authentication Flow, the Request Object JWS must include two mandatory claims:
- exp (Expiration Time)
- nbf (Not Before Time)
- These claims are required for the request to be accepted by Kiwibank’s authorisation server. Missing claims will result in request rejection.
- Example: Request Object JWS (non-normative)
Below is an example of a Request Object JWS used in the Hybrid Flow. This example is not base64-encoded and is provided for illustrative purposes only.

Transaction API: credit card date range limits
The Transaction API applies specific limits to credit card accounts when querying date ranges. These limits do not apply to other account types.
|
Maximum historical lookback |
Two years from the current date |
|
Maximum date range per request |
Six months |
Statement endpoints are unavailable until 1 December 2026.
What this means
- Clients cannot retrieve more than six months of credit card transaction data in a single API call
- To access longer periods (within the two‑year limit), consumers must split requests into multiple sequential queries
Recommendation
Developers should implement logic to segment large date ranges into multiple 6‑month intervals and aggregate the results client-side to ensure complete data retrieval.
Common questions
Kiwibank doesn't have a sandbox environment. You can use the Payments New Zealand API Centre sandbox instead: developer.apicentre.middleware.co.nz/
Kiwibank returns both AccountType and AccountSubType fields, populated using PNZ 3.0‑conformant enum values.
These include:
- AccountType: Business, Personal
- AccountSubType: Transaction, CreditCard, Lending, Savings
When using Account Access > Transaction endpoint, the following data is returned:
|
BookingDateTime |
DateTime information when the transaction was initiated |
|
ValueDateTime |
DateTime information when the transaction was posted/settled |
Help & support
-
Email us
Support hours: Monday to Friday, 9 am–5 pm.
-
Service restoration & updates
For incidents, we aim to restore service within five business days. To report an issue, email us.