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/cash-app-default-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 email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Cash App API
version: 1.0.0
description: 'Operations tagged across 9 of this provider''s published API definitions: cash-app-billing-agreements-deprecated-openapi.json, cash-app-checkouts-openapi.json, cash-app-configuration-openapi.json, cash-app-disputes-openapi.json, cash-app-grants-afterpay-openapi.json, cash-app-grants-cash-app-pay-openapi.json, cash-app-orders-openapi.json, cash-app-payments-openapi.json, cash-app-service-status-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
tags:
- name: ''
paths:
/v2/billing-agreements/approvals:
post:
operationId: start-billing-agreement-approval
summary: Start Billing Agreement Approval Process
description: 'Initiates the approval process for a new billing agreement.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: The consumer approved the billing agreement
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementApprovalResponse'
'401':
description: 'Authentication failed or insufficient permissions.
| errorCode | Description |
| --- | --- |
| unauthorized | The API credentials are invalid or missing. |
| insufficient_permissions | The merchant lacks the required ''merchant_api_v2/initiate'' permission. |
'
content:
application/json:
schema:
description: Any type
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'415':
description: Unsupported Media Type - Content-Type header is missing or invalid
content:
application/json:
schema:
description: Any type
'422':
description: '| errorCode | Description |
| --- | --- |
| invalid_object | One or more required fields in the request body were missing or invalid. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The billing agreement approval request details
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementApprovalRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements:
post:
operationId: create-billing-agreement
summary: Create Billing Agreement
description: 'Creates a new billing agreement from an order token.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*
'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: Billing agreement created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
| headless_billing_agreement_not_authorised | Headless flow is not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'412':
description: '| errorCode | Description |
| --- | --- |
| consumer_ineligible | Consumer not eligible |
'
content:
application/json:
schema:
description: Any type
'415':
description: Unsupported Media Type - Content-Type header is missing or invalid
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the details needed to create a billing agreement
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAgreementRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/alias:
post:
operationId: alias-billing-agreement
summary: Create Billing Agreement Alias
description: 'Creates an alias for an existing billing agreement to help load payment schedule widget.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: Alias created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementAliasResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'415':
description: Unsupported Media Type - Content-Type header is missing or invalid
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the billing agreement token and optional duration
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementAliasRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/cancel:
put:
operationId: cancel-billing-agreement-alt
summary: Cancel Billing Agreement (Alternative)
description: 'Alternative endpoint to cancel a billing agreement using a request body instead of path parameter.
Functionally equivalent to DELETE /v2/billing-agreements/{token}.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: Billing agreement cancelled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'404':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_found | The specified billing agreement token was not found. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the billing agreement token to cancel
content:
application/json:
schema:
$ref: '#/components/schemas/CancelBillingAgreementRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/offers:
post:
operationId: retrieve-billing-agreement-offers
summary: Retrieve Billing Agreement Offers
description: 'Retrieves available offers for billing agreements based on amount and frequency.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: Offers retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OffersResponse'
'401':
description: 'Authentication failed or insufficient permissions.
| errorCode | Description |
| --- | --- |
| unauthorized | The API credentials are invalid or missing. |
'
content:
application/json:
schema:
description: Any type
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'422':
description: '| errorCode | Description |
| --- | --- |
| invalid_object | One or more required fields in the request body were missing or invalid. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the amount and billing agreement token to check offers for
content:
application/json:
schema:
$ref: '#/components/schemas/OffersRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/retrieve:
post:
operationId: retrieve-billing-agreement
summary: Retrieve Billing Agreement
description: 'Alternative endpoint to retrieve billing agreement details using a request body instead of path parameter.
Functionally equivalent to GET /v2/billing-agreements/{token}.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
responses:
'200':
description: Billing agreement details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'404':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_found | The specified billing agreement token was not found. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the billing agreement token to retrieve
content:
application/json:
schema:
$ref: '#/components/schemas/GetBillingAgreementRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/start:
post:
operationId: start-billing-agreement-link
summary: Start Billing Agreement Link Flow
description: 'Initiates the headless billing agreement link flow process.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'201':
description: Link flow started successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LinkStartResponse'
'404':
description: '| errorCode | Description |
| --- | --- |
| not_found | Afterpay consumer account does not exist |
'
content:
application/json:
schema:
description: Any type
'412':
description: '| errorCode | Description |
| --- | --- |
| invalid_state | Failed to send code |
'
content:
application/json:
schema:
description: Any type
'429':
description: '| errorCode | Description |
| --- | --- |
| too_many_requests | Too many requests |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the details needed to start the billing agreement link flow
content:
application/json:
schema:
$ref: '#/components/schemas/LinkStartRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/billing-agreements/{token}:
get:
operationId: get-billing-agreement
summary: Get Billing Agreement Details
description: 'Retrieves the details of a billing agreement using its token.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: token
in: path
description: The unique identifier token of the billing agreement to retrieve
required: true
schema:
type: string
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
responses:
'200':
description: Billing agreement details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'404':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_found | The specified billing agreement token was not found. |
'
content:
application/json:
schema:
description: Any type
delete:
operationId: cancel-billing-agreement
summary: Cancel Billing Agreement
description: 'Cancels an existing billing agreement using its token.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: token
in: path
description: The unique identifier token of the billing agreement to cancel
required: true
schema:
type: string
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
responses:
'200':
description: Billing agreement cancelled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillingAgreementResponse'
'403':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_authorised | Recurring payments are not enabled for this merchant. |
'
content:
application/json:
schema:
description: Any type
'404':
description: '| errorCode | Description |
| --- | --- |
| billing_agreement_not_found | The specified billing agreement token was not found. |
'
content:
application/json:
schema:
description: Any type
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/recurring-payments:
post:
operationId: capture-full-recurring-payment
summary: Capture Full Recurring Payment
description: 'Creates and immediately captures a recurring payment using a billing agreement token.
This endpoint combines authorization and capture into a single step.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'201':
description: '| Status | Description |
| ----- | ----- |
| `APPROVED` | If payment is approved by Afterpay, returns a Payment object in response, with a status of "APPROVED". |
| `DECLINED` | If payment is declined by Afterpay, for example, if expired payment method, returns a Payment object in response, with a status of "DECLINED". Please advise the consumer to contact the Afterpay Customer Service team for more information. |
'
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'402':
description: 'If payment is declined by Afterpay, for example, if invalid card details were entered, returns a Payment object in response, with a `status` of "DECLINED" and a `paymentState` of "AUTH_DECLINED". Please advise the consumer to contact the Afterpay Customer Service team for more information.
As well, the following errorCodes are possible:
| errorCode | Description |
| --- | --- |
| invalid_token | The checkout token is invalid, expired, or does not exist.
'
content:
application/json:
schema:
description: Any type
'415':
description: Unsupported Media Type
content:
application/json:
schema:
description: Any type
'422':
description: '| errorCode | Description |
| --- | --- |
| invalid_object | One or more required fields were missing or invalid. |
| unsupported_payment_type | The amount is outside of the merchant''s payment limits, as returned by Get Configuration. |
| unsupported_currency | The amount is outside of the merchant''s payment limits, as returned by Get Configuration. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the payment details to process
content:
application/json:
schema:
$ref: '#/components/schemas/RecurringPaymentRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/recurring-payments/auth:
post:
operationId: auth
summary: Authorize Recurring Payment
description: 'Authorizes a recurring payment using a billing agreement token.
This endpoint performs authorization only, requiring a separate capture step.
*Deprecated. For new integrations, see [Grants](https://afterpay.docs.buildwithfern.com/afterpay-online-developer/api-reference/reference/grants/start-grant-approval).*'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'201':
description: If the payment is approved by Afterpay, a Payment object is returned with a `status` of **APPROVED** and a `paymentState` of **AUTH_APPROVED**.
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentAuth'
'402':
description: 'If payment is declined by Afterpay, for example, if invalid card details were entered, returns a Payment object in response, with a `status` of "DECLINED" and a `paymentState` of "AUTH_DECLINED". Please advise the consumer to contact the Afterpay Customer Service team for more information.
As well, the following errorCodes are possible:
| errorCode | Description |
| --- | --- |
| invalid_token | The checkout token is invalid, expired, or does not exist.
'
content:
application/json:
schema:
description: Any type
'412':
description: '| errorCode | Description |
| --- | --- |
|npuf_eligibility_mismatch|Npuf eligibility mismatch|
'
content:
application/json:
schema:
description: Any type
'415':
description: Unsupported Media Type
content:
application/json:
schema:
description: Any type
'422':
description: '| errorCode | Description |
| --- | --- |
| invalid_object | One or more required fields were missing or invalid. |
| unsupported_payment_type | The amount is outside of the merchant''s payment limits, as returned by Get Configuration. |
| unsupported_currency | The amount is outside of the merchant''s payment limits, as returned by Get Configuration. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: The request containing the payment details to authorize
content:
application/json:
schema:
$ref: '#/components/schemas/RecurringPaymentRequest'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/checkouts:
post:
operationId: create-checkout-1
summary: Create Checkout
description: 'The `checkouts` endpoint is responsible for creating a new checkout and returning the associated checkout token.
'
tags:
- ''
parameters:
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'201':
description: Returns a token, expiry date/time, and checkout URL if successful.
content:
application/json:
schema:
$ref: '#/components/schemas/Checkout-Response'
'400':
description: Bad Request
content:
application/json:
schema:
description: Any type
'422':
description: '| errorCode | Description |
| --- | --- |
| invalid_object | One or more required fields were missing or invalid. |
| unsupported_payment_type | The `amount` is outside of the merchant''s payment limits, as returned by GET Configuration. |
| unsupported_currency | One or more Money objects contained a currency that differs from the merchant''s account currency. |
'
content:
application/json:
schema:
description: Any type
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Checkout-Request'
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/checkouts/{token}:
get:
operationId: get-checkout
summary: Get Checkout
description: 'This endpoint retrieves an incomplete individual checkout by token.
Checkout details are only retained in this temporary format for up to 60 minutes. If a checkout token expires or has an order created against it, it can no longer be retrieved from this endpoint.
To retrieve a [Payment](../docs/ONLINE-API/Payment-object.md) record (Afterpay Order) along with its associated checkout details, see Get Payment By Token.
'
tags:
- ''
parameters:
- name: token
in: path
description: The token of the checkout to be retrieved.
required: true
schema:
type: string
- name: Authorization
in: header
description: Basic authentication
required: true
schema:
type: string
- name: User-Agent
in: header
required: true
schema:
type: string
- name: Accept
in: header
required: false
schema:
type: string
default: application/json
responses:
'200':
description: 'Returns an object combining the [Checkout Request](reference/Checkouts.v2.yaml/components/schemas/Checkout-Request) and [Checkout Response](reference/Checkouts.v2.yaml/components/schemas/Checkout-Response) for a provided token.
'
content:
application/json:
schema:
$ref: '#/components/schemas/get-checkout_Response_200'
'404':
description: No checkout token was provided.
content:
application/json:
schema:
description: Any type
'412':
description: The checkout token is invalid, expired, completed, or does not exist.
content:
application/json:
schema:
description: Any type
servers:
- url: https://global-api-sandbox.afterpay.com
description: Sandbox
- url: https://global-api.afterpay.com
description: Production
/v2/configuration:
get:
operationId: get-configuration
summary: Get Configuration
description: 'Use this endpoint to retrieve the merchant''s applicable payment limits.
A request to [Create Checkout](Checkouts.v2.yaml/paths/~1v2~1checkouts/post) may be rejected if the order amount is not between the `minimumAmount` and `maximumAmount` (inclusive).
Afterpay merchant configuration does not change frequently. For this reason, the configuration response includes Cache-Control headers to minimise network round trips when using a modern HTTP client. You should call Get Configuration on a fixed schedule, preferably once per day.
**Connection Timeouts**
| Timeout | Time (Seconds) |
|---------|----------------|
| Open | 10 |
| Read | 20 |
**Example request**
`GET /v2/configuration?include=publicid&include=consumerlending&include=paybyinstallment`'
tags:
- ''
parameters:
- name: include
in: q
# --- truncated at 32 KB (164 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cash-app/refs/heads/main/openapi/cash-app-default-api-openapi.yml