
PayLink API Reference
Atomic's API is built around RESTful principles, using JSON encoded request and response bodies.
To get going quickly, we recommend using Postman - an API collaboration tool. Atomic provides a public workspace which you can fork into your own workspace. Use the button below to get started.
The workspace comes fully documented with:
- several useful flows using our APIs
- requests for all of the Atomic endpoints
- an environment containing placeholders for all the variables needed to connect to your Sandbox instance of Console
Authentication
Atomic uses a combination of API keys and access tokens to authenticate requests. Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, etc.
API Key and Secret
You can retrieve and manage your API key and secrets on the credentials page on the Atomic Console. Include these headers in requests that are secured with your API Key and Secret:
Header | Description |
---|---|
x-api-key | API Key for your Atomic account |
x-api-secret | API Secret for your Atomic account |
Access Token
A publicToken
will be included in the headers of requests which are made via the end user from client-side code, e.g. searching for their employer or initializing a Task. The publicToken
defaults to a 24 hour expiry, but can be set to a minimum of 30 minutes or a maximum of 30 days by passing in the desired duration using the optional tokenLifetime
property in the call to /access-token
. The minimum is to allow for users to complete variations of the flows, such as MFA, which can take time.
Header | Description |
---|---|
x-public-token | Public token generated during access token creation. |
Errors
Our API returns standard HTTP success or error status codes. For errors, we will also include extra information about what went wrong encoded in the response as JSON. The various HTTP status codes we might return are listed below.
Code | Title | Description |
---|---|---|
200 | OK | The request was successful. |
400 | Bad Request | The request was unacceptable. |
401 | Unauthorized | Missing or invalid credentials. |
404 | Not Found | The resource does not exist. |
422 | Validation Error | A validation error occurred. |
429 | Too Many Requests | Too may requests, please try again later. |
50X | Internal Server Error | An error occurred with our API. |
Access Token
An AccessToken
grants access to Atomic's API resources for an end user when its value is used as the x-public-token
header.
The required data depends on your use case. For PayLink Manage, only the identifier
field is needed. For PayLink Switch, you must provide user identity information along with either card or account details. We also support flexible integration options for when and how data is provided—for example, allowing the user to enter their CVV manually if needed.
Create Access Token
This API initializes a flow through the Atomic experience by creating an AccessToken
that is used to instantiate the Transact SDK. The required fields depend on your specific use case.
PayLink Manage: Only the identifier
field is required.
PayLink Switch: You need the identifier
, identity
object, and either cards
or accounts
arrays. At least one card or account must be provided.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
pci.atomicfi.com
in production, and sandbox-pci.atomicfi.com
in sandbox. Required Properties
identifier
string- A unique identifier from your system that will be used to reference this user. This could be a primary key used in your system or another unique identifier. Creating multiple access tokens with the same identifier will tie those tokens to the same user in Atomic's system.
cards
[CardDetails]- An array of card detail objects which the end user can select from to update their payment method. Required for PayLink Switch when using cards as the payment method. At least one card or account must be provided.
accounts
[AccountDetails]- An array of account detail objects which the end user can select from to update their payment method. Required for PayLink Switch when using bank accounts as the payment method. At least one card or account must be provided.
identity
object- Details about the end user's identity. Required for PayLink Switch as these details are needed to update payment methods in merchant systems.
Child Properties
Required Properties
firstName
string- End user's first name
lastName
string- End user's last name
postalCode
string- End user's postal code from their address
address
string- End user's street address
city
string- End user's home city
state
string- End user's home state. 2 digit state code is expected.
phone
string- End user's 10 digit phone number without
()
or-
PayLink Manage
POST
/access-tokenPayLink Switch
POST
/access-tokenBaaS passthrough variation
Use this variation when your application is not PCI compliant and relies on a BaaS provider to handle card data. This allows Atomic to securely retrieve card information from your BaaS provider during the payment method update process.
See our guide on transmitting card data for details on whether this endpoint is right for your integration.
Properties not explicitly defined in this section function the same as the standard Create Access Token flow.
Required Properties
cards
[CardDetails]- An array of card detail objects which the end user can select from to update their card on file. Details for either an account or a card must be provided to complete the operation.
Child Properties
Required Properties
lastFour
string- The last four digits of a card number.
title
string- Title for the card
paymentService
object- Object containing details required for Atomic to connect to and utilitize a BaaS card provider
Child Properties
Required Properties
galileo
object- String which indicates the associated BaaS you use as your card provider. This example uses Galileo, if another other BaaS provider is required, please reach out to your contacts at Atomic.
Child Properties
Required Properties
apiLogin
string- Web service username, as provided by Galileo.
apiTransKey
string- Web service password, as provided by Galileo.
providerId
string- Galileo-issued provider identifier.
transactionId
string- A unique provider-generated ID to identify this API call. A UUID is preferred.
accountNo
string- The PRN, PAN or CAD of the account. For card-specific endpoints such as this one, the CAD is preferred. Do not use the PRN if more than one card has ever been associated with this account.
apiUrl
string- The production url that your organization uses to connect to Galileo.
PayLink Switch - BaaS passthrough
POST
/access-tokenResponse
Successfully creating an Access Token will return a payload with a data object containing a publicToken
. The publicToken
may be used to initialize the Transact SDK and is valid for tokenLifetime
seconds.
{
"data": {
"publicToken": "PUBLIC_TOKEN"
}
}
CDE Bypass Variation
Use this variation when you want to transmit card and identity data directly from the user's device to third-party systems, bypassing Atomic's Card Data Environment (CDE). This is useful when you have all the card data accessible in your app and want to avoid sending it through Atomic's servers.
See our guide on CDE Bypass for complete implementation details and to determine if this flow is right for your integration.
For a CDE Bypass flow, only the identifier
field is needed when creating an access token. Any card
, account
, or identity
fields will be provided directly to the Transact SDK later in the flow.
Required Properties
identifier
string- A unique identifier from your system that will be used to reference this user. This could be a primary key used in your system or another unique identifier. Creating multiple access tokens with the same identifier will tie those tokens to the same user in Atomic's system.
PayLink Switch - CDE Bypass
POST
/access-tokenAccess Token Response
Creating an Access Token in this manner will return a payload containing a publicToken
. The publicToken
will be used to initialize the Transact SDK.
{
"data": {
"publicToken": "PUBLIC_TOKEN"
}
}
Revoke Access Token
This endpoint is used to revoke an existing AccessToken
. This action invalidates the token, preventing it from being used to access Atomic's API resources.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
PUT
/access-token/:publicToken/revokeCompany
PayLink enables connectivity to merchant accounts, streaming services, and recurring bills to update payment methods and manage subscriptions. In this context, a 'Company' refers to the service or merchant that a user connects to in order to manage and update payment details.
Company Search
Use this endpoint to build a typeahead experience, as employed in our Transact SDK, or to get the company's _id
for deeplinking to the login section of Transact.
Search for a Company using a text query
. Searches can also be filtered by passing in additional properties detailed below.
Authentication can be handled via either the API Key and Secret method or the Access Token method.
POST
/company/searchAccounts
An Account
in the Atomic context refers to a connection to a third-party system. This connection enables both read and write operations on the linked system as authorized by the user. For instance, after linking a Netflix account, Atomic can retrieve account data or perform actions such as pausing the subscription or managing the user’s plan.
Get Accounts
This endpoint returns all Accounts associated with an end user.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
GET
/pay-link/accountsResponse
The response includes an Account
object.
accounts
[Account]- An array of
Account
objects.Child Properties
Required Properties
_id
string- Unique identifier for the PayLink Account connected by the end user.
processing
boolean- A boolean value indicating whether or not the account is processing.
connectionStatus
enum- The status of the account, either
initial
,connected
, ordisconnected
. If the account isinitial
, then the account has been selected but the user has not attempted to connect to it. If the account isconnected
then the account can be accessed. If the account isdisconnected
, then we cannot access the account with the given credentials. company
Company- An object containing details of the company to which the PayLink Account is connected.
Child Properties
Optional Properties
_id
stringUnique identifier for the company.name
stringThe name of the company.branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements. actions
[Actions]- The actions that can be performed on the account.
Child Properties
Optional Properties
actionId
stringThe ID of the action.type
enumAn enum representing the possible actions that can be performed on a PayLink Account.view-account
refresh
automated
booleanWhether or not the action is automated. Iftrue
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device. bills
[Bills]- The recurring expenses retrieved from the connected system, such as the actual Netflix expense on a Netflix account or a list of managed subscriptions on an Amazon account.
Child Properties
Required Properties
_id
string- Unique identifier for the bill.
sourceId
string- An ID of the account pulled from the connected system.
Optional Properties
name
stringThe name of the bill.amount
numberThe amount of the bill.amountDisclaimer
stringA disclaimer about how the bill amount was determined.autopayStatus
enumWhether the bill has autopay enabled. One ofenabled
,disabled
, orpaused
.billingCycle
stringThe billing cycle. One ofmonthly
,
bi-monthly
,every-three-months
,every-six-months
, orannually
.dueDate
dateThe due date of the bill.
paymentHistory
[BillingHistory]profiles
[Profiles]paymentMethod
PaymentMethodThe payment method of the bill, if different from the account payment methods.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.items
[BillingItems]Breakdown of billed items
Child Properties
usage
[Usage]The usage of resources limited by the bill.
Child Properties
Optional Properties
description
stringThe description of the limited resource.
limit
numberThe total amount of the limited resource available to use.
unit
stringThe units of usage of the limited resource. One of
gigabytes
,megabytes
,minutes
,kilowatts-per-hour
, orusers
.used
numberThe amount of the limited resource used in the current billing cycle.
plans
[Plan]The plans associated with the bill.
Child Properties
Optional Properties
sourceId
stringThe source ID of the plan.
typeId
stringThe type ID of the plan.
status
stringThe status of the plan.
description
stringThe description of the plan.
amount
numberThe amount of the plan.
freeTrial
booleanWhether the plan is on a free trial.
pendingChange
objectThe pending change of the plan.
Child Properties
Optional Properties
startDate
dateThe date that the changes will take effect.
endDate
dateThe date that the changes will no longer be in effect.
status
enumThe new plan status when the change takes effect, if status is changing. One Of
active
,inactive
,paused
, orcancelled
.amount
numberThe new plan amount when the change takes effect, if amount is changing.
typeId
stringThe new plan type id when the change takes effect, if plan type is changing.
description
stringThe new plan description when the change takes effect, if plan description is changing.
billingCycle
stringThe new billing cycle when the change takes effect, if billing cycle is changing.
company
CompanyAn object containing details of the company to which the bill connected. This field may not be returned in cases in which the company for the account does not exist in Atomic's system. An example is a subscription that is purchased via Amazon, like the Ad Free subscription for Prime Video. This bill will not have an associated
company
object, but is considered "managed by" the Amazon company stored in the bill's parent account.Child Properties
Optional Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements.
actions
[Actions]Child Properties
Optional Properties
actionId
stringThe ID of the action.
type
enumAn enum representing the possible actions that can be performed on the bill. This list includes all actions available for a bill. However, each user will only see a subset of these actions, tailored to their specific account and bill.
change-plan
cancel-plan
pause-plan
automated
booleanWhether or not the action is automated. If
true
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device.
Optional Properties
lastSyncedAt
dateThe last time the user's data was synced.
data
AccountDataAn object containing specific details of the account connected by the end user.
Child Properties
Required Properties
category
enumAn enum of the category of account. Options include:
subscription
loan
policy
telecom
Optional Properties
identities
[Identity]The identities connected to the account.
Child Properties
Optional Properties
firstName
stringThe first name of the identity.
lastName
stringThe last name of the identity.
email
stringThe email associated with the identity.
phone
stringThe phone number associated with the identity.
address
stringThe address associated with the identity.
address2
stringThe line 2 of the address associated with the identity.
city
stringThe city of the address associated with the identity.
state
stringThe state of the address associated with the identity.
postalCode
stringThe postalCode of the address associated with the identity.
paymentMethods
[PaymentMethod]An array of objects containing the payment methods associated with the account.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.recurringFinancialTransaction
RecurringFinancialTransactionThe associated recurring expense detected from the user's financial transactions.
Child Properties
Required Properties
name
stringThe name of the recurring financial transaction
type
enumThe type of the recurring financial transaction. One of
incoming
oroutgoing
.financialTransactions
[FinancialTransactions]The financial transactions that were detected as recurring.
Child Properties
category
enumThe category of the recurring financial transaction. Options include:
subscription
loan
policy
telecom
Example response
{
"accounts": [
{
"_id": "67376c5befe988922e8aabc4",
"processing": false,
"connectionStatus": "connected",
"lastSynedAt": "2024-10-20T18:00:54.761Z",
"data": {
"category": "subscription",
"identities": [
{
"firstName": "test",
"email": "test@email.com",
"phone": "5558675309"
}
],
"paymentMethods": [
{
"type": "card",
"lastFour": "2345",
"brand": "Mastercard",
"isPrimary": true
}
]
},
"company": {
"_id": "65272c415d8a530008e972df",
"name": "Amazon",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/8d97b6ca-595b-447c-8b86-8d690501c794_amazon.png",
"backgroundColor": "#FF9900"
},
"color": "#FF9900"
}
},
"actions": [
{
"type": "view-account",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "refresh",
"id": "BASE64_ENCODED_ID",
"automated": true
}
],
"bills": [
{
"_id": "67376c5befe988922e8adef5",
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"name": "Hulu",
"amount": 20.7,
"autopayStatus": "enabled",
"billingCycle": "monthly",
"dueDate": "2024-11-20T23:59:59.000Z",
"paymentHistory": [
{
"date": "2024-10-20T18:00:54.761Z",
"amount": 20.7
},
{
"date": "2024-09-20T09:48:31.093Z",
"amount": 19.38
}
],
"items": [
{
"description": "Standard plan",
"amount": 17.99
},
{
"description": "Taxes and fees",
"amount": 2.71
}
],
"profiles": [
{
"name": "Test Profile",
"lastUsed": "2024-10-31T17:34:55.376Z"
}
],
"plans": [
{
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"typeId": "no_ads",
"status": "active",
"description": "Hulu (No Ads)",
"amount": 17.99,
"freeTrial": false
}
],
"company": {
"_id": "6529a6eccb8e7200085c6ef6",
"name": "Hulu",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/60e83c17-cda4-4b5a-98c6-c83199c54d48.png",
"backgroundColor": "#040405"
},
"color": "#040405"
}
},
"actions": [
{
"type": "change-plan",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "cancel-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
},
{
"type": "pause-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
}
]
}
]
}
]
}
Get Account
Get Account
This endpoint returns an account.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
GET
/pay-link/accounts/:idhttps://sandbox-api.atomicfi.com/pay-link/accounts/:id
Response
Response
The response includes an
Account
object.
account
objectAn
Account
object.Child Properties
Required Properties
_id
stringUnique identifier for the PayLink Account connected by the end user.
processing
booleanA boolean value indicating whether or not the account is processing.
connectionStatus
enumThe status of the account, either
initial
,connected
, ordisconnected
. If the account isinitial
, then the account has been selected but the user has not attempted to connect to it. If the account isconnected
then the account can be accessed. If the account isdisconnected
, then we cannot access the account with the given credentials.company
CompanyAn object containing details of the company to which the PayLink Account is connected.
Child Properties
Optional Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements.
actions
[Actions]The actions that can be performed on the account.
Child Properties
Optional Properties
actionId
stringThe ID of the action.
type
enumAn enum representing the possible actions that can be performed on a PayLink Account.
view-account
refresh
automated
booleanWhether or not the action is automated. If
true
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device.bills
[Bills]The recurring expenses retrieved from the connected system, such as the actual Netflix expense on a Netflix account or a list of managed subscriptions on an Amazon account.
Child Properties
Required Properties
_id
stringUnique identifier for the bill.
sourceId
stringAn ID of the account pulled from the connected system.
Optional Properties
name
stringThe name of the bill.
amount
numberThe amount of the bill.
amountDisclaimer
stringA disclaimer about how the bill amount was determined.
autopayStatus
enumWhether the bill has autopay enabled. One of
enabled
,disabled
, orpaused
.billingCycle
stringThe billing cycle. One of
monthly
,
bi-monthly
,every-three-months
,every-six-months
, orannually
.dueDate
dateThe due date of the bill.
paymentHistory
[BillingHistory]profiles
[Profiles]paymentMethod
PaymentMethodThe payment method of the bill, if different from the account payment methods.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.items
[BillingItems]Breakdown of billed items
Child Properties
usage
[Usage]The usage of resources limited by the bill.
Child Properties
Optional Properties
description
stringThe description of the limited resource.
limit
numberThe total amount of the limited resource available to use.
unit
stringThe units of usage of the limited resource. One of
gigabytes
,megabytes
,minutes
,kilowatts-per-hour
, orusers
.used
numberThe amount of the limited resource used in the current billing cycle.
plans
[Plan]The plans associated with the bill.
Child Properties
Optional Properties
sourceId
stringThe source ID of the plan.
typeId
stringThe type ID of the plan.
status
stringThe status of the plan.
description
stringThe description of the plan.
amount
numberThe amount of the plan.
freeTrial
booleanWhether the plan is on a free trial.
pendingChange
objectThe pending change of the plan.
Child Properties
Optional Properties
startDate
dateThe date that the changes will take effect.
endDate
dateThe date that the changes will no longer be in effect.
status
enumThe new plan status when the change takes effect, if status is changing. One Of
active
,inactive
,paused
, orcancelled
.amount
numberThe new plan amount when the change takes effect, if amount is changing.
typeId
stringThe new plan type id when the change takes effect, if plan type is changing.
description
stringThe new plan description when the change takes effect, if plan description is changing.
billingCycle
stringThe new billing cycle when the change takes effect, if billing cycle is changing.
company
CompanyAn object containing details of the company to which the bill connected. This field may not be returned in cases in which the company for the account does not exist in Atomic's system. An example is a subscription that is purchased via Amazon, like the Ad Free subscription for Prime Video. This bill will not have an associated
company
object, but is considered "managed by" the Amazon company stored in the bill's parent account.Child Properties
Optional Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements.
actions
[Actions]Child Properties
Optional Properties
actionId
stringThe ID of the action.
type
enumAn enum representing the possible actions that can be performed on the bill. This list includes all actions available for a bill. However, each user will only see a subset of these actions, tailored to their specific account and bill.
change-plan
cancel-plan
pause-plan
automated
booleanWhether or not the action is automated. If
true
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device.
Optional Properties
lastSyncedAt
dateThe last time the user's data was synced.
data
AccountDataAn object containing specific details of the account connected by the end user.
Child Properties
Required Properties
category
enumAn enum of the category of account. Options include:
subscription
loan
policy
telecom
Optional Properties
identities
[Identity]The identities connected to the account.
Child Properties
Optional Properties
firstName
stringThe first name of the identity.
lastName
stringThe last name of the identity.
email
stringThe email associated with the identity.
phone
stringThe phone number associated with the identity.
address
stringThe address associated with the identity.
address2
stringThe line 2 of the address associated with the identity.
city
stringThe city of the address associated with the identity.
state
stringThe state of the address associated with the identity.
postalCode
stringThe postalCode of the address associated with the identity.
paymentMethods
[PaymentMethod]An array of objects containing the payment methods associated with the account.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.recurringFinancialTransaction
RecurringFinancialTransactionThe associated recurring expense detected from the user's financial transactions.
Child Properties
Required Properties
name
stringThe name of the recurring financial transaction
type
enumThe type of the recurring financial transaction. One of
incoming
oroutgoing
.financialTransactions
[FinancialTransactions]The financial transactions that were detected as recurring.
Child Properties
category
enumThe category of the recurring financial transaction. Options include:
subscription
loan
policy
telecom
Example response
{
"account": {
"_id": "67376c5befe988922e8aabc4",
"processing": false,
"connectionStatus": "connected",
"lastSynedAt": "2024-10-20T18:00:54.761Z",
"data": {
"category": "subscription",
"identities": [
{
"firstName": "test",
"email": "test@email.com",
"phone": "5558675309"
}
],
"paymentMethods": [
{
"type": "card",
"lastFour": "2345",
"brand": "Mastercard",
"isPrimary": true
}
]
},
"company": {
"_id": "65272c415d8a530008e972df",
"name": "Amazon",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/8d97b6ca-595b-447c-8b86-8d690501c794_amazon.png",
"backgroundColor": "#FF9900"
},
"color": "#FF9900"
}
},
"actions": [
{
"type": "view-account",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "refresh",
"id": "BASE64_ENCODED_ID",
"automated": true
}
],
"bills": [
{
"_id": "67376c5befe988922e8adef5",
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"name": "Hulu",
"amount": 20.7,
"autopayStatus": "enabled",
"billingCycle": "monthly",
"dueDate": "2024-11-20T23:59:59.000Z",
"paymentHistory": [
{
"date": "2024-10-20T18:00:54.761Z",
"amount": 20.7
},
{
"date": "2024-09-20T09:48:31.093Z",
"amount": 19.38
}
],
"items": [
{
"description": "Standard plan",
"amount": 17.99
},
{
"description": "Taxes and fees",
"amount": 2.71
}
],
"profiles": [
{
"name": "Test Profile",
"lastUsed": "2024-10-31T17:34:55.376Z"
}
],
"plans": [
{
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"typeId": "no_ads",
"status": "active",
"description": "Hulu (No Ads)",
"amount": 17.99,
"freeTrial": false
}
],
"company": {
"_id": "6529a6eccb8e7200085c6ef6",
"name": "Hulu",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/60e83c17-cda4-4b5a-98c6-c83199c54d48.png",
"backgroundColor": "#040405"
},
"color": "#040405"
}
},
"actions": [
{
"type": "change-plan",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "cancel-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
},
{
"type": "pause-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
}
]
}
]
}
}
Detect Accounts
Detect Accounts
This endpoint accepts transaction data for a specific end user. Atomic uses this data to identify recurring payments and recommend companies for the user to connect to and manage via our APIs.
The response returns an array of Account objects, providing details on whether the detected merchants are supported by Atomic along with other relevant information.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
Required Properties
Required Properties
financialTransactions
[FinancialTransactions]An array of financial transaction objects.
Child Properties
Required Properties
identifier
stringAn ID of the transaction.
date
stringThe date the transation was processed, in ISO8601 format.
description
stringThe transaction description from the merchant.
amount
numberAmount of the transaction.
Optional Properties
currency
enumCurrency in which the transaction was processed.
usd
eur
cad
merchantName
stringThe name of the merchant associated with the transaction.
type
enumAn enum of the type of transaction. Options are:
category
stringCategory of the transaction.
subCategory
stringOptional subcategory of the transaction.
POST
/pay-link/accounts?accountIdhttps://sandbox-api.atomicfi.com/pay-link/accounts?accountId
Response
Response
The response contains an array of
Account
objects containing and relevant metadata relating to the Accounts connected by the end user.
accounts
[Account]An array of
Account
objects.Child Properties
Required Properties
_id
stringUnique identifier for the PayLink Account connected by the end user.
processing
booleanA boolean value indicating whether or not the account is processing.
connectionStatus
enumThe status of the account, either
initial
,connected
, ordisconnected
. If the account isinitial
, then the account has been selected but the user has not attempted to connect to it. If the account isconnected
then the account can be accessed. If the account isdisconnected
, then we cannot access the account with the given credentials.company
CompanyAn object containing details of the company to which the PayLink Account is connected.
Child Properties
Optional Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements.
actions
[Actions]The actions that can be performed on the account.
Child Properties
Optional Properties
actionId
stringThe ID of the action.
type
enumAn enum representing the possible actions that can be performed on a PayLink Account.
view-account
refresh
automated
booleanWhether or not the action is automated. If
true
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device.bills
[Bills]The recurring expenses retrieved from the connected system, such as the actual Netflix expense on a Netflix account or a list of managed subscriptions on an Amazon account.
Child Properties
Required Properties
_id
stringUnique identifier for the bill.
sourceId
stringAn ID of the account pulled from the connected system.
Optional Properties
name
stringThe name of the bill.
amount
numberThe amount of the bill.
amountDisclaimer
stringA disclaimer about how the bill amount was determined.
autopayStatus
enumWhether the bill has autopay enabled. One of
enabled
,disabled
, orpaused
.billingCycle
stringThe billing cycle. One of
monthly
,
bi-monthly
,every-three-months
,every-six-months
, orannually
.dueDate
dateThe due date of the bill.
paymentHistory
[BillingHistory]profiles
[Profiles]paymentMethod
PaymentMethodThe payment method of the bill, if different from the account payment methods.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.items
[BillingItems]Breakdown of billed items
Child Properties
usage
[Usage]The usage of resources limited by the bill.
Child Properties
Optional Properties
description
stringThe description of the limited resource.
limit
numberThe total amount of the limited resource available to use.
unit
stringThe units of usage of the limited resource. One of
gigabytes
,megabytes
,minutes
,kilowatts-per-hour
, orusers
.used
numberThe amount of the limited resource used in the current billing cycle.
plans
[Plan]The plans associated with the bill.
Child Properties
Optional Properties
sourceId
stringThe source ID of the plan.
typeId
stringThe type ID of the plan.
status
stringThe status of the plan.
description
stringThe description of the plan.
amount
numberThe amount of the plan.
freeTrial
booleanWhether the plan is on a free trial.
pendingChange
objectThe pending change of the plan.
Child Properties
Optional Properties
startDate
dateThe date that the changes will take effect.
endDate
dateThe date that the changes will no longer be in effect.
status
enumThe new plan status when the change takes effect, if status is changing. One Of
active
,inactive
,paused
, orcancelled
.amount
numberThe new plan amount when the change takes effect, if amount is changing.
typeId
stringThe new plan type id when the change takes effect, if plan type is changing.
description
stringThe new plan description when the change takes effect, if plan description is changing.
billingCycle
stringThe new billing cycle when the change takes effect, if billing cycle is changing.
company
CompanyAn object containing details of the company to which the bill connected. This field may not be returned in cases in which the company for the account does not exist in Atomic's system. An example is a subscription that is purchased via Amazon, like the Ad Free subscription for Prime Video. This bill will not have an associated
company
object, but is considered "managed by" the Amazon company stored in the bill's parent account.Child Properties
Optional Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
color
stringThe color of the company. Atomic uses this color to style the experience - buttons and other UI elements.
actions
[Actions]Child Properties
Optional Properties
actionId
stringThe ID of the action.
type
enumAn enum representing the possible actions that can be performed on the bill. This list includes all actions available for a bill. However, each user will only see a subset of these actions, tailored to their specific account and bill.
change-plan
cancel-plan
pause-plan
automated
booleanWhether or not the action is automated. If
true
, a task will be created to track and peform the automation. The status of the task can be monitorieed using webhooks. Iffalse
, then the user will perform the action on their device.
Optional Properties
lastSyncedAt
dateThe last time the user's data was synced.
data
AccountDataAn object containing specific details of the account connected by the end user.
Child Properties
Required Properties
category
enumAn enum of the category of account. Options include:
subscription
loan
policy
telecom
Optional Properties
identities
[Identity]The identities connected to the account.
Child Properties
Optional Properties
firstName
stringThe first name of the identity.
lastName
stringThe last name of the identity.
email
stringThe email associated with the identity.
phone
stringThe phone number associated with the identity.
address
stringThe address associated with the identity.
address2
stringThe line 2 of the address associated with the identity.
city
stringThe city of the address associated with the identity.
state
stringThe state of the address associated with the identity.
postalCode
stringThe postalCode of the address associated with the identity.
paymentMethods
[PaymentMethod]An array of objects containing the payment methods associated with the account.
Child Properties
Optional Properties
type
enumThe type of the payment method. One of
bank
,card
orpaypal
.lastFour
stringThe last four digits of the payment method.
brand
stringThe brand of the payment method.
isPrimary
booleanWhether the payment method is the primary payment method.
description
stringThe description of the payment method.
expiry
dateThe date the payment method expires.
accountNumber
stringThe account number of the payment method. Only applicable for
type
ofbank
.routingNumber
stringThe routing number of the payment method. Only applicable for
type
ofbank
.recurringFinancialTransaction
RecurringFinancialTransactionThe associated recurring expense detected from the user's financial transactions.
Child Properties
Required Properties
name
stringThe name of the recurring financial transaction
type
enumThe type of the recurring financial transaction. One of
incoming
oroutgoing
.financialTransactions
[FinancialTransactions]The financial transactions that were detected as recurring.
Child Properties
category
enumThe category of the recurring financial transaction. Options include:
subscription
loan
policy
telecom
Example response
{
"accounts": [
{
"_id": "67376c5befe988922e8aabc4",
"processing": false,
"connectionStatus": "connected",
"lastSynedAt": "2024-10-20T18:00:54.761Z",
"data": {
"category": "subscription",
"identities": [
{
"firstName": "test",
"email": "test@email.com",
"phone": "5558675309"
}
],
"paymentMethods": [
{
"type": "card",
"lastFour": "2345",
"brand": "Mastercard",
"isPrimary": true
}
]
},
"company": {
"_id": "65272c415d8a530008e972df",
"name": "Amazon",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/8d97b6ca-595b-447c-8b86-8d690501c794_amazon.png",
"backgroundColor": "#FF9900"
},
"color": "#FF9900"
}
},
"actions": [
{
"type": "view-account",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "refresh",
"id": "BASE64_ENCODED_ID",
"automated": true
}
],
"bills": [
{
"_id": "67376c5befe988922e8adef5",
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"name": "Hulu",
"amount": 20.7,
"autopayStatus": "enabled",
"billingCycle": "monthly",
"dueDate": "2024-11-20T23:59:59.000Z",
"paymentHistory": [
{
"date": "2024-10-20T18:00:54.761Z",
"amount": 20.7
},
{
"date": "2024-09-20T09:48:31.093Z",
"amount": 19.38
}
],
"items": [
{
"description": "Standard plan",
"amount": 17.99
},
{
"description": "Taxes and fees",
"amount": 2.71
}
],
"profiles": [
{
"name": "Test Profile",
"lastUsed": "2024-10-31T17:34:55.376Z"
}
],
"plans": [
{
"sourceId": "70236f02-dc3e-3419-bbf7-06d3da9d6685",
"typeId": "no_ads",
"status": "active",
"description": "Hulu (No Ads)",
"amount": 17.99,
"freeTrial": false
}
],
"company": {
"_id": "6529a6eccb8e7200085c6ef6",
"name": "Hulu",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/60e83c17-cda4-4b5a-98c6-c83199c54d48.png",
"backgroundColor": "#040405"
},
"color": "#040405"
}
},
"actions": [
{
"type": "change-plan",
"id": "BASE64_ENCODED_ID",
"automated": false
},
{
"type": "cancel-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
},
{
"type": "pause-plan",
"id": "BASE64_ENCODED_ID",
"automated": true
}
]
}
]
}
]
}
Delete Accounts
Delete Accounts
This endpoint will delete all accounts for the specified user.
A successful response will return a JSON object with a result object containing
success
equal to true
.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
DELETE
/pay-link/accounts/https://sandbox-api.atomicfi.com/pay-link/accounts/
Delete Account
Delete Account
This endpoint will delete an account.
A successful response will return a JSON object with a result object containing
success
equal to true
.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
DELETE
/pay-link/accounts/:idhttps://sandbox-api.atomicfi.com/pay-link/accounts/:id
Action History
Action History
Atomic maintains a log of all automated actions performed by a user or on their behalf. This API allows you to retrieve the history of those actions, providing visibility into what was executed and when.
Note: This endpoint does not include interactive (non-automated) actions that require user input, such as selecting a plan or entering MFA codes.
Get Action History
Get Action History
Use this endpoint to get the action history for a given account.
Authentication can be handled via either the API Key and Secret method or the Access Token method.
GET
/pay-link/action-history?accountIdhttps://sandbox-api.atomicfi.com/pay-link/action-history?accountId
Financial Transactions
Financial Transactions
An
Financial Transaction
in the Atomic context refers to a document that represents financial transaction.
Find Company
Find Company
This endpoint is used to find a company in the Atomic system that matches the provided financial transactions.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
POST
/pay-link/financial-transactions/find-companyhttps://sandbox-api.atomicfi.com/pay-link/financial-transactions/find-company
Response
Response
A successful request will return the provided financial transactions with an associate company if found.
identifier
stringThe unique identifier of the transaction.
description
stringThe description of the transactions.
company
CompanyThe company, in the Atomic system, that was found for the provided financial transaction. If no company is found, this value will not be returned.
Child Properties
Required Properties
_id
stringUnique identifier for the company.
name
stringThe name of the company.
branding
objectThe branding information of the company. Useful if you are surfacing logos in your experience.
Example response
{
"data": {
"financialTransactions": [
{
"identifier": "ff1e11abe",
"description": "POS Transaction Netflixcom NETFLIXCOM LOS GATOS CAUS",
"company": {
"_id": "64ecca15ec669e000851d5d2",
"branding": {
"logo": {
"backgroundColor": "#000000",
"url": "[ATOMIC-GENERATED-PRESIGNED-S3-URL]"
},
"color": "#000000"
},
"name": "Netflix"
}
},
{
"identifier": "4f89277",
"description": "POS Transaction Hulu HLUHULUPLUS SANTA MONICA CAUS",
"company": {
"_id": "6529a6eccb8e7200085c6ef6",
"branding": {
"logo": {
"url": "[ATOMIC-GENERATED-PRESIGNED-S3-URL]",
"backgroundColor": "#040405"
},
"color": "#040405"
},
"name": "Hulu"
}
},
{
"identifier": "5115abe3",
"description": "POS Transaction SPOTIFY 4 WORLD TRACE CENTER 68777781161 NYUS",
"company": {
"_id": "652801e35d8a530008e9e2cd",
"branding": {
"logo": {
"url": "[ATOMIC-GENERATED-PRESIGNED-S3-URL]",
"backgroundColor": "#000000"
},
"color": "#000000"
},
"name": "Spotify"
}
}
]
}
}
Suggestions
Suggestions
An
Suggestion
in the Atomic context refers to a document that represents a possible method that a user could use to save money on their bill.
Review a Suggestion
Review a Suggestion
This endpoint is used to review a
Suggestion
. Reviews are used to improve our suggestion generation engine. Suggestions reviewed with the rating of not-interested
will be filtered out when accounts
are returned via webhooks and api endpoints. Currently, only the rating value not-interested
is supported.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
POST
/pay-link/suggestion-reviewhttps://sandbox-api.atomicfi.com/pay-link/suggestion-review
Task
Task
Each discrete operation processed through the Atomic system, such as an update to a payment account on file or an action against a merchant system on behalf of a user, will instantiate what is referred to as a Task. A Task consists of an authentication step where Atomic logs into merchant system or service provider and an operation step either data is read or an update is written to the system in question.
Get Task Details
Get Task Details
This endpoint returns the details of a Task. Submit the corresponding
taskId
and receive the details of that Task.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
Required Properties
Required Properties
taskId
stringThe id of the Task. The
taskId
property is sent in multiple webhooks or any of the interaction events which are fired after the authentication phase of the flow has begun.
GET
/task/:taskId/detailshttps://sandbox-api.atomicfi.com/task/:taskId/details
Response
Response
A successful request will return the details of the Task.
_id
stringThe id of the Task.
authenticated
booleanIndicates whether or not the Task has successfully authenticated against the merchant system.
company
objectMetadata for the employer.
Child Properties
connector
objectMetadata for the connector.
Child Properties
createdAt
dateThe timestamp when the task was created, stored in UTC and ISO 8601 format.
updatedAt
dateThe timestamp when the task was last updated, stored in UTC and ISO 8601 format.
failReason
stringOptionalThe failure reason associated with a failed task. Will consist of one of the failure values.
linkedAccount
stringOptionalThe id of the linked account used to create the task.
metadata
objectOptionalThe
metadata
provided by your system when the task was initialized.product
stringThe product of the task. Possible values include
present
andswitch
.status
stringThe status of the task which may be
queued
,processing
,failed
, orcompleted
.taskWorkflow
objectThe Task Workflow of the Task. When multiple tasks are associated with a single workflow, they will all have the same
taskWorkflow
object. Every Task is associated with a Task Workflow, even if it not associated with another Task.user
objectThe user who processed the Task.
Child Properties
Required Properties
_id
stringThe id of the user in atomic's system.
identifier
stringThe user's unique identifier, as sent to Atomic during AccessToken creation.
Example response
{
"data": {
"task": {
"_id": "65b15fd99b3f03aa9edff9de",
"authenticated": true,
"company": {
"_id": "607e249736b9f053b536bde0",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/b02670fa-ce1b-4171-855b-6856b37bb938.png"
}
},
"name": "Test Company"
},
"connector": {
"_id": "607e249736b9f053b536bde1",
"branding": {
"logo": {
"url": "https://cdn-public.atomicfi.com/b02670fa-ce1b-4171-855b-6856b37bb938.png"
}
},
"name": "Test Connector"
},
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:05.000Z",
"failReason": "unknown-failure",
"linkedAccount": "645963a0b754649972f3d4ac",
"metadata": {
"data": "test"
},
"product": "switch",
"status": "completed",
"taskWorkflow": {
"_id": "643f2ed34253e21bdbd2de31"
},
"user": {
"_id": "607e249736b9f053b536bdea",
"identifier": "IDENTIFIER_FROM_YOUR_SYSTEM"
}
}
}
}
Get Task Status
Get Task Status
Calling this API returns the status of a Task. Submit the corresponding
taskId
and receive the status
of that Task.
This endpoint is designed to be lightweight and intended for polling use cases.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
Required Properties
Required Properties
taskId
stringThe id of the Task. The
taskId
property is sent in multiple webhooks or any of the interaction events which are fired after the authentication phase of the flow has begun.
GET
/task/:taskId/statushttps://sandbox-api.atomicfi.com/task/:taskId/status
Response
Response
A successful request will return the
createdAt
date, status
, and if a Task failed (Tasks with a status of "failed") a failReason
.
createdAt
dateThe timestamp when the Task was created, stored in UTC and ISO 8601 format.
status
stringThe status of the task which may be
queued
,processing
,failed
, orcompleted
.failReason
stringOptionalThe failure reason associated with a failed task. Will consist of one of the failure values.
Example response
{
"createdAt": "2023-01-03T16:40:48.009Z",
"status": "failed",
"failReason": "payment-method-not-supported"
}
User
User
A
User
is an entity in the Atomic system that is created during the access token creation process. Details about a user's accounts are stored on the user object for reference as needed in an operation; ie. for adding a deposit account to a payroll system or updating the card-on-file for a merchant service.
End Monitoring
End Monitoring
This endpoint is used to remove monitoring for users that have payroll data monitoring enabled via continuous access.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
Required Properties
Required Properties
identifier
stringThe user's unique identifier, as sent to Atomic during AccessToken creation.
PUT
/user/:identifier/end-monitoringhttps://sandbox-api.atomicfi.com/user/:identifier/end-monitoring
Example response
{
"success": true
}
Get Tasks
Get Tasks
This endpoint is used to retrieve tasks for the specified user.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
Required Properties
Required Properties
identifier
stringThe user's unique identifier, as sent to Atomic during AccessToken creation.
Optional Properties
Optional Properties
status
string
status
string
The status of the task, provided as a query string parameter, which may be queued
, processing
, failed
, or completed
.
payrollDataAvailable
string
payrollDataAvailable
string
A boolean value, provided as a query string parameter, indicating whether or not the user's payroll data is ready for retrieval via API.
GET
/user/:identifier/taskshttps://sandbox-api.atomicfi.com/user/:identifier/tasks
Response
Response
A successful response will return an object with
data.tasks
equal to an array of task objects with the following properties.
_id
stringThe id of the task.
authenticated
booleanA boolean value indication whether or not the task has successfully authenticated against the payroll system.
createdAt
dateThe timestamp when the task was created, stored in UTC and ISO 8601 format.
failReason
stringOptionalThe failure reason associated with a failed task. Will consist of one of the failure values.
payrollDataAvailable
booleanA boolean value indicating whether or not the user's payroll data is ready for retrieval via api.
product
enumThe product relevant to the executed task. Options are:
deposit
verify
status
stringThe status of the task which may be
queued
,processing
,failed
, orcompleted
.
Example response
{
"data": {
"tasks": [
{
"_id": "65b3f3c8b871a9626c36d103",
"authenticated": true,
"createdAt": "2024-01-26T18:02:55.795Z",
"payrollDataAvailable": true,
"product": "verify",
"status": "completed"
},
{
"_id": "65b3f3c8b871a9626c36d103",
"authenticated": true,
"createdAt": "2024-01-26T18:02:55.795Z",
"failReason": "bad-credentials",
"payrollDataAvailable": false,
"product": "deposit",
"status": "failed"
}
]
}
}
Update User
Update User
This endpoint is used to add data to a user in response to an
onDataRequest
event emitted from our Transact SDK. Any data passed will be upserted into the user's object. The typical use case is to delay the transmission of sensitive data (bank accounts, cards, identity information, etc.) until our system has need for such data.
The shape of the request body is similar to our access token creation endpoint, except the data to be added/updated will be nested in a
data
key, and the identifier
will not be nested, but remain on the first-level of the object.
Authentication is handled via the API Key and Secret method. This API is intended to be called from your backend service so your API Keys and Secrets are not deployed to your client side application.
PUT
/userhttps://sandbox-pci.atomicfi.com/user