Entur Recurring Payments API

Set up and manage stored payment methods.

Operations 6

GET /v1/recurring-payments Get recurring payments #
POST /v1/recurring-payments Create a recurring payment #
DELETE /v1/recurring-payments/{recurringPaymentId} End recurring payment #
PATCH /v1/recurring-payments/{recurringPaymentId} Update recurring payment #
PUT /v1/recurring-payments/{recurringPaymentId}/authorize Authorize a recurring payment #
POST /v1/recurring-payments/{recurringPaymentId}/terminal Create terminal #

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-partner-dataset-rpt-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-partner-dataset-download-job-dto-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-partner-settlement-import-dto-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-partner-settlement-import-response-dto-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-given-consent-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-consent-crm-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-consent-base-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-given-consent-bulk-update-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-given-consent-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-consent-base-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-customer-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-temporary-customer-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-customer-post-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-customer-put-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-ecard-ownership-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-temporary-customer-post-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-result-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-quota-request-v1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-quota-configuration-response-v1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-quota-response-v1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reservation-response-v1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-quota-configuration-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-multi-stock-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-geo-location-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-authority-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-trip-pattern-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-collection-info-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-customer-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-offer-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-subscriber-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-extend-expiry-time-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-update-traveller-input-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-note-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-note-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-page-of-order-note-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-line-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-fee-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-create-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-line-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-payment-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-transaction-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-credit-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-transaction-import-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-transaction-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-terminal-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-program-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-transaction-by-order-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-current-level-summary-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-current-level-summary-query-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-point-period-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-customer-membership-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-employee-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-imported-employee-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-imported-employee-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-contract-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-imported-employee-merge-patch-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-entitlement-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-zonal-stop-place-distance-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-fare-zone-distance-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-fare-zone-distance-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-coordinate-distance-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-distance-calculation-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-fare-table-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-fare-table-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-version-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-version-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-purchase-window-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-purchase-window-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-purchase-window-list-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-supplement-product-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-supplement-product-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-sales-offer-package-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-sales-offer-package-publication-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-sales-offer-package-assignment-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-supplement-product-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-generic-parameter-assignment-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-exchanging-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-amount-of-price-unit-product-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-capped-discount-right-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-sale-discount-right-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-netex-import-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-send-receipt-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-user-receipt-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-receipt-type-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-refund-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-refund-option-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-dry-run-refund-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-compensation-operation-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-refund-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-compensation-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-change-order-lines-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-order-line-ids-and-reservation-ids-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reserve-offers-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-add-supplement-products-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reserve-third-party-products-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reserve-third-party-products-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seating-offer-debug-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-rebooked-reservation-response-v1-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-rebooked-reservation-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reservation-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seating-offer-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reservation-line-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-reserve-specific-seats-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-map-string-string-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seq-cancel-seat-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seq-companion-for-seat-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seq-journey-query-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-seq-product-attribute-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-asset-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-booking-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-support-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-one-stop-booking-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-one-stop-booking-event-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-notification-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-post-skoleskyss-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-post-skoleskyss-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-delete-skoleskyss-response-schema.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/entur:entur-recurring-payments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

entur-recurring-payments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Entur Recurring Payments API
  version: 2026.10.2
  contact:
    name: Entur
    url: https://developer.entur.org
  description: 'Operations tagged Recurring Payments across 2 of this provider''s published API definitions: entur-payment-partner-openapi.json, entur-payment-partner-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.entur.io/sales
  description: Entur's Production environment
- url: https://api.staging.entur.io/sales
  description: Entur's Staging environment
- url: https://api.dev.entur.io/sales
  description: Entur's Development environment
security:
- jwt: []
tags:
- name: Recurring Payments
  description: Set up and manage stored payment methods.
paths:
  /v1/recurring-payments:
    parameters:
    - $ref: '#/components/parameters/ET-Client-Name'
    - $ref: '#/components/parameters/X-Correlation-Id'
    get:
      tags:
      - Recurring Payments
      summary: Get recurring payments
      description: Get recurring payments, which are not CANCELLED, for a customer. By default, EXPIRED are not included.
      operationId: queryRecurringPayments
      parameters:
      - name: customerNumber
        in: query
        description: Query for a given customer number
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: string
        examples:
          equals without operator:
            summary: When operation is omitted it is treated as equals.
            value: '1'
          equals:
            value: eq:1
          not equals:
            value: ne:1
      - name: includeExpired
        in: query
        description: Whether or not to include expired recurring payments. Default false.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: boolean
        examples:
          equals without operator:
            summary: When operation is omitted it is treated as equals.
            value: true
          equals:
            value: true
          not equals:
            value: false
      responses:
        '200':
          description: Ok
          content:
            application/hal+json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RecurringPaymentResponse'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    post:
      tags:
      - Recurring Payments
      summary: Create a recurring payment
      description: Creates a new recurring payment with status CREATED and couples it to the customer number sent in the request. If this is the first recurring payment coupled to the customer number it is made to be the primary recurring payment for the customer number. If it is not the first recurring payment, it defaults to not primary. However, if the requests makes it primary, the customers other recurring payment with primary status is set to not primary.
      operationId: createRecurringPayment
      parameters:
      - $ref: '#/components/parameters/dciHeader'
      - $ref: '#/components/parameters/posHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringPaymentRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RecurringPaymentResponse'
        '400':
          $ref: '#/components/responses/badRequest'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    servers:
    - url: https://api.entur.io/sales
      description: Entur's Production environment
    - url: https://api.staging.entur.io/sales
      description: Entur's Staging environment
    - url: https://api.dev.entur.io/sales
      description: Entur's Development environment
  /v1/recurring-payments/{recurringPaymentId}:
    parameters:
    - $ref: '#/components/parameters/dciHeader'
    - $ref: '#/components/parameters/posHeader'
    - $ref: '#/components/parameters/recurringPaymentIdPathParam'
    - $ref: '#/components/parameters/ET-Client-Name'
    - $ref: '#/components/parameters/X-Correlation-Id'
    delete:
      tags:
      - Recurring Payments
      summary: End recurring payment
      description: Ends a recurring payment, the recurring payment is no longer usable after this call.
      operationId: endRecurringPayment
      responses:
        '200':
          description: Ok
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RecurringPaymentResponse'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    patch:
      tags:
      - Recurring Payments
      summary: Update recurring payment
      description: Updates a recurring payment's nickname and/or isPrimary status. If the recurring payment is set to be the primary recurring payment, the last primary recurring payment is no longer the primary recurring payment.
      operationId: updateRecurringPayment
      parameters:
      - $ref: '#/components/parameters/dciHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecurringPaymentRequest'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RecurringPaymentResponse'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    servers:
    - url: https://api.entur.io/sales
      description: Entur's Production environment
    - url: https://api.staging.entur.io/sales
      description: Entur's Staging environment
    - url: https://api.dev.entur.io/sales
      description: Entur's Development environment
  /v1/recurring-payments/{recurringPaymentId}/authorize:
    parameters:
    - $ref: '#/components/parameters/dciHeader'
    - $ref: '#/components/parameters/posHeader'
    - $ref: '#/components/parameters/recurringPaymentIdPathParam'
    - $ref: '#/components/parameters/ET-Client-Name'
    - $ref: '#/components/parameters/X-Correlation-Id'
    put:
      tags:
      - Recurring Payments
      summary: Authorize a recurring payment
      description: Authorize the card details provided by the customers in the terminal were valid and accepted by Nets and by calling Nets with a process call. If valid, the recurring payment has its status set to ACTIVE and the returned pan hash is stored. This pan hash is later used when paying with a recurring payment.
      operationId: authorizeRecurringPayment
      responses:
        '200':
          description: Ok
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RecurringPaymentResponse'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    servers:
    - url: https://api.entur.io/sales
      description: Entur's Production environment
    - url: https://api.staging.entur.io/sales
      description: Entur's Staging environment
    - url: https://api.dev.entur.io/sales
      description: Entur's Development environment
  /v1/recurring-payments/{recurringPaymentId}/terminal:
    parameters:
    - $ref: '#/components/parameters/dciHeader'
    - $ref: '#/components/parameters/posHeader'
    - $ref: '#/components/parameters/recurringPaymentIdPathParam'
    - $ref: '#/components/parameters/ET-Client-Name'
    - $ref: '#/components/parameters/X-Correlation-Id'
    post:
      tags:
      - Recurring Payments
      summary: Create terminal
      description: Registers the transaction with Nets and returns the location of the payment terminal where the user will provide card information. The terminal is available for 15min before the transaction times out. If this happens a new terminal must be created.
      operationId: createRecurringPaymentTerminal
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerminalRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TerminalResponse'
        '404':
          $ref: '#/components/responses/notFound'
        '500':
          $ref: '#/components/responses/internalServerError'
    servers:
    - url: https://api.entur.io/sales
      description: Entur's Production environment
    - url: https://api.staging.entur.io/sales
      description: Entur's Staging environment
    - url: https://api.dev.entur.io/sales
      description: Entur's Development environment
components:
  schemas:
    PaymentType:
      type: string
      description: The actual type of payment.
      enum:
      - AMEX
      - BANKAXEPT
      - COLLECTOR
      - GIFTCARD
      - MASTERCARD
      - PAYPAL
      - VIPPS
      - VISA
      - XLEDGER
      - COLLECTOR_B2B
      - TWO_B2B
      examples:
      - VISA
    TransactionType:
      type: string
      description: Set the type of transaction. Only set this field to MIT_UCOF if you want to create a Merchant Initiated Transaction (MIT) which refers to a card payment started by a merchant without the customer being actively involved. If this value is not set, a payment terminal will be created as normal.
      enum:
      - MIT_UCOF
      examples:
      - MIT_UCOF
    TerminalResponse:
      title: Terminal
      required:
      - terminalUri
      type: object
      properties:
        paymentId:
          type: integer
          description: ID of the payment the transaction belongs to. Used with the transactionId to later capture transaction.
          format: int64
          examples:
          - 1
        recurringPaymentId:
          type: integer
          description: ID of the recurring payment this terminal belongs to.
          format: int64
          examples:
          - 1
        terminalUri:
          type: string
          description: Location of the payment terminal.
          examples:
          - https://epayment.nets.eu/Terminal/default.aspx?merchantId=700000&transactionId=8841532204d4426da913a5abfbg322f0
        transactionId:
          type: integer
          description: ID of the transaction this terminal belongs to. Used with the paymentId to later capture transaction.
          format: int64
          examples:
          - 1
      description: Information about how to access the terminal.
      examples:
      - paymentId: 1
        recurringPaymentId: 1
        terminalUri: https://epayment.nets.eu/Terminal/default.aspx?merchantId=1234567&transactionId=77770fb3a53347777071cd6f4a3e7777
        transactionId: 1
    TerminalRequest:
      title: TerminalRequest
      required:
      - redirectUrl
      type: object
      properties:
        callbackUrl:
          type: string
          description: Location where notification of payment completion will be sent. If this is not provided, then the client will have to check for completion manually by getting the transaction and checking its status. The callback will be repeated until the server receives an HTTP 202 response.
          examples:
          - https://entur.org
        customerNumber:
          type: string
          description: Customer number used with recurring payment creation. This field is optional and will only be considered for certain privileged clients.
          examples:
          - '123456789'
        redirectUrl:
          pattern: ^(https?://).{0,1024}
          type: string
          description: Location to be redirected to from the payment terminal.
          examples:
          - https://www.entur.org
        storePayment:
          type: boolean
          description: Should the card be stored for recurring payments. If customer is not logged in, the value of this will be disregarded.
          default: false
          examples:
          - false
        terminalLanguage:
          $ref: '#/components/schemas/TerminalLanguage'
        countryCode:
          $ref: '#/components/schemas/TerminalCountryCode'
        autoSale:
          type: boolean
          description: If this flag is set to true, the capture call after a customer returns from the terminal is not needed. The processing starts automatically. This is only compatible with payments done with payment cards.
          default: false
        transactionType:
          $ref: '#/components/schemas/TransactionType'
        singlePage:
          type: boolean
          description: If this flag is set to true, we will attempt to generate a single-page terminal. If false, multi-page terminal might be used.
          default: false
          examples:
          - false
      description: Information used to customize the payment terminal.
      examples:
      - callbackUrl: https://entur.org
        customerNumber: '123456789'
        redirectUrl: https://www.entur.org
        storePayment: true
        terminalLanguage: no_NO
        countryCode: 'NO'
        autoSale: true
        singlePage: true
    TerminalLanguage:
      type: string
      description: Language used in the payment terminal. Default is 'no_NO'.
      enum:
      - da_DK
      - de_DE
      - en_GB
      - es_ES
      - et_EE
      - fi_FI
      - fr_FR
      - it_IT
      - lt_LT
      - lv_LV
      - nl_NL
      - no_NO
      - pl_PL
      - ru_RU
      - sv_SE
      examples:
      - no_NO
    RecurringPaymentRequest:
      title: RecurringPaymentRequest
      type: object
      properties:
        customerNumber:
          type: string
          description: The customer number this recurring payment belongs to. This field is optional and will only be considered for certain privileged clients. This value can not be updated.
          examples:
          - '42'
        isPrimary:
          type: boolean
          description: Is the recurring payment the primary recurring payment of the user. There can only be one primary recurring payment at a time. Therefore, changing this status to true might set another recurring payment's isPrimary to false.
          examples:
          - false
        nickname:
          type: string
          description: Nickname for the recurring payment
          examples:
          - Bottomless mastercard
      description: Recurring payment API resource.
      examples:
      - customerNumber: '123456789'
        isPrimary: true
        nickname: Bottomless mastercard
    PaymentError:
      title: PaymentError
      required:
      - error
      - exception
      - message
      - path
      - status
      - timestamp
      type: object
      properties:
        error:
          type: string
          description: The error that occurred.
          examples:
          - Internal Server Error
        exception:
          type: string
          description: What exception caused the error.
          examples:
          - org.entur.payment.faulthandling.exceptions.psp.InternalPSPFailureException
        message:
          type: string
          description: A message detailing the error.
          examples:
          - An internal error occurred in the PSP. message='Unable to sale', errorCode='99', errorSource='Netaxept', errorText='Internal failure'
        path:
          type: string
          description: The url path that was accessed when the error happenened.
          examples:
          - /v1/payments/1/transactions/1/capture
        status:
          type: integer
          description: The http status of the response.
          format: int32
          examples:
          - 500
        timestamp:
          type: string
          description: When the error occurred
          format: date-time
          examples:
          - '2025-01-12T16:13:13Z'
        errorReason:
          type: string
          description: 'In some cases, the client is required to act upon getting a PaymentError. When action is required from the client, this field will be populated. Valid values: SOFT_DECLINE, REFUSED_BY_ISSUER, ISSUER_UNAVAILABLE, RESOURCE_BUSY, USER_ERROR, COMPLIANCE_CHECK_FAILED.'
          examples:
          - SOFT_DECLINE
      x-examples: {}
      examples:
      - error: Internal Server Error
        exception: org.entur.payment.faulthandling.exceptions.psp.InternalPSPFailureException
        message: An internal error occurred in the PSP. message='Unable to sale', errorCode='99', errorSource='Netaxept', errorText='Internal failure'
        path: /v1/payments/1/transactions/1/capture
        status: 500
        timestamp: '2025-08-24T14:15:22Z'
    TerminalCountryCode:
      type: string
      description: ISO 3166-1 Alpha 2 country code used for certain terminals (PayPal, Collector). Used to decide which country store the customer wants to use. Default is 'NO'
      default: 'NO'
      enum:
      - 'NO'
      - DK
      - SE
      - FI
      examples:
      - 'NO'
    RecurringPaymentResponse:
      title: RecurringPaymentResponse
      required:
      - cardExpiresAt
      - createdAt
      - expiresAt
      - maskedPan
      - paymentType
      - primary
      - recurringPaymentId
      - recurringStatus
      type: object
      properties:
        cardExpiresAt:
          type: string
          description: The stored card's expiration date, may be longer than the recurring payment's expiration date, but never shorter.
          format: date-time
          examples:
          - '2025-01-12T16:13:13Z'
        createdAt:
          type: string
          description: Timestamp for when the recurring payment was created.
          format: date-time
          examples:
          - '2025-01-12T16:13:13Z'
        expiresAt:
          type: string
          description: When the recurring payment is no longer valid
          format: date-time
          examples:
          - '2025-02-12T16:13:13Z'
        maskedPan:
          type: string
          description: The stored card's masked number
          examples:
          - 4925 **** **** 0004
        nickname:
          type: string
          description: Nickname for the recurring payment
          examples:
          - Bottomless mastercard
        paymentType:
          $ref: '#/components/schemas/PaymentType'
        primary:
          type: boolean
          description: Is the recurring payment the primary recurring payment of the user. There can only be one primary recurring payment at a time. Therefore, changing this status to true might set another recurring payment's isPrimary to false.
          examples:
          - false
        recurringPaymentId:
          type: integer
          description: ID of the recurring payment
          format: int64
          examples:
          - 111
        recurringStatus:
          $ref: '#/components/schemas/RecurringStatus'
      description: Response type for the Recurring Payment API
      examples:
      - cardExpiresAt: '2025-01-12T16:13:13Z'
        createdAt: '2025-01-12T16:13:13Z'
        expiresAt: '2025-01-12T16:13:13Z'
        maskedPan: 4925 **** **** 0004
        nickname: Bottomless mastercard
        paymentType: VISA
        primary: false
        recurringPaymentId: 111
        recurringStatus: ACTIVE
    RecurringStatus:
      type: string
      description: Status of this recurring payment
      enum:
      - ACTIVE
      - CANCELLED
      - CREATED
      - DEFAULTED
      - EXPIRED
      examples:
      - ACTIVE
  responses:
    internalServerError:
      description: Internal Server Error
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/PaymentError'
    badRequest:
      description: Bad Request
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/PaymentError'
    notFound:
      description: Not Found
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/PaymentError'
  parameters:
    recurringPaymentIdPathParam:
      name: recurringPaymentId
      in: path
      description: recurringPaymentId
      required: true
      style: simple
      explode: false
      schema:
        type: integer
        format: int64
    X-Correlation-Id:
      name: X-Correlation-Id
      in: header
      description: Correlation id
      required: false
      style: simple
      explode: false
      schema:
        type: string
    dciHeader:
      name: Entur-Distribution-Channel
      in: header
      description: Distribution channel identifier.
      required: false
      style: simple
      explode: false
      schema:
        type: string
    ET-Client-Name:
      name: ET-Client-Name
      in: header
      description: 'Entur Client Header.

        It is required that all consumers identify themselves by using this header.

        Entur will deploy strict rate-limiting policies on API-consumers who do not identify with a header and reserves the right to block unidentified consumers.

        The structure of ET-Client-Name should be: `<company>-<application>`.'
      required: false
      style: simple
      explode: false
      schema:
        type: string
    posHeader:
      name: Entur-POS
      in: header
      description: Point-of-sale identifier.
      required: true
      style: simple
      explode: false
      schema:
        type: string
  securitySchemes:
    jwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-refined-from:
- entur-payment-partner-openapi.json
- entur-payment-partner-openapi.yml