Affirm Authorization API
Server-side operations for authorizing Affirm transactions after a customer completes the checkout flow and a checkout token is returned.
Server-side operations for authorizing Affirm transactions after a customer completes the checkout flow and a checkout token is returned.
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/affirm-authorization-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Affirm Direct Authorization API
description: The Affirm Direct API is a flexible integration that allows merchants to embed the full Affirm checkout and payment authorization flow directly into their website, giving complete control over the front-end user experience and back-end transaction processing logic. It supports inline checkout via modal or redirect to affirm.com, and handles the full transaction lifecycle including authorization, capture, void, and refund operations. This spec covers the server-side endpoints used in the Direct API integration pattern, including the checkout token exchange for authorization and subsequent transaction management operations. Authentication is handled via HTTP Basic Authentication using API keys from the Affirm Merchant Portal.
version: '1.0'
contact:
name: Affirm Developer Support
url: https://docs.affirm.com/developers/docs/development-quickstart
termsOfService: https://www.affirm.com/legal/merchant-terms
servers:
- url: https://api.affirm.com/api/v1
description: Production Server
- url: https://sandbox.affirm.com/api/v1
description: Sandbox Server
security:
- basicAuth: []
tags:
- name: Authorization
description: Server-side operations for authorizing Affirm transactions after a customer completes the checkout flow and a checkout token is returned.
paths:
/transactions:
post:
operationId: authorizeDirectTransaction
summary: Affirm Authorize a Transaction
description: Exchanges a checkout token for a transaction authorization, completing the server-side portion of the Direct API flow. This call must be made from the merchant server after the browser-side affirm.js returns a checkout token via the user_confirmation_url callback. The authorization places a hold on the customer's Affirm credit. The resulting transaction must be captured within the authorization window to transfer funds to the merchant.
tags:
- Authorization
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- checkout_token
properties:
checkout_token:
type: string
description: The checkout token returned by the Affirm checkout flow via the user_confirmation_url callback. This token is single-use and expires after a short window.
order_id:
type: string
description: The merchant's internal order identifier to associate with this authorization for reconciliation purposes.
examples:
authorizeDirectTransactionRequestExample:
summary: Default authorizeDirectTransaction request
x-microcks-default: true
value:
checkout_token: abc123def456abc123def456abc123de
order_id: '500123'
responses:
'200':
description: Transaction authorized successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
examples:
authorizeDirectTransaction200Example:
summary: Default authorizeDirectTransaction 200 response
x-microcks-default: true
value:
id: '500123'
checkout_id: '500123'
order_id: '500123'
status: authorized
amount: 1
amount_refunded: 1
currency: USD
created: '2025-03-15T14:30:00Z'
authorization_expiration: '2025-03-15T14:30:00Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/files:
post:
operationId: uploadFile
summary: Affirm Upload a File
description: Uploads a file to Affirm's servers for use as dispute evidence. Returns a file identifier that can be referenced when submitting evidence via the Disputes API. Supported file types include images (JPEG, PNG) and documents (PDF).
tags:
- Authorization
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: The file to upload as binary data.
purpose:
type: string
description: The intended purpose of the uploaded file.
enum:
- dispute_evidence
responses:
'200':
description: File uploaded successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/FileObject'
examples:
uploadFile200Example:
summary: Default uploadFile 200 response
x-microcks-default: true
value:
id: '500123'
filename: Example Merchant
size: 1
content_type: standard
purpose: example_value
created: '2025-03-15T14:30:00Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/files/{id}:
get:
operationId: downloadFile
summary: Affirm Download a File
description: Downloads a previously uploaded file by its identifier. Returns the raw file content with the appropriate content type header.
tags:
- Authorization
parameters:
- name: id
in: path
required: true
description: The unique identifier of the file to download.
schema:
type: string
example: '500123'
responses:
'200':
description: File content returned successfully.
content:
application/octet-stream:
schema:
type: string
format: binary
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
FileObject:
type: object
description: Represents a file uploaded to Affirm's servers.
properties:
id:
type: string
description: Unique identifier for the uploaded file.
example: '500123'
filename:
type: string
description: Original filename of the uploaded file.
example: Example Merchant
size:
type: integer
description: File size in bytes.
example: 1
content_type:
type: string
description: MIME type of the uploaded file.
example: standard
purpose:
type: string
description: Intended purpose of the file.
example: example_value
created:
type: string
format: date-time
description: Upload timestamp in RFC 3339 format.
example: '2025-03-15T14:30:00Z'
Error:
type: object
description: Standard error response returned by the Affirm API.
properties:
status_code:
type: integer
description: HTTP status code of the error.
example: 1
code:
type: string
description: Machine-readable error code string.
example: example_value
message:
type: string
description: Human-readable description of the error.
example: example_value
Transaction:
type: object
description: Represents an Affirm payment transaction at any point in its lifecycle.
properties:
id:
type: string
description: Unique identifier for this transaction.
example: '500123'
checkout_id:
type: string
description: Identifier of the checkout session that originated this transaction.
example: '500123'
order_id:
type: string
description: Merchant's internal order identifier.
example: '500123'
status:
type: string
description: Current lifecycle status of the transaction.
enum:
- authorized
- captured
- voided
- refunded
- partially_refunded
example: authorized
amount:
type: integer
description: Original authorized amount in cents.
example: 1
amount_refunded:
type: integer
description: Cumulative amount refunded in cents.
example: 1
currency:
type: string
description: ISO 4217 currency code.
example: USD
created:
type: string
format: date-time
description: Creation timestamp in RFC 3339 format.
example: '2025-03-15T14:30:00Z'
authorization_expiration:
type: string
format: date-time
description: Timestamp after which the authorization can no longer be captured.
example: '2025-03-15T14:30:00Z'
responses:
Unauthorized:
description: Unauthorized. Authentication credentials are missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not found. The requested resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request. The request body or parameters are invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
basicAuth:
type: http
scheme: basic
description: HTTP Basic Authentication using the merchant's public API key as the username and private API key as the password, Base64-encoded as per RFC 7617.
externalDocs:
description: Affirm Direct API Overview
url: https://docs.affirm.com/payments/docs/direct-api-overview