Paidy Tokens API
Manage recurring payment tokens for subscription billing.
Manage recurring payment tokens for subscription billing.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/paidy:paidy-tokens-api"
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.
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: 3.2.0
info:
title: Paidy Tokens API
description: Paidy is a Japanese buy now, pay later (BNPL) and digital payment service that enables Japanese consumers to make purchases and pay later via monthly consolidated billing. Merchants integrate Paidy Checkout (JavaScript) and the Paidy REST API to accept deferred payments, manage authorizations, capture funds, issue refunds, and handle recurring payments via stored tokens.
version: '2018-04-10'
contact:
name: Paidy Developer Support
url: https://paidy.com/merchant/
termsOfService: https://paidy.com/merchant/
license:
name: Proprietary
url: https://paidy.com/merchant/
servers:
- url: https://api.paidy.com
description: Production server
security:
- BearerAuth: []
tags:
- name: Tokens
description: Manage recurring payment tokens for subscription billing.
paths:
/tokens/:
get:
tags:
- Tokens
summary: Retrieve all tokens
description: Retrieves all tokens associated with the merchant. Returns only tokens with "active" or "suspended" status (not deleted tokens).
operationId: listTokens
parameters:
- $ref: '#/components/parameters/PaidyVersion'
responses:
'200':
description: List of tokens retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Token'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/tokens/{id}:
get:
tags:
- Tokens
summary: Retrieve a token
description: Retrieves a specific token by its unique ID.
operationId: getToken
parameters:
- $ref: '#/components/parameters/TokenId'
- $ref: '#/components/parameters/PaidyVersion'
responses:
'200':
description: Token retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Token not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/tokens/{id}/suspend:
post:
tags:
- Tokens
summary: Suspend a token
description: Suspends an active token, preventing it from being used for new payments. The token status changes to "suspended".
operationId: suspendToken
parameters:
- $ref: '#/components/parameters/TokenId'
- $ref: '#/components/parameters/PaidyVersion'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TokenActionRequest'
example:
wallet_id: default
reason:
code: merchant.requested
description: Pausing subscription at merchant request
responses:
'200':
description: Token suspended successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Token not found or deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/tokens/{id}/resume:
post:
tags:
- Tokens
summary: Resume a token
description: Resumes a suspended token, allowing it to be used for payments again. The token status changes to "active".
operationId: resumeToken
parameters:
- $ref: '#/components/parameters/TokenId'
- $ref: '#/components/parameters/PaidyVersion'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TokenActionRequest'
example:
wallet_id: default
reason:
code: merchant.requested
description: Resuming subscription
responses:
'200':
description: Token resumed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Token not found or deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/tokens/{id}/delete:
post:
tags:
- Tokens
summary: Delete a token
description: Permanently deletes a token. Deleted tokens cannot be recovered. The token status changes to "deleted" and the deleted_at timestamp is populated.
operationId: deleteToken
parameters:
- $ref: '#/components/parameters/TokenId'
- $ref: '#/components/parameters/PaidyVersion'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TokenDeleteRequest'
example:
wallet_id: default
reason:
code: consumer.requested
description: Consumer requested cancellation
responses:
'200':
description: Token deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Token'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Token not found or already deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
ConsumerOrigin:
type: object
properties:
name:
type: string
description: Consumer name
example: Taro Yamada
email:
type: string
format: email
description: Consumer email address
example: taro@example.com
phone:
type: string
description: Consumer phone number
example: 090-1234-5678
address:
$ref: '#/components/schemas/Address'
Suspension:
type: object
properties:
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when suspension occurred
example: '2026-06-13T00:00:00Z'
authority:
type: string
description: Entity that performed the suspension
example: merchant
TokenDeleteRequest:
type: object
required:
- reason
properties:
wallet_id:
type: string
description: Merchant wallet identifier; defaults to "default"
example: default
reason:
$ref: '#/components/schemas/TokenDeleteReason'
TokenDeleteReason:
type: object
required:
- code
- description
properties:
code:
type: string
description: Reason code for token deletion
enum:
- consumer.requested
- subscription.expired
- merchant.requested
- fraud.detected
- general
example: consumer.requested
description:
type: string
description: Explanation for the deletion
example: Consumer requested cancellation
Metadata:
type: object
description: Key-value map for arbitrary data; maximum 20 keys
additionalProperties:
type: string
maxProperties: 20
example:
custom_field: value
TokenActionRequest:
type: object
required:
- reason
properties:
wallet_id:
type: string
description: Merchant wallet identifier; defaults to "default"
example: default
reason:
$ref: '#/components/schemas/TokenReason'
Token:
type: object
properties:
id:
type: string
description: Unique token ID (begins with `tok_`)
example: tok_example123456
merchant_id:
type: string
description: Paidy-assigned merchant ID (begins with `mer_`)
example: mer_example123456
wallet_id:
type: string
description: Grouping identifier for tokens; defaults to "default"
example: default
status:
type: string
description: Current token status
enum:
- active
- suspended
- deleted
example: active
origin:
$ref: '#/components/schemas/ConsumerOrigin'
description:
type: string
description: Merchant-provided token description
example: Monthly plan token
kind:
type: string
description: Token type; always "recurring"
example: recurring
metadata:
$ref: '#/components/schemas/Metadata'
consumer_id:
type: string
description: Paidy-generated consumer ID (begins with `con_`)
example: con_example123456
suspensions:
type: array
description: Suspension history records
items:
$ref: '#/components/schemas/Suspension'
test:
type: boolean
description: Indicates if this is a test token
example: false
version_nr:
type: number
description: Increments with each update
example: 1
created_at:
type: string
format: date-time
description: ISO 8601 creation timestamp
example: '2026-06-13T00:00:00Z'
updated_at:
type: string
format: date-time
description: ISO 8601 last update timestamp
example: '2026-06-13T00:00:00Z'
activated_at:
type: string
format: date-time
description: ISO 8601 activation timestamp
example: '2026-06-13T00:00:00Z'
deleted_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 deletion timestamp; null if not deleted
example: null
TokenReason:
type: object
required:
- code
- description
properties:
code:
type: string
description: Reason code for token suspension or resumption
enum:
- consumer.requested
- merchant.requested
- fraud.suspected
- general
example: merchant.requested
description:
type: string
description: Explanation for the action
example: Pausing subscription at merchant request
Address:
type: object
properties:
line1:
type: string
description: Building or apartment information
example: Shibuya 1-1
line2:
type: string
description: District or land details
example: Apartment 301
city:
type: string
description: Municipality name
example: Tokyo
state:
type: string
description: Prefecture name
example: Tokyo
zip:
type: string
description: Postal code in format NNN-NNNN; required with at least one other field
example: 150-0001
Error:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
code:
type: string
description: Paidy error code
example: request_content.malformed
message:
type: string
description: Human-readable error description
example: Missing or incorrectly formatted required fields
parameters:
PaidyVersion:
name: Paidy-Version
in: header
required: false
description: API version date. Recommended value is 2018-04-10.
schema:
type: string
example: '2018-04-10'
TokenId:
name: id
in: path
required: true
description: Unique token ID (begins with `tok_`)
schema:
type: string
example: tok_example123456
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: 'Use your Paidy secret key (prefixed with `sk_`) as the bearer token. Never share your secret key. Use test keys for sandbox testing.
'
externalDocs:
description: Paidy API Reference
url: https://paidy.com/docs/api/en/