Open banking APIs for developers

Build with Kiwibank open banking APIs. Get API documentation, standards, and everything you need to integrate as a third‑party provider.

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.

Loading...

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.

API endpoints

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}

Timeouts and validity windows

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

Authentication and authorisation

Kiwibank supports the following OpenID Connect (OIDC) authentication flows:

  • Authorization Code Flow
  • Hybrid Flow (primarily for v2.3 compatibility)
  • CIBA (Client Initiated Backchannel Authentication)

Authenticating as a Confidential Client

All TPPs must authenticate as confidential clients using:

  • private_key_jwt as specified in Section 9 of the OpenID Connect Core specification

Key points:

  • Client authentication is performed using a signed JWT
  • JWTs must be signed using PS512
  • The signing key must correspond to the public key registered in the client’s JWKS

CIBA Authentication

We support CIBA with Ping & Poll mode, suitable for decoupled authentication journeys.

Supported CIBA Hints

The following CIBA hint types are supported:

  • id_token_hint

CIBA Mode

  • Ping
  • Poll
Customer realms and identity providers (IDP)

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.

Cryptography and signing requirements
Supported JWS Algorithms

All request objects, client assertions, and signed payloads must use: PS512.

Note: Other algorithms are not supported.

Compatibility mode integration
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.

  1. 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.

open-banking-developer-landing-page

Limitations
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

Does Kiwibank have a sandbox environment for testing?

Kiwibank doesn't have a sandbox environment. You can use the Payments New Zealand API Centre sandbox instead: developer.apicentre.middleware.co.nz/

What account type and subtype do Kiwibank Account APIs return?

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

What do “BookingDateTime” and “ValueDateTime” fields represent?

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