DueBuddy Payments API

The payments API from DueBuddy — 10 operation(s) for payments.

Operations 11

GET /api/v1/payments/fallback Payments Fallback #
POST /api/v1/payments/checkout-volume Checkout Volume #
GET /api/v1/plan/usage Plan Usage Endpoint #
POST /api/v1/payments/checkout Checkout #
POST /api/v1/payments/webhook Webhook #
POST /api/v1/payments/{subscription_id}/refresh Refresh Payment #
POST /api/v1/payments/{subscription_id}/new-link Recreate Link #
GET /api/v1/billing/autorenew Autorenew Status #
POST /api/v1/billing/autorenew Set Autorenew #
GET /api/v1/payments/history History #

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/duebuddy-work:duebuddy-work-payments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

duebuddy-work-payments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DueBuddy Payments API
  version: 0.3.0
tags:
- name: Payments
paths:
  /api/v1/payments/fallback:
    get:
      tags:
      - Payments
      summary: Payments Fallback
      description: 'Резервная ссылка на оплату.


        Нужна, когда платёжный сервис не отвечает: клиент видит понятный текст и, если ссылка

        задана, может оплатить напрямую. Живой случай 13.10.2026: Lava отдавала внутреннюю

        ошибку на любую сумму, счёт выставить не получалось вообще.'
      operationId: payments_fallback_api_v1_payments_fallback_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Payments Fallback Api V1 Payments Fallback Get
  /api/v1/payments/checkout-volume:
    post:
      tags:
      - Payments
      summary: Checkout Volume
      description: 'Оформить «Разбор+» на выбранный объём сканов (300–5 000).


        Отличия от обычного оформления: объём фиксируется в подписке полем sheets, а при наличии

        действующего тарифа из суммы вычитается уже оплаченный абонемент (доплата разницы), и новый

        период начинается с момента оплаты.'
      operationId: checkout_volume_api_v1_payments_checkout_volume_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VolumeIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Checkout Volume Api V1 Payments Checkout Volume Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/plan/usage:
    get:
      tags:
      - Payments
      summary: Plan Usage Endpoint
      description: 'Сколько сканов куплено, израсходовано и осталось по действующему тарифу.


        Считаем по документам (parse_jobs.pages), а не по счётчику, который можно забыть обновить:

        XML и QR в лимит не входят — они бесплатны. Если тарифа нет, вернём нули и plan = "".'
      operationId: plan_usage_endpoint_api_v1_plan_usage_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Plan Usage Endpoint Api V1 Plan Usage Get
  /api/v1/payments/checkout:
    post:
      tags:
      - Payments
      summary: Checkout
      operationId: checkout_api_v1_payments_checkout_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/payments/webhook:
    post:
      tags:
      - Payments
      summary: Webhook
      operationId: webhook_api_v1_payments_webhook_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/v1/payments/{subscription_id}/refresh:
    post:
      tags:
      - Payments
      summary: Refresh Payment
      description: 'Спрашивает у Lava состояние счёта и, если он оплачен, включает подписку.


        Нужно потому, что ссылка на оплату (особенно СБП) живёт ограниченное время,

        а уведомление от Lava может не дойти.'
      operationId: refresh_payment_api_v1_payments__subscription_id__refresh_post
      parameters:
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
          title: Subscription Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/payments/{subscription_id}/new-link:
    post:
      tags:
      - Payments
      summary: Recreate Link
      description: Выпускает СВЕЖУЮ ссылку на оплату вместо протухшей (та же сумма и тариф).
      operationId: recreate_link_api_v1_payments__subscription_id__new_link_post
      parameters:
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
          title: Subscription Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/billing/autorenew:
    get:
      tags:
      - Payments
      summary: Autorenew Status
      description: 'Состояние автоплатежа: включён ли, по какому тарифу, до какой даты.'
      operationId: autorenew_status_api_v1_billing_autorenew_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Autorenew Status Api V1 Billing Autorenew Get
    post:
      tags:
      - Payments
      summary: Set Autorenew
      description: 'Включить/выключить автоплатёж из кабинета.


        Выключение — это отмена подписки у Lava (иначе она продолжит списывать),

        поэтому проверяем ответ провайдера и честно сообщаем, если не получилось.'
      operationId: set_autorenew_api_v1_billing_autorenew_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Body
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Set Autorenew Api V1 Billing Autorenew Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/payments/history:
    get:
      tags:
      - Payments
      summary: History
      operationId: history_api_v1_payments_history_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PaymentItem'
                type: array
                title: Response History Api V1 Payments History Get
  /api/v1/resolve/{token}:
    get:
      tags:
      - Payments
      summary: Resolve Pay Link
      description: 'Отдаёт целевой адрес оплаты по короткому коду (для редиректа на pay.duebuddy.work).


        Нужен, чтобы короткая ссылка вела на кассу Lava ОДНИМ переходом: страница

        pay.duebuddy.work получает адрес здесь и сразу перенаправляет клиента.'
      operationId: resolve_pay_link_api_v1_resolve__token__get
      parameters:
      - name: token
        in: path
        required: true
        schema:
          type: string
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CheckoutIn:
      properties:
        plan_code:
          type: string
          title: Plan Code
        period:
          type: string
          enum:
          - m
          - y
          title: Period
          default: m
        payment_method:
          anyOf:
          - type: string
          - type: 'null'
          title: Payment Method
        market:
          anyOf:
          - type: string
          - type: 'null'
          title: Market
      type: object
      required:
      - plan_code
      title: CheckoutIn
    VolumeIn:
      properties:
        sheets:
          type: integer
          title: Sheets
        period:
          type: string
          enum:
          - m
          - y
          title: Period
          default: m
        payment_method:
          anyOf:
          - type: string
          - type: 'null'
          title: Payment Method
        market:
          anyOf:
          - type: string
          - type: 'null'
          title: Market
      type: object
      required:
      - sheets
      title: VolumeIn
      description: Заказ тарифа «Разбор+» на выбранный объём сканов.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CheckoutOut:
      properties:
        pay_url:
          type: string
          title: Pay Url
        amount_rub:
          type: number
          title: Amount Rub
        subscription_id:
          type: integer
          title: Subscription Id
        amount:
          anyOf:
          - type: number
          - type: 'null'
          title: Amount
        currency:
          anyOf:
          - type: string
          - type: 'null'
          title: Currency
      type: object
      required:
      - pay_url
      - amount_rub
      - subscription_id
      title: CheckoutOut
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    PaymentItem:
      properties:
        plan_code:
          type: string
          title: Plan Code
        period:
          type: string
          title: Period
        amount_rub:
          type: number
          title: Amount Rub
        currency:
          anyOf:
          - type: string
          - type: 'null'
          title: Currency
        status:
          type: string
          title: Status
        paid_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Paid At
        provider_ref:
          anyOf:
          - type: string
          - type: 'null'
          title: Provider Ref
      type: object
      required:
      - plan_code
      - period
      - amount_rub
      - status
      title: PaymentItem