Changelog
All notable changes to the current API will be documented here. See: API Lifecycle.
September 2024
- List agreements v3 endpoint now support pagination using the
pageNumber
andpageSize
query parameters.
July 2024
-
phoneNumber
is validated only ifskipLandingPage
is set totrue
IfphoneNumber
is invalid andskipLandingPage
is set tofalse
, the Recurring API ignores the value and the user will have to enter their phone number on the landing page. IfphoneNumber
is invalid andskipLandingPage
is set totrue
, the Recurring API will return the following error:{
"type": "https://developer.vippsmobilepay.com/docs/APIs/recurring-api/vipps-recurring-api-problems#validation-error",
"title": "Bad Request",
"status": 400,
"detail": "Invalid phone number",
"instance": "/vipps-recurring-merchant-api/v3/agreements",
"contextId": "8d728430-e5f1-4d76-a045-6a57231618b4"
} -
merchantRedirectUrl
max length was increased to 2048. See: DraftAgreementV3 definition: -
Updated Payment Batches Schedule for Danish and Finnish market. The new timings are to avoid the batches running during the scheduled maintenance windows of Vipps MobilePay's vendors/partner banks. See: Payment Batches Schedule:.
May 2024
- Added Danish and Finnish for in-app texts and push notification texts. See: Notifications and error messages.
- Added new limit of 2000 charges per request for the Recurring endpoint
POST:/recurring/v3/agreements/charges
. See: Create multiple charges. - Added documentation about the cancellation of charges when an agreement is stopped by the user. See: Stop an agreement and What happens to charges if the corresponding agreement is canceled?.
April 2024
- Fixed issue that caused some webhooks/callbacks to be sent before amounts were updated, which caused incorrect information in webhooks/callbacks. There is no plan for resending these webhooks/callbacks as of now, please reach out if this has caused any issues.
Mars 2024
- If
externalId
is specified on the charge, it will be visible to the user on the charge receipt screen.
February 2024
-
Added new webhook event type
recurring.charge-creation-failed.v1
. See: Webhooks. -
Added documentation for charge batch creation endpoint. See: Create multiple charges.
-
Unscheduled charge release. Please note that for MobilePay re-integrating merchants, this is the equivalent of the one-off
auto-reserve
feature. See: Unscheduled charge. -
Flexible interval
- Make interval a non required field anymore in the
POST:/recurring/v3/agreements
request body. If not specified, the agreement will have aFLEXIBLE
interval type. - Make it possible to update the type of agreement interval. Update of
PATCH:/recurring/v3/agreements/{agreementId}
endpoint.
- Make interval a non required field anymore in the
January 2024
- Added webhook integration documentation. See: Webhooks and the Webhooks API.
December 2023
- Fixed released to return
extraDetails
in error response body format according to the RFC. See: Errors.
November 2023
-
Landing page update. Due to complexity of which price applies to an agreement, whether it's the agreement price, initial charge price, promotional price, etc., the landing page will show agreement names instead of prices.
-
Charge
externalId
:- If specified, the
externalId
will be used as order ID, meaning it will show up on settlement reports in place of theorderId
field. - If both
orderId
andexternalId
are specified, theexternalId
will be used as order ID, while orderId will just be used to identify the charge in the Recurring API.
- If specified, the
October 2023
-
Fixes in the Recurring OpenAPI spec file:
- The optional field
externalId
can be set on an initial charge in the request body of thePOST:/recurring/v3/agreements
request. createdAfter
query parameter on theGET:/recurring/v3/agreements
is of typeint64
.failureReason
field returned in theChargeResponseV3
can be null.chargeId
field in theDraftAgreementResponseV3
can be null.campaign
field in theAgreementResponseV3
can be null.PricingResponse
can either be of typeVariableAmountPricingResponse
orLegacyPricingResponse
.
- The optional field
-
New optional field
interval
in thePATCH:/recurring/v3/agreements/{agreementId}
endpoint, which allows to update the interval of an active agreement.
August 2023
- Removed charge-amount-too-high-for-interval validation used in charge creation endpoint
POST:/recurring/v3/agreements/{agreementId}/charges
. ThesuggestedMaxAmount
field for a variable amount agreement should be set to what the maximum amount could be for each charge.
June 2023
- A new field is returned by the
GET:/recurring/v3/agreements/{agreementId}
endpoint:vippsConfirmationUrl
: previously redirected the user to the landing page in a desktop flow (withhttps://
), or to the Vipps or MobilePay app in a mobile flow (withvipps://
), where the user can then approve the agreement.
May 2023
-
New fields returned by the
GET:/recurring/v3/agreements/{agreementId}
endpoint:merchantAgreementUrl
: URL where Vipps can send the customer to view/manage their subscription.merchantRedirectUrl
: URL where customer should be redirected after the agreement has been approved/rejected in the Vipps mobile application.created
: Date when agreement was created in ISO 8601 format.
-
New fields returned by the
GET:/recurring/v3/agreements/{agreementId}/charges/{chargeId}
endpoint:retryDays
: The service will attempt to charge the customer for the number of days specified inretryDays
after thedue
date.externalAgreementId
: Can be used by the merchant to map theagreementId
to an ID in a subscription system or similar.
April 2023
-
New optional field
externalId
for agreements introduced. This field can be used to store an external ID for the agreement. Can be set in the request body of thePOST:/recurring/v3/agreements
request.externalId
will be returned by theGET:/recurring/v3/agreements/{agreementId}
endpoint. It is also possible to update it using thePATCH:/recurring/v3/agreements/{agreementId}
endpoint. -
New optional field
countryCode
for agreements introduced. Can be set in the request body of thePOST:/recurring/v3/agreements
request.countryCode
will also be returned by theGET:/recurring/v3/agreements/{agreementId}
endpoint. -
New field
uuid
(UUID representation of agreement ID) returned by theGET:/recurring/v3/agreements/{agreementId}
response. -
New optional field
externalId
for charges introduced. This field can be used to store an external ID for the charge. Can be set in thePOST:/recurring/v3/agreements/{agreementId}/charges
request.
March 2023
- The new endpoint
GET:/recurring/v3/charges/{chargeId}
makes it possible to retrieve a charge specified bychargeId
, without knowing theagreementId
(unlikeGET:/recurring/v3/agreements/{agreementId}/charges/{chargeId}
). The resulting charge now contains theagreementId
. Its purpose is to simplify investigations when the merchant lost track of which charge belongs to which agreement.
December 2022
- Version 3 is available and includes new and improved functionality for campaigns, the ability to reserve and capture charges, and several technical improvements. The migration guide and quick start provide more details for upgrading to v3. Version 2 will be phased out and will no longer be available from November 1, 2023.