Payments Academy
API as a contract PAYMENT OPERATIONS STARTED LIVE 01 API as a contract - between the bank and its clients ACTIVE 02 New version as a new path - not a change to the old one. QUEUED 03 No breaking - bank must never make a breaking change QUEUED 04 Version served as requested - bank must never silently serve a different QUEUED 05 Deprecation notice and sunset - client that discovers the sunset QUEUED 06 Right cadence - one or two major versions a year QUEUED An API is a contract between the bank and its clients, and once clients have built against it, the bank cannot change it casually. Step 1 of 6 API as a contract STARTED API as a contract between the bank and its clients ACTIVE New version as a new path not a change to the old one. QUEUED No breaking bank must never make a breaking change QUEUED Version served as requested bank must never silently serve a different QUEUED Deprecation notice and sunset client that discovers the sunset QUEUED Right cadence one or two major versions a year QUEUED An API is a contract between the bank and its clients, and once clients have built against it, the bank cannot change it casually.
New version as a new path PAYMENT OPERATIONS IN PROGRESS LIVE 01 API as a contract - between the bank and its clients DONE 02 New version as a new path - not a change to the old one. ACTIVE 03 No breaking - bank must never make a breaking change QUEUED 04 Version served as requested - bank must never silently serve a different QUEUED 05 Deprecation notice and sunset - client that discovers the sunset QUEUED 06 Right cadence - one or two major versions a year QUEUED A new version is a new path, not a change to the old one. Step 2 of 6 New version as a new path IN PROGRESS API as a contract between the bank and its clients DONE New version as a new path not a change to the old one. ACTIVE No breaking bank must never make a breaking change QUEUED Version served as requested bank must never silently serve a different QUEUED Deprecation notice and sunset client that discovers the sunset QUEUED Right cadence one or two major versions a year QUEUED A new version is a new path, not a change to the old one.
No breaking change inside a version PAYMENT OPERATIONS IN PROGRESS LIVE 01 API as a contract - between the bank and its clients DONE 02 New version as a new path - not a change to the old one. DONE 03 No breaking - bank must never make a breaking change ACTIVE 04 Version served as requested - bank must never silently serve a different QUEUED 05 Deprecation notice and sunset - client that discovers the sunset QUEUED 06 Right cadence - one or two major versions a year QUEUED A bank must never make a breaking change inside a version; it must release a new version instead. Step 3 of 6 No breaking change inside a version IN PROGRESS API as a contract between the bank and its clients DONE New version as a new path not a change to the old one. DONE No breaking bank must never make a breaking change ACTIVE Version served as requested bank must never silently serve a different QUEUED Deprecation notice and sunset client that discovers the sunset QUEUED Right cadence one or two major versions a year QUEUED A bank must never make a breaking change inside a version; it must release a new version instead.
Version served as requested PAYMENT OPERATIONS IN PROGRESS LIVE 01 API as a contract - between the bank and its clients DONE 02 New version as a new path - not a change to the old one. DONE 03 No breaking - bank must never make a breaking change DONE 04 Version served as requested - bank must never silently serve a different ACTIVE 05 Deprecation notice and sunset - client that discovers the sunset QUEUED 06 Right cadence - one or two major versions a year QUEUED The bank must never silently serve a different version from the one the client asked for Step 4 of 6 Version served as requested IN PROGRESS API as a contract between the bank and its clients DONE New version as a new path not a change to the old one. DONE No breaking bank must never make a breaking change DONE Version served as requested bank must never silently serve a different ACTIVE Deprecation notice and sunset client that discovers the sunset QUEUED Right cadence one or two major versions a year QUEUED The bank must never silently serve a different version from the one the client asked for
Deprecation notice and sunset PAYMENT OPERATIONS IN PROGRESS LIVE 01 API as a contract - between the bank and its clients DONE 02 New version as a new path - not a change to the old one. DONE 03 No breaking - bank must never make a breaking change DONE 04 Version served as requested - bank must never silently serve a different DONE 05 Deprecation notice and sunset - client that discovers the sunset ACTIVE 06 Right cadence - one or two major versions a year QUEUED A client that discovers the sunset by receiving errors on a Friday afternoon, when it is paying 500 suppliers, is a client that will escalate to the bank's senior management. Step 5 of 6 Deprecation notice and sunset IN PROGRESS API as a contract between the bank and its clients DONE New version as a new path not a change to the old one. DONE No breaking bank must never make a breaking change DONE Version served as requested bank must never silently serve a different DONE Deprecation notice and sunset client that discovers the sunset ACTIVE Right cadence one or two major versions a year QUEUED A client that discovers the sunset by receiving errors on a Friday afternoon, when it is paying 500 suppliers, is a client that will escalate to the bank's senior management.
Right cadence for a payment API PAYMENT OPERATIONS COMPLETE LIVE 01 API as a contract - between the bank and its clients DONE 02 New version as a new path - not a change to the old one. DONE 03 No breaking - bank must never make a breaking change DONE 04 Version served as requested - bank must never silently serve a different DONE 05 Deprecation notice and sunset - client that discovers the sunset DONE 06 Right cadence - one or two major versions a year ACTIVE The right cadence for a payment API is one or two major versions a year, with minor additions inside a version as needed. Step 6 of 6 Right cadence for a payment API COMPLETE API as a contract between the bank and its clients DONE New version as a new path not a change to the old one. DONE No breaking bank must never make a breaking change DONE Version served as requested bank must never silently serve a different DONE Deprecation notice and sunset client that discovers the sunset DONE Right cadence one or two major versions a year ACTIVE The right cadence for a payment API is one or two major versions a year, with minor additions inside a version as needed.

Key points of this lesson, in order.

0:00 / 5:39 Step 1 of 6

API versioning and lifecycle: how to change an API without breaking clients

API design standards and integration patterns, Lesson 1 of 7, Narration 5:39, D10 APIs and integration

Open bankingRejectScheme

What you will learn

Your objective. By the end of this lesson, you will be able to explain API versioning and lifecycle: how to change an API without breaking clients and apply it to a real banking scenario.

Why it matters. For a business analyst, the requirement is to define the versioning scheme, the deprecation policy, the sunset period, and the error returned for an unknown version, and to write them into the API specification before the first client integrates.

Chapter objective: How payment APIs are designed, versioned, secured and integrated

Key learning points

  • API as a contract
  • New version as a new path
  • No breaking change inside a version
  • Version served as requested
  • Deprecation notice and sunset
  • Right cadence for a payment API

Key terms

Open banking: A system where banks share customer account data and payment services with licensed third parties through secure APIs, with customer consent.

Reject: A payment instruction that is refused before settlement because it fails validation, screening or account checks.

Scheme: A card or payment network that sets the rules, standards and fees for transactions between issuers and acquirers.

Payment flow diagram showing API versioning and lifecycle: how to change an API without breaking clients.

Insights and practice scenarios

Worked insights and practice scenarios for this lesson. Each one is a reusable PaymentForge case, so the same case may appear in more than one lesson.

Practise this lesson

Exercise

Write the request and the expected response for the API call described in this lesson.

Use the API resources, operations and fields named in this lesson.

  1. What to do. Write the JSON request with the required fields, the success response, and one error response with its error code.

Correct result. A correct request has all mandatory fields, a valid idempotency key, and the right resource and operation. The success response confirms acceptance, and the error response names the field or rule that failed.

Why. An API contract is a promise between two systems. If the request is wrong, the API must reject it cleanly, not fail silently.

Check your understanding

Practice question

Which of the following best describes API versioning and lifecycle: how to change an API without breaking clients?

Takeaway and next step

What to remember

A bank must never make a breaking change inside a version; it must release a new version instead.

Call the API described in this lesson with a valid request, then with a missing field, and compare the responses.

Open the API Playground →

Builds on "Engine performance and capacity: throughput, latency budgets and load testing".

Transcript and full text

Show transcript

An API is a contract between the bank and its clients, and once clients have built against it, the bank cannot change it casually. Versioning is how the bank evolves an API while keeping existing clients working. The most common approach for payment APIs is versioning in the path, such as /v1/payments and /v2/payments, because it is visible, easy to route, and easy to test. For a business analyst, the requirement is to define this behaviour in the API specification, because the client builds against the specification and nothing else. An alternative is versioning in a header, which keeps the URL clean but is harder to see and easier for a client to forget. Whichever approach a bank chooses, it must be consistent across all its APIs, because a client that integrates with five APIs should not have to learn five different versioning schemes. Source: API design guidance from the Berlin Group and the UK Open Banking Implementation Entity; bank API developer documentation. A new version is a new path, not a change to the old one. When the bank releases /v2/payments, /v1/payments keeps working exactly as before, with the same fields, the same validation and the same behaviour. The bank publishes a changelog that lists what changed in v2, a migration guide that tells clients how to move, and a sunset date: the date after which v1 will stop working. The sunset date must be far enough in the future for clients to migrate, typically 12 to 18 months for a payment API, because a corporate client that pays 500 suppliers every Friday cannot rewrite its treasury system in a week. The bank also publishes a deprecation notice: v1 is deprecated, meaning no new features will be added to it, but it continues to work until the sunset date. Breaking changes are the reason versions exist. A breaking change is any change that can cause an existing client to fail: removing a field, renaming a field, changing a field type, making an optional field mandatory, or changing the meaning of a status code. A bank must never make a breaking change inside a version; it must release a new version instead. Non breaking changes, such as adding an optional field or adding a new endpoint, can be made inside a version, because existing clients ignore fields they do not know. The discipline is to ask, for every change, whether a client built against the current version could fail because of it. If the answer is yes, it is a new version. If the answer is no, it can go into the current version, and the changelog says so. Version negotiation is how a client tells the bank which version it wants. With path versioning, the client simply calls the versioned URL. With header versioning, the client sends a header such as Accept-Version: 2. The bank must reject a request that asks for a version that does not exist, with a clear error: 404 for an unknown path version, or 400 with a code such as UNSUPPORTED_VERSION for an unknown header version. The bank must never silently serve a different version from the one the client asked for, because the client would then receive a response it did not expect, and a payment instruction could be misinterpreted. For a business analyst, the requirement is to define the versioning scheme, the deprecation policy, the sunset period, and the error returned for an unknown version, and to write them into the API specification before the first client integrates. Deprecation notices must be specific and honest. A notice that says v1 is deprecated and will be removed on 1 March 2027 tells the client exactly what will happen and when. A notice that says v1 is deprecated and will be removed soon tells the client nothing, and the client will ignore it until the API stops working. The bank should also tell the client what will happen to requests sent to v1 after the sunset date: whether they return a 404, a 410 Gone, or a 400 with a code such as VERSION_RETIRED, and whether the bank will send a warning before the sunset date. A client that discovers the sunset by receiving errors on a Friday afternoon, when it is paying 500 suppliers, is a client that will escalate to the bank's senior management. The deprecation policy is a commercial commitment, not a technical detail, and it belongs in the API terms of service as well as in the developer documentation. The API documentation must state this rule plainly, because a client that has to guess will guess wrong. Internal versioning is different from external versioning. Inside the bank, services change frequently, and internal APIs may version with every release. But the external API, the one clients build against, must change slowly and deliberately, because every change costs every client time and money. A bank that releases a new external version every month is telling its clients that it does not value their integration effort. A bank that never releases a new version is telling its clients that it cannot improve. The right cadence for a payment API is one or two major versions a year, with minor additions inside a version as needed. For a business analyst, the requirement is to define the external version cadence, the deprecation policy, and the communication plan for each new version, and to get the product owner to approve them before the API is published. Further reading: Berlin Group NextGenPSD2 API framework; UK Open Banking API standards. Last reviewed 7 November 2026.

An API is a contract between the bank and its clients, and once clients have built against it, the bank cannot change it casually. Versioning is how the bank evolves an API while keeping existing clients working. The most common approach for payment APIs is versioning in the path, such as /v1/payments and /v2/payments, because it is visible, easy to route, and easy to test. For a business analyst, the requirement is to define this behaviour in the API specification, because the client builds against the specification and nothing else.

An alternative is versioning in a header, which keeps the URL clean but is harder to see and easier for a client to forget. Whichever approach a bank chooses, it must be consistent across all its APIs, because a client that integrates with five APIs should not have to learn five different versioning schemes. Source: API design guidance from the Berlin Group and the UK Open Banking Implementation Entity; bank API developer documentation.

A new version is a new path, not a change to the old one. When the bank releases /v2/payments, /v1/payments keeps working exactly as before, with the same fields, the same validation and the same behaviour. The bank publishes a changelog that lists what changed in v2, a migration guide that tells clients how to move, and a sunset date: the date after which v1 will stop working. The sunset date must be far enough in the future for clients to migrate, typically 12 to 18 months for a payment API, because a corporate client that pays 500 suppliers every Friday cannot rewrite its treasury system in a week. The bank also publishes a deprecation notice: v1 is deprecated, meaning no new features will be added to it, but it continues to work until the sunset date.

Breaking changes are the reason versions exist. A breaking change is any change that can cause an existing client to fail: removing a field, renaming a field, changing a field type, making an optional field mandatory, or changing the meaning of a status code. A bank must never make a breaking change inside a version; it must release a new version instead. Non breaking changes, such as adding an optional field or adding a new endpoint, can be made inside a version, because existing clients ignore fields they do not know. The discipline is to ask, for every change, whether a client built against the current version could fail because of it. If the answer is yes, it is a new version. If the answer is no, it can go into the current version, and the changelog says so.

Version negotiation is how a client tells the bank which version it wants. With path versioning, the client simply calls the versioned URL. With header versioning, the client sends a header such as Accept-Version: 2. The bank must reject a request that asks for a version that does not exist, with a clear error: 404 for an unknown path version, or 400 with a code such as UNSUPPORTED_VERSION for an unknown header version.

The bank must never silently serve a different version from the one the client asked for, because the client would then receive a response it did not expect, and a payment instruction could be misinterpreted. For a business analyst, the requirement is to define the versioning scheme, the deprecation policy, the sunset period, and the error returned for an unknown version, and to write them into the API specification before the first client integrates.

Deprecation notices must be specific and honest. A notice that says v1 is deprecated and will be removed on 1 March 2027 tells the client exactly what will happen and when. A notice that says v1 is deprecated and will be removed soon tells the client nothing, and the client will ignore it until the API stops working. The bank should also tell the client what will happen to requests sent to v1 after the sunset date: whether they return a 404, a 410 Gone, or a 400 with a code such as VERSION_RETIRED, and whether the bank will send a warning before the sunset date.

A client that discovers the sunset by receiving errors on a Friday afternoon, when it is paying 500 suppliers, is a client that will escalate to the bank's senior management. The deprecation policy is a commercial commitment, not a technical detail, and it belongs in the API terms of service as well as in the developer documentation. The API documentation must state this rule plainly, because a client that has to guess will guess wrong.

Internal versioning is different from external versioning. Inside the bank, services change frequently, and internal APIs may version with every release. But the external API, the one clients build against, must change slowly and deliberately, because every change costs every client time and money. A bank that releases a new external version every month is telling its clients that it does not value their integration effort. A bank that never releases a new version is telling its clients that it cannot improve.

The right cadence for a payment API is one or two major versions a year, with minor additions inside a version as needed. For a business analyst, the requirement is to define the external version cadence, the deprecation policy, and the communication plan for each new version, and to get the product owner to approve them before the API is published. Further reading: Berlin Group NextGenPSD2 API framework; UK Open Banking API standards. Last reviewed 7 November 2026.

Full lesson text (all scenes)

Completing a lesson updates your progress dashboard on the homepage.

Scene timestamps are estimated by allocating the narration text proportionally across the real audio length. The audio playback position is the source of truth: pause freezes the visual, seeking restores the correct scene, replay restarts the scene animation.