Atomic Deposit API
Switches a user's direct deposit at their payroll or HR provider, supporting total, fixed, and percent distribution splits. Surfaced through the deposit task operation and exposes the user's current deposit accounts on file.
Switches a user's direct deposit at their payroll or HR provider, supporting total, fixed, and percent distribution splits. Surfaced through the deposit task operation and exposes the user's current deposit accounts on file.
openapi: 3.0.3
info:
title: Atomic API
description: >-
Representative OpenAPI description of Atomic's payroll and financial
connectivity API (UserLink and PayLink). Atomic lets applications
switch direct deposit, verify income and employment, retrieve payroll
data, and update payment methods on file through user-permissioned
access. The Transact SDK is an embedded, hosted front-end launched with
a publicToken that drives deposit, verify, and tax task workflows on top
of these endpoints. This is a faithful, non-exhaustive representation
authored by API Evangelist from public documentation, not an official
Atomic artifact.
termsOfService: https://atomicfi.com/legal
contact:
name: Atomic Support
url: https://docs.atomicfi.com
version: '1.0'
servers:
- url: https://api.atomicfi.com
description: Production
- url: https://sandbox-api.atomicfi.com
description: Sandbox
- url: https://pci.atomicfi.com
description: Production PCI host (PayLink card data)
- url: https://sandbox-pci.atomicfi.com
description: Sandbox PCI host (PayLink card data)
security:
- ApiKeyAuth: []
tags:
- name: Access Tokens
- name: Transact
- name: Company
- name: Tasks
- name: Data
- name: Linked Accounts
- name: PayLink
- name: Users
- name: Webhooks
- name: Secrets
paths:
/access-token:
post:
operationId: createAccessToken
tags:
- Access Tokens
summary: Create an access token
description: >-
Exchanges your API Key and Secret for a publicToken used to
initialize the Transact SDK on the client. Called from your backend.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccessTokenRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccessTokenResponse'
/access-token/{publicToken}/revoke:
put:
operationId: revokeAccessToken
tags:
- Access Tokens
summary: Revoke an access token
description: Invalidates an existing publicToken so it can no longer access API resources.
parameters:
- $ref: '#/components/parameters/PublicTokenPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResult'
/company/search:
post:
operationId: searchCompanies
tags:
- Company
summary: Search companies
description: Find employers or merchants supported for a given product.
security:
- ApiKeyAuth: []
- PublicTokenAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CompanySearchRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Company'
/company/list:
get:
operationId: listCompanies
tags:
- Company
summary: List companies
parameters:
- name: product
in: query
schema:
type: string
enum: [deposit, verify, tax, manage]
- name: scope
in: query
schema:
type: string
example: user-link
- name: limit
in: query
schema:
type: integer
default: 100
- name: skip
in: query
schema:
type: integer
default: 0
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Company'
/company/{companyId}/details:
get:
operationId: getCompanyDetails
tags:
- Company
summary: Get company details
parameters:
- name: companyId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Company'
/task/{taskId}/details:
get:
operationId: getTaskDetails
tags:
- Tasks
summary: Get task details
parameters:
- $ref: '#/components/parameters/TaskIdPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
/task/{taskId}/status:
get:
operationId: getTaskStatus
tags:
- Tasks
summary: Get task status
parameters:
- $ref: '#/components/parameters/TaskIdPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TaskStatusResponse'
/task/{taskId}/file/{fileId}/generate-url:
get:
operationId: generateTaskFileUrl
tags:
- Tasks
summary: Generate a presigned file URL
parameters:
- $ref: '#/components/parameters/TaskIdPath'
- name: fileId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
/task/prescreen:
post:
operationId: prescreenTask
tags:
- Tasks
summary: Prescreen a task (beta)
description: Returns a confidence signal on whether a company can be connected for a product.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PrescreenRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
confidence:
type: string
enum: [HIGH, LOW]
/task-workflow/from-linked-account:
post:
operationId: createTaskWorkflowFromLinkedAccount
tags:
- Tasks
- Linked Accounts
summary: Start a task workflow from a linked account
description: >-
Runs deposit, verify, or tax tasks against an already-connected
linked account without re-authenticating the user.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TaskWorkflowFromLinkedAccountRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/TaskWorkflowResponse'
/deposit-accounts/{identifier}:
get:
operationId: getDepositAccounts
tags:
- Data
summary: Get deposit accounts
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/employment/{identifier}:
get:
operationId: getEmployment
tags:
- Data
summary: Get employment data
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/identity/{identifier}:
get:
operationId: getIdentity
tags:
- Data
summary: Get identity data
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/income/{identifier}:
get:
operationId: getIncome
tags:
- Data
summary: Get income data
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/statements/{identifier}:
get:
operationId: getStatements
tags:
- Data
summary: Get statements (paystubs)
parameters:
- $ref: '#/components/parameters/IdentifierPath'
- name: limit
in: query
schema:
type: integer
default: 10
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/timesheets/{identifier}:
get:
operationId: getTimesheets
tags:
- Data
summary: Get timesheets
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/taxes/{identifier}:
get:
operationId: getTaxes
tags:
- Data
summary: Get taxes (W-2 / 1099)
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/linked-account/list/{identifier}:
get:
operationId: listLinkedAccounts
tags:
- Linked Accounts
summary: List linked accounts
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/LinkedAccount'
/pay-link/actions-for-company/{companyId}:
get:
operationId: getPayLinkActionsForCompany
tags:
- PayLink
summary: List available PayLink actions for a company
parameters:
- name: companyId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/pay-link/accounts:
get:
operationId: getPayLinkAccounts
tags:
- PayLink
summary: Retrieve a user's connected PayLink accounts
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
/user:
put:
operationId: updateUser
tags:
- Users
summary: Update a user
description: Stores destination bank accounts or cards to present during a task workflow.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUserRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResult'
/user/{identifier}/tasks:
get:
operationId: getUserTasks
tags:
- Users
summary: Get a user's tasks
parameters:
- $ref: '#/components/parameters/IdentifierPath'
- name: status
in: query
schema:
type: string
- name: payrollDataAvailable
in: query
schema:
type: boolean
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Task'
/user/{identifier}/end-monitoring:
put:
operationId: endUserMonitoring
tags:
- Users
summary: End monitoring for a user
parameters:
- $ref: '#/components/parameters/IdentifierPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResult'
/webhooks/endpoints:
get:
operationId: listWebhookEndpoints
tags:
- Webhooks
summary: List webhook endpoints
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WebhookEndpoint'
post:
operationId: createWebhookEndpoint
tags:
- Webhooks
summary: Create a webhook endpoint
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookEndpointRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookEndpoint'
/webhooks/endpoints/{id}:
put:
operationId: updateWebhookEndpoint
tags:
- Webhooks
summary: Update a webhook endpoint
parameters:
- $ref: '#/components/parameters/IdPath'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookEndpointRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookEndpoint'
delete:
operationId: deleteWebhookEndpoint
tags:
- Webhooks
summary: Delete a webhook endpoint
parameters:
- $ref: '#/components/parameters/IdPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResult'
/secrets:
get:
operationId: listSecrets
tags:
- Secrets
summary: List signing secrets
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Secret'
post:
operationId: createSecret
tags:
- Secrets
summary: Create a signing secret
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Secret'
/secrets/{id}:
delete:
operationId: deleteSecret
tags:
- Secrets
summary: Delete a signing secret
parameters:
- $ref: '#/components/parameters/IdPath'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResult'
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: >-
API Key sent in the x-api-key header, paired with the x-api-secret
header. Used for backend-to-backend calls.
PublicTokenAuth:
type: apiKey
in: header
name: x-public-token
description: Public token for permitted client-side requests.
parameters:
IdentifierPath:
name: identifier
in: path
required: true
description: Your unique identifier for the end user.
schema:
type: string
TaskIdPath:
name: taskId
in: path
required: true
schema:
type: string
PublicTokenPath:
name: publicToken
in: path
required: true
schema:
type: string
IdPath:
name: id
in: path
required: true
schema:
type: string
schemas:
CreateAccessTokenRequest:
type: object
required:
- identifier
properties:
identifier:
type: string
description: Your unique identifier for the end user.
tokenLifetime:
type: integer
description: Lifetime of the returned publicToken in seconds.
example: 86400
AccessTokenResponse:
type: object
properties:
data:
type: object
properties:
publicToken:
type: string
CompanySearchRequest:
type: object
properties:
query:
type: string
product:
type: string
enum: [deposit, verify, tax, manage]
scopes:
type: array
items:
type: string
Company:
type: object
properties:
_id:
type: string
name:
type: string
status:
type: string
branding:
type: object
tags:
type: array
items:
type: string
PrescreenRequest:
type: object
properties:
company:
type: object
properties:
name:
type: string
id:
type: string
product:
type: string
enum: [deposit, verify, tax]
Task:
type: object
properties:
_id:
type: string
status:
type: string
enum: [queued, processing, completed, failed]
product:
type: string
authentication:
type: string
company:
$ref: '#/components/schemas/Company'
payrollDataAvailable:
type: boolean
createdAt:
type: string
format: date-time
TaskStatusResponse:
type: object
properties:
data:
type: object
properties:
task:
type: object
properties:
createdAt:
type: string
format: date-time
status:
type: string
enum: [queued, processing, completed, failed]
payrollDataAvailable:
type: boolean
failReason:
type: string
TaskWorkflowFromLinkedAccountRequest:
type: object
required:
- linkedAccount
- tasks
properties:
linkedAccount:
type: string
tasks:
type: array
items:
$ref: '#/components/schemas/TaskDefinition'
TaskDefinition:
type: object
properties:
operation:
type: string
enum: [deposit, verify, tax]
onComplete:
type: string
enum: [continue, finish]
onFail:
type: string
enum: [continue, finish]
distribution:
type: object
properties:
type:
type: string
enum: [total, fixed, percent]
amount:
type: number
TaskWorkflowResponse:
type: object
properties:
task:
$ref: '#/components/schemas/Task'
taskWorkflow:
type: string
LinkedAccount:
type: object
properties:
_id:
type: string
valid:
type: boolean
company:
$ref: '#/components/schemas/Company'
lastSuccess:
type: string
format: date-time
lastFailure:
type: string
format: date-time
UpdateUserRequest:
type: object
required:
- identifier
properties:
identifier:
type: string
data:
type: object
properties:
bankAccounts:
type: array
items:
type: object
cards:
type: array
items:
type: object
WebhookEndpointRequest:
type: object
required:
- url
- eventTypes
properties:
url:
type: string
format: uri
secretId:
type: string
eventTypes:
type: array
items:
type: string
example:
- task-status-updated
WebhookEndpoint:
type: object
properties:
_id:
type: string
url:
type: string
format: uri
eventTypes:
type: array
items:
type: string
Secret:
type: object
properties:
_id:
type: string
name:
type: string
token:
type: string
createdAt:
type: string
format: date-time
SuccessResult:
type: object
properties:
result:
type: object
properties:
success:
type: boolean
success:
type: boolean