Entity object
An entity represents a legal being in the Column data model, and is typically either an individual person or a business. You will create entities for each of your customers or users. An entity is required to create a bank account or a loan object. Read about entities in our data model section for more information.
object parameters
documents
array of objects
List of documents which are uploaded with the Submit Document API
id
string
Unique identifier for the object
is_root
boolean
Whether this entity is going to be a root entity of the platform
address
object
line_1
string
Address line 1
line_2
string
Address line 2
city
string
City
state
string
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Postal code
country_code
string
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
first_name
string
First name of the legal person
last_name
string
Last name of the legal person
middle_name
string
Middle name of the legal person
ssn
string
Social Security Number
date_of_birth
string
Date of birth (YYYY-MM-DD)
string
Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
review_reasons
array
List of reasons the entity is in Manual_Review
type
string
Type of entity. Can either be PERSON
or BUSINESS
verification_status
array
Current status of the entity verification. Can be UNVERIFIED
, PENDING
,MANUAL_REVIEW
, VERIFIED
, or DENIED
verification_tags
string
A list of verification tags with more details about its identity verification process.
Entity object
{
"documents": [
{
"created_at": "2022-03-01T17:36:57Z",
"description": "test document",
"document_id": "docu_25n6XQRGnGn2ozqjeGVNbclD3il",
"entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB"
}
],
"id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"is_root": false,
"person_details": {
"address": {
"city": "San Francisco",
"country_code": "US",
"line_1": "123 Federal Reserve Way",
"line_2": "",
"postal_code": "94123",
"state": "CA"
},
"date_of_birth": "1987-03-15",
"email": "jsmith@column.com",
"first_name": "John",
"last_name": "Smith",
"middle_name": "",
"ssn": "123456789"
},
"review_reasons": [],
"type": "PERSON",
"verification_status": "VERIFIED",
"verification_tags": ["vouched_result_passed"]
}
Create a legal person entity
POST
/entities/person
Creates a legal person entity. By default all requests will go through our know your customer (KYC) service provider.
We attempt to approve people synchronously, however, some people will have to be escalated to a manual review. We try our best to accomplish this as quickly as possible.
An entity can have the status of UNVERIFIED
, PENDING
, MANUAL_REVIEW
, VERIFIED
, or DENIED
.
KYC Vendors
If you want to use your own KYC provider you have to be approved and have an enterprise level agreement. If you do use your own provider, you'll still have to submit this data - however, it won't be verified on our side.
body parameters
first_name
string
Required
First name of the legal person
last_name
string
Required
Last name of the legal person
middle_name
string
Optional
Middle name of the legal person
ssn
string
Required
Social Security Number
date_of_birth
string
Required
Date of birth (YYYY-MM-DD)
string
Optional
Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
Request
curl `https://api.column.com/entities/person` \
-XPOST \
-u :<YOUR API KEY> \
-d first_name=Oliver \
-d last_name=Hockey \
-d middle_name=Smith \
-d ssn=565438976 \
-d date_of_birth="1985-08-04" \
-d email="apis@column.com" \
-d "address[line_1]"="101 Market St" \
-d "address[line_2]"="Suite 1913" \
-d "address[city]"="San Francisco" \
-d "address[state]"="CA" \
-d "address[postal_code]"="94105" \
-d "address[country_code]"="USA"
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFIED",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"is_root": false
}
Update a legal person entity
PATCH
/entities/person/{entity_id}
This updates the information stored for this legal person. Changes to ssn, date of birth, and name will cause a re-verifcation process. Do not use this to change the underlying legal person - only use this if the actual personal information changes (e.g. legal name changes, etc.).
path parameters
entity_id
string
Required
ID of the person entity you're updating
body parameters
first_name
string
Required
First name of the legal person
last_name
string
Required
Last name of the legal person
middle_name
string
Optional
Middle name of the legal person
ssn
string
Required
Social Security Number
date_of_birth
string
Required
Date of birth (YYYY-MM-DD)
string
Optional
Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
Request
curl https://api.column.com/entities/person/<entity id> \
-XPATCH \
-u :<YOUR API KEY> \
-d first_name=Bruce \
-d last_name=Hockey \
-d middle_name=Smith \
-d date_of_birth="1985-08-04" \
-d email="apis@column.com" \
-d "address[line_1]"="101 Market St" \
-d "address[line_2]"="Suite 1913" \
-d "address[city]"="San Francisco" \
-d "address[state]"="CA" \
-d "address[postal_code]"="94105" \
-d "address[country_code]"="USA"
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFICATION_STATUS_NONE",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
},
"beneficial_owners": [
{
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
}
]
},
"is_root": true
}
Create a legal business entity
POST
/entities/business
Creates a legal business entity. By default all requests will go through our know your customer (KYC) service provider.
We attempt to approve people synchronously, however, some people will have to be escalated to a manual review. We try our best to accomplish this as quickly as possible.
An entity can have the status of UNVERIFIED
, PENDING
, MANUAL_REVIEW
, VERIFIED
, or DENIED
.
KYC Vendors
If you want to use your own KYC provider you have to be approved and have an enterprise level agreement. If you do use your own provider, you'll still have to submit this data - however, it won't be verified on our side.
body parameters
ein
string
Required
Employer Identification Number (Tax ID)
business_name
string
Required
Legal Business Name
website
string
Optional
Website of the business. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
beneficial_owners
array of objects
Optional
A list of all the persons who have ultimate control over funds in the business, whether through ownership or other means.
This is anyone who owns owns 25 percent or more of the business and those who control the funds. If no one owns more than 25% of the business, just the individual who has ultimate control of the funds must be included.
first_name
string
Required
First name of the legal person
last_name
string
Required
Last name of the legal person
middle_name
string
Optional
Middle name of the legal person
ssn
string
Required
Social Security Number
date_of_birth
string
Required
Date of birth (YYYY-MM-DD)
string
Optional
Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
Request
curl 'https://api.column.com/entities/business' \
-XPOST \
-u :<YOUR API KEY> \
-d ein="123456789" \
-d business_name="Yellen Cocktails LLC" \
-d website="column.com" \
-d "address[line_1]"="101 Market St" \
-d "address[line_2]"="Suite 1913" \
-d "address[city]"="San Francisco" \
-d "address[state]"="CA" \
-d "address[postal_code]"="94105" \
-d "address[country_code]"="USA"
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFICATION_STATUS_NONE",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
},
"beneficial_owners": [
{
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
}
]
},
"is_root": true
}
Update a legal business entity
PATCH
/entities/business/{entity_id}
This updates the information stored for this legal person. Changes to ssn, date of birth, and name will cause a re-verifcation process. Do not use this to change the underlying legal person - only use this if the actual personal information changes (e.g. legal name changes, etc.).
path parameters
entry_id
string
Required
ID of the business entity you're updating
body parameters
business_name
string
Required
Legal Business Name
website
string
Optional
Website of the business. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
beneficial_owners
array of objects
Optional
A list of all the persons who have ultimate control over funds in the business, whether through ownership or other means.
This is anyone who owns owns 25 percent or more of the business and those who control the funds. If no one owns more than 25% of the business, just the individual who has ultimate control of the funds must be included.
first_name
string
Required
First name of the legal person
last_name
string
Required
Last name of the legal person
middle_name
string
Optional
Middle name of the legal person
ssn
string
Required
Social Security Number
date_of_birth
string
Required
Date of birth (YYYY-MM-DD)
string
Optional
Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
Request
curl 'https://api.column.com/entities/business/<entity_id>' \
-XPATCH \
-u :<YOUR API KEY> \
-d business_name="Yellen Cocktails LLC" \
-d website="column.com" \
-d "address[line_1]"="101 Market St" \
-d "address[line_2]"="Suite 1913" \
-d "address[city]"="San Francisco" \
-d "address[state]"="CA" \
-d "address[postal_code]"="94105" \
-d "address[country_code]"="USA"
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFICATION_STATUS_NONE",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
},
"beneficial_owners": [
{
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
}
]
},
"is_root": true
}
Get an entity by ID
GET
/entities/{entity_id}
Retrieve a single legal entity by its ID.
path parameters
entry_id
string
Required
ID of the entity you're requesting
Request
curl 'https://api.column.com/entities/<entity_id>' \
-u :<YOUR API KEY>
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFICATION_STATUS_NONE",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
},
"beneficial_owners": [
{
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
}
]
},
"is_root": true
}
Delete an entity
DELETE
/entities/{entity_id}
Delete the underlying entity.
Removing entities
Entities can only be deleted if all their underlying accounts are deleted. Accounts can only be deleted when they have a $0 balance.
path parameters
entry_id
string
Required
ID of the entity you're deleting
Request
curl 'https://api.column.com/entities/<entity_id>' \
-XDELETE \
-u :<YOUR API KEY>
Response
{}
List all entities
GET
/entities
Retrieve all entities owned by your developer account. Filtered results can be retrieved with extra parameters in the query (`type`, `name`, etc.).
query parameters
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
type
string
Optional
Return results with this entity type.
verification_status
string
Optional
Return results with this verification status.
is_root
boolean
Optional
Whether this entity is going to be a root entity of the platform
name
string
Optional
Return results with this name.
Request
curl 'https://api.column.com/entities' \
-u :<YOUR API KEY>
Response
{
"id": "string",
"type": "TYPE_NONE",
"verification_status": "VERIFICATION_STATUS_NONE",
"person_details": {
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
},
"business_details": {
"ein": "string",
"business_name": "string",
"website": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
},
"beneficial_owners": [
{
"first_name": "string",
"last_name": "string",
"middle_name": "string",
"ssn": "string",
"date_of_birth": "string",
"email": "string",
"address": {
"line_1": "101 Market St",
"line_2": "Suite 1913",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country_code": "USA"
}
}
]
},
"is_root": true
}
Submit a document
POST
/entities/{entity_id}/documents
Submit a supporting document for manual review of an entity.
path parameters
entity_id
string
Required
ID of the entity for which a supporting document is being submitted.
body parameters
document_front_id
string
Required
ID of the entity for which a supporting document is being submitted.
Accepted formats for person entities: PNG
, JPEG
, GIF
, and TIFF
.
document_back_id
string
Optional
ID of the back of the document that is being submitted, starting with docu_. The document must be uploaded first via Document Upload API. This is only required for some forms of documentation. For most documents, only the front side is required.
Accepted formats for person entities: PNG
, JPEG
, GIF
, and TIFF
.
description
string
Optional
Description of why the document is being submitted for review. Maximum length: 127
characters.
Request
curl 'https://api.column.com/entities/<entity_id>/documents' \
-XPOST \
-u :<YOUR API KEY> \
-d document_front_id=<docu_id> \
-d description='test document'
Response
{
"documents": [
{
"created_at": "2022-03-01T17:36:57Z",
"description": "test document",
"document_id": "docu_25n6XQRGnGn2ozqjeGVNbclD3il",
"entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB"
}
],
"id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"is_root": false,
"person_details": {
"address": {
"city": "San Francisco",
"country_code": "US",
"line_1": "123 Federal Reserve Way",
"line_2": "",
"postal_code": "94123",
"state": "CA"
},
"date_of_birth": "1987-03-15",
"email": "andrew@column.com",
"first_name": "Alex",
"last_name": "Smith",
"middle_name": "",
"ssn": "123456789"
},
"review_reasons": [],
"type": "PERSON",
"verification_status": "VERIFIED",
"verification_tags": ["vouched_result_passed"]
}
Bank Account object
A bank account is the object in the Column data model that has the ability to hold, send, and receive funds. Bank accounts are children of entities. An entity can have multiple bank accounts. Bank accounts can have one or multiple account numbers. Read about bank accounts in our data model section for more information.
object parameters
balances
object
Lists all of the balances amounts represented in the smallest unit of the currency the account is denominated in. DEPRECATED: use balances
object.
available_balance
object
This balance is the amount of money that is available to spend. If the account is not enabled for overdrafts, any requests to move money above this number will fail. DEPRECATED: use balances
object.
created_at
string
The timestamp the bank account was created.
default_account_number
string
The externally facing account number tied to this bank account.
default_account_number_id
string
The Column accno_id
tied to this bank account.
routing_number
string
The externally facing routing number tied to this bank account.
default_routing_number
string
The externally facing routing number tied to this bank account. DEPRECATED: use routing_number
description
string
A name for the bank account (minimum of three characters)
holding_balance
object
The balance of money which is currently in a HOLD
state specified in the Create Book Transfer API. DEPRECATED: use balances
object.
is_overdraftable
boolean
Whether the account can be overdrafted, must include a overdraft_reserve_account_id
id
string
Unique identifier for the object
locked_balance
object
Only applicable for root accounts. The locked balance is posted on the account but cannot be withdrawn. DEPRECATED: use balances
object.
owners
array
List of entity_id
's which are tied to this bank account
pending_balance
object
The total amount of transfers that are in a pending state. These transfers will affect the available_balance unless they are canceled prior to completion. DEPRECATED: use balances
object.
type
string
Bank Account type. Can be CHECKING
, OVERDRAFT_RESERVE
, or PROGRAM_RESERVE
overdraft_reserve_account_id
string
The overdraft reserve account that this account linked to. If is_overdraftable: true
then this field is required.
Bank Account object
{
"balances": {
"available_amount": 0,
"holding_amount": 0,
"pending_amount": 0,
"locked_amount": 0,
}
"available_balance": {
"cents": "0",
"currency_code": "USD"
},
"created_at": "2022-03-01T19:27:03.017537345Z",
"default_account_number": "509974560568567",
"default_account_number_id": "acno_25nVQkqfCU6Okpn66QWi1xX9riD",
"default_routing_number": "091000019",
"description": "Travel Checking",
"holding_balance": {
"cents": "0",
"currency_code": "USD"
},
"id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
"is_overdraftable": false,
"locked_balance": {
"cents": "0",
"currency_code": "USD"
},
"overdraft_reserve_account_id": "",
"owners": ["enti_25n5phSY8StZxU4C2Y7gAREGUdB"],
"pending_balance": {
"cents": "0",
"currency_code": "USD"
},
"type": "CHECKING"
}
Create a new bank account
POST
/bank-accounts
Creates a new bank account under an entity.
body parameters
description
string
Required
A name for the bank account (minimum of three characters)
entity_id
string
Required
The entity to create the account under
is_overdraftable
boolean
Optional
Whether the account can be overdrafted, must include a overdraft_reserve_account_id
overdraft_reserve_account_id
string
Optional
The overdraft reserve account that this account linked to. If `is_overdraftable: true` then this field is required
Request
curl 'https://api.column.com/bank-accounts' \
-XPOST \
-u :<YOUR API KEY> \
-d description="Travel Checking" \
-d entity_id="<entity_id>"
Response
{
"id": "string",
"description": "Travel checking",
"owners": ["string"],
"default_account_number_id": "string",
"default_account_number": "string",
"default_routing_number": "string",
"available_balance": {
"currency_code": "string",
"cents": "string"
},
"pending_balance": {
"currency_code": "string",
"cents": "string"
},
"locked_balance": {
"currency_code": "string",
"cents": "string"
},
"holding_balance": {
"currency_code": "string",
"cents": "string"
},
"created_at": "2021-11-29T16:32:11.806Z",
"type": "UNKNOWN",
"is_overdraftable": false,
"overdraft_reserve_account_id": "string"
}
List all bank accounts
GET
/bank-accounts
List all bank accounts under the platform. Filtered results can be retrieved with extra parameters in the query (entity_id
, overdraft_reserve_account_id
, etc.).
query parameters
entity_id
string
Optional
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
Request
curl 'https://api.column.com/bank-accounts?entity_id=<entity_id>' \
-u :<YOUR API KEY>
Response
{
"bank_accounts": [
{
"id": "string",
"description": "Travel checking",
"owners": ["string"],
"default_account_number_id": "string",
"default_account_number": "string",
"default_routing_number": "string",
"available_balance": {
"currency_code": "string",
"cents": "string"
},
"pending_balance": {
"currency_code": "string",
"cents": "string"
},
"locked_balance": {
"currency_code": "string",
"cents": "string"
},
"holding_balance": {
"currency_code": "string",
"cents": "string"
},
"created_at": "2021-11-29T16:32:11.806Z",
"type": "UNKNOWN",
"is_overdraftable": true,
"overdraft_reserve_account_id": "string"
}
],
"has_more": false
}
Get a bank account by ID
GET
/bank-accounts/{bank_account_id}
Get a bank account by its id
path parameters
bank_account_id
string
Required
The ID of the bank account you are looking up
Request
curl 'https://api.column.com/bank-accounts/<bank_account_id>' \
-u :<YOUR API KEY>
Response
{
"id": "string",
"description": "Travel checking",
"owners": ["string"],
"default_account_number_id": "string",
"default_account_number": "string",
"default_routing_number": "string",
"available_balance": {
"currency_code": "string",
"cents": "string"
},
"pending_balance": {
"currency_code": "string",
"cents": "string"
},
"locked_balance": {
"currency_code": "string",
"cents": "string"
},
"holding_balance": {
"currency_code": "string",
"cents": "string"
},
"created_at": "2021-11-29T16:32:11.806Z",
"type": "UNKNOWN",
"is_overdraftable": true,
"overdraft_reserve_account_id": "string"
}
Update a bank account
PATCH
/bank-accounts/{bank_account_id}
Updates a bank account by its id
path parameters
bank_account_id
string
Required
body parameters
description
string
Optional
is_overdraftable
boolean
Optional
Whether the account can be overdrafted, must include a overdraft_reserve_account_id
overdraft_reserve_account_id
string
Optional
The overdraft reserve account that this account linked to if is_overdraftable
is true
Request
url 'https://api.column.com/bank-accounts/<bank_account_id>' \
-XPATCH \
-u :<YOUR API KEY> \
-d description="Travel Checking UPDATE"
Response
{
"id": "string",
"description": "Travel checking",
"owners": ["string"],
"default_account_number_id": "string",
"default_account_number": "string",
"default_routing_number": "string",
"available_balance": {
"currency_code": "string",
"cents": "string"
},
"pending_balance": {
"currency_code": "string",
"cents": "string"
},
"locked_balance": {
"currency_code": "string",
"cents": "string"
},
"holding_balance": {
"currency_code": "string",
"cents": "string"
},
"created_at": "2021-11-29T16:32:11.806Z",
"type": "UNKNOWN",
"is_overdraftable": true,
"overdraft_reserve_account_id": "string"
}
Delete a bank account
DELETE
/bank-accounts/{bank_account_id}
This deletes a bank account
Removing accounts
Bank Accounts can only be deleted when they have a $0 balance.
path parameters
bank_account_id
string
Required
Request
curl 'https://api.column.com/bank-accounts/<bank_account_id>' \
-XDELETE \
-u :<YOUR API KEY>
Response
{}
Bank Account Summary object
object parameters
available_balance_credit
string
Total credit amount in cents applied to available_balance
. Zero or positive.
available_balance_debit
string
Total debit amount in cents applied to available_balance
. Zero or negative.
available_balance_close
string
Close available_balance
in cents at the end of effective_on
in time_zone
.
currency
string
The currency of the balances.
effective_on
string
Effective date of the summary.
holding_balance_credit
string
Total credit amount in cents applied to holding_balance
. Zero or positive.
holding_balance_debit
string
Total debit amount in cents applied to holding_balance
. Zero or negative.
holding_balance_close
string
Close holding_balance
in cents at the end of effective_on
in time_zone
.
locked_balance_credit
string
Total credit amount in cents applied to locked_balance
. Zero or positive.
locked_balance_debit
string
Total debit amount in cents applied to locked_balance
. Zero or negative.
locked_balance_close
string
Close locked_balance
in cents at the end of effective_on
in time_zone
.
pending_balance_credit
string
Total credit amount in cents applied to pending_balance
. Zero or positive.
pending_balance_debit
string
Total debit amount in cents applied to pending_balance
. Zero or negative.
pending_balance_close
string
Close pending_balance
in cents at the end of effective_on
in time_zone
.
time_zone
string
Time zone of effective_on
to decide day boundaries. You can set your platform reporting time zone in Platform Settings on Dashboard.
transaction_count
int32
Total number of transactions on the day of effective_on
.
Bank Account Summary object
{
"effective_on": "2022-03-01",
"time_zone": "America/Los_Angeles",
"currency": "USD",
"transaction_count": 1,
"available_balance_credit": "100",
"available_balance_debit": "-200",
"available_balance_close": "300",
"pending_balance_credit": "400",
"pending_balance_debit": "-500",
"pending_balance_close": "600",
"locked_balance_credit": "700",
"locked_balance_debit": "-800",
"locked_balance_close": "900",
"holding_balance_credit": "1000",
"holding_balance_debit": "-1100",
"holding_balance_close": "1200"
}
Get bank account summary history
GET
/bank-accounts/{bank_account_id}/history
Get the summary history of a bank account. You must set your platform reporting time zone in Platform Settings on Dashboard.
path parameters
bank_account_id
string
Required
The ID of the bank account you are looking up
query parameters
from_date
string
Required
Starting date of the history. Format: YYYY-MM-DD
.
to_date
string
Required
Ending date of the history. Format: YYYY-MM-DD
. Maximum date range: `31` days.
Request
curl 'https://api.column.com/bank-accounts/bacc_27kpr2m6CsHkFYBocMa7l484DSd/history' \
-u :<YOUR API KEY> \
-d from_date="2022-03-01" \
-d to_date="2022-03-02"
Response
{
"id": "bacc_27kpr2m6CsHkFYBocMa7l484DSd",
"history": [
{
"effective_on": "2022-03-01",
"time_zone": "America/Los_Angeles",
"currency": "USD",
"transaction_count": 1,
"available_balance_credit": "100",
"available_balance_debit": "-200",
"available_balance_close": "300",
"pending_balance_credit": "400",
"pending_balance_debit": "-500",
"pending_balance_close": "600",
"locked_balance_credit": "700",
"locked_balance_debit": "-800",
"locked_balance_close": "900",
"holding_balance_credit": "1000",
"holding_balance_debit": "-1100",
"holding_balance_close": "1200"
},
{
"effective_on": "2022-03-02",
"time_zone": "America/Los_Angeles",
"currency": "USD",
"transaction_count": 2,
"available_balance_credit": "200",
"available_balance_debit": "-300",
"available_balance_close": "400",
"pending_balance_credit": "500",
"pending_balance_debit": "-600",
"pending_balance_close": "700",
"locked_balance_credit": "800",
"locked_balance_debit": "-900",
"locked_balance_close": "1000",
"holding_balance_credit": "1100",
"holding_balance_debit": "-1200",
"holding_balance_close": "1300"
}
]
}
Account number object
An account number is the child of a bank account. A bank account can have one or more account numbers. Think of account numbers as a pointer to a bank account. Account numbers will be used by external banks to transact with Column bank accounts. Read about account numbers in our data model section for more information.
object parameters
account_number
string
The externally facing account number tied to this bank account.
bank_account_id
string
The Column bacc_id
tied to this bank account.
created_at
string
The timestamp the account number was created.
description
string
A name for the account number (minimum of three characters)
id
string
The unique id of the object
routing_number
string
The externally facing routing number tied to this bank account.
Account Number object
{
"account_number": "256783259046169",
"bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
"created_at": "2022-03-01T20:09:42.949787176Z",
"description": "Travel Checking Account Number",
"id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
"routing_number": "091000019"
}
Create a new account number
POST
/bank-accounts/{bank_account_id}/account-numbers
Creates a new account number that points to the associated bank account
path parameters
bank_account_id
string
Required
The bank account that you want the new account number to point to
body parameters
description
string
Optional
A description for this account number
Request
curl 'https://api.column.com/bank-accounts/<bank_account_id>/account-numbers' \
-XPOST \
-u :<YOUR API KEY> \
-d description="Travel Checking Account Number"
Response
{
"id": "string",
"created_at": "2021-11-29T17:24:21.135Z",
"bank_account_id": "string",
"description": "string",
"routing_number": "string",
"account_number": "string"
}
List all account numbers from a bank account
GET
/bank-accounts/{bank_account_id}/account-numbers
Lists all the account numbers that point to a specific bank account
path parameters
bank_account_id
string
Required
The bank account that you want the new account number to point to
query parameters
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
Request
curl 'https://api.column.com/bank-accounts/<bank_account_id>/account-numbers' \
-u :<YOUR API KEY>
Response
{
"account_numbers": [
{
"id": "string",
"created_at": "2021-11-29T17:25:40.081Z",
"bank_account_id": "string",
"description": "string",
"routing_number": "string",
"account_number": "string"
}
],
"has_more": true
}
Get an account number
GET
/account-numbers/{account_number_id}
Lists all the account numbers that point to a specific bank account
path parameters
account_number_id
string
Required
The id for the account number
Request
curl 'https://api.column.com/account-numbers/<account_number_id>' \
-u :<YOUR API KEY>
Response
{
"id": "string",
"created_at": "2021-11-29T17:33:51.602Z",
"bank_account_id": "string",
"description": "string",
"routing_number": "string",
"account_number": "string"
}
Loan object
A loan is an object that lives under an entity, at the same level as a bank account. Just like entities can have multiple bank accounts, entities can have multiple loans. Loans are the foundation for many lending-oriented use cases such as charge cards and term loans. Read about loans in our data model section for more information.
object parameters
balances
object
principal_charged_off
string
The balance of the loan which has been charged off.
principal_holding
string
The balance of the loan which is in a holding
state.
principal_outstanding
string
The balance of the loan which is oustanding.
principal_paid
string
The balance of the loan which has been paid.
charged_off_at
string
The timestamp the loan was charged off.
created_at
string
The timestamp the loan was created.
currency
string
The currency of the loan. Currently only USD
is supported.
delinquent_at
string
The timestamp the loan was marked as delinquent.
description
string
The description of the loan in the Column dashboard.
disputed_at
string
The timestamp the loan was marked as disputed.
id
string
The id of the loan object.
is_revolving
boolean
Indicates whether or not the loan is revolving. If true
the loan can have multiple disbursements.
maturity_date
string
The maturity date of the loan.
max_principal_balance
string
The max principal balance of the loan. This is akin to a credit limit. Disbursements will fail if the resulting principal will be above the max principal.
paid_off_at
string
The timestamp the loan is marked as paid off.
primary_signer_entity_id
string
The Column entity_id which the loan is related to.
status
string
The current status of the loan. A loan can have a status of current
, delinquent
, charged_off
, in_dispute
, canceled
or paid_off
.
Loan object
{
"balances": {
"principal_charged_off": "0",
"principal_holding": "0",
"principal_outstanding": "0",
"principal_paid": "0"
},
"charged_off_at": null,
"created_at": "2022-03-15T23:18:24Z",
"currency": "USD",
"delinquent_at": null,
"description": "new_account",
"disputed_at": null,
"id": "loan_26RVIHzwLaCxVXmMLcUJyhFHT3b",
"is_revolving": true,
"maturity_date": "2021-01-01",
"max_principal_balance": "1000000",
"paid_off_at": null,
"primary_signer_entity_id": "enti_26RC4ARuBwDmxDlRX1ZX252YPfe",
"status": "current"
}
Create a new loan
POST
/loans
Creates a new loan under an entity.
body parameters
currency
string
Required
The three-letter currency code defined in ISO 4217. e.g. USD
description
string
Required
The description of the loan in the Column dashboard.
entity_id
boolean
Required
The entity to create the loan under.
is_revolving
boolean
Required
Indicates whether or not the loan is revolving. If true
the loan can have multiple disbursements.
maturity_date
string
Required
The maturity date of the loan
max_principal_balance
string
Required
The max principal balance of the loan in cents. This is akin to a credit limit. Disbursements will fail if the resulting principal will be above the max principal.
e.g. $1.75 would be represented by 175
.
Request
curl 'https://api.column.com/loans' \
-XPOST \
-u :<YOUR API KEY> \
-d description="sample loan" \
-d currency="USD" \
-d entity_id="enti_25n5phSY8StZxU4C2Y7gAREGUdB" \
-d is_revolving="true" \
-d maturity_date="2022-10-10" \
-d max_principal_balance="100000"
Response
{
"balances": {
"principal_charged_off": "0",
"principal_holding": "0",
"principal_outstanding": "0",
"principal_paid": "0"
},
"charged_off_at": null,
"created_at": "2022-03-16T22:25:51Z",
"currency": "USD",
"delinquent_at": null,
"description": "sample loan",
"disputed_at": null,
"id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"is_revolving": true,
"maturity_date": "2022-10-10",
"max_principal_balance": "100000",
"paid_off_at": null,
"primary_signer_entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"status": "current"
}
List all loans
GET
/loans
List all loans under the platform. Filtered results can be retrieved with extra parameters in the query
query parameters
entity_id
string
Optional
status
string
Optional
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
Request
curl 'https://api.column.com/loans?entity_id=enti_25n5phSY8StZxU4C2Y7gAREGUdB' \
-u :<YOUR API KEY>
Response
{
"has_more": false,
"loans": [
{
"balances": {
"principal_charged_off": "0",
"principal_holding": "10000000",
"principal_outstanding": "9991500",
"principal_paid": "-52000"
},
"canceled_at": null,
"charged_off_at": null,
"created_at": "2022-03-16T22:25:51Z",
"currency": "USD",
"delinquent_at": null,
"description": "sample loan",
"disputed_at": null,
"id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"is_revolving": true,
"maturity_date": "2022-10-10",
"max_principal_balance": "50000000",
"paid_off_at": null,
"primary_signer_entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"status": "current"
}
]
}
Get a loan by ID
GET
/loans/{loan_id}
Retrieve a single loan by its ID.
path parameters
loan_id
string
Required
The ID of the loan you are looking up
Request
curl 'https://api.column.com/loans/<loan_id>' \
-u :<YOUR API KEY>
Response
{
"balances": {
"principal_charged_off": "0",
"principal_holding": "0",
"principal_outstanding": "1000",
"principal_paid": "0"
},
"charged_off_at": null,
"created_at": "2022-03-16T22:25:51Z",
"currency": "USD",
"delinquent_at": null,
"description": "sample loan",
"disputed_at": null,
"id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"is_revolving": true,
"maturity_date": "2022-10-10",
"max_principal_balance": "100000",
"paid_off_at": null,
"primary_signer_entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"status": "current"
}
Update a loan
PATCH
/loans/{loan_id}
Updates a loan by its ID.
path parameters
loan_id
string
Required
The ID of the loan you are looking up
body parameters
description
string
Optional
The description of the loan in the Column dashboard.
is_revolving
boolean
Optional
Indicates whether or not the loan is revolving. If true
the loan can have multiple disbursements.
maturity_date
string
Optional
The maturity date of the loan
max_principal_balance
string
Optional
The max principal balance of the loan in cents. This is akin to a credit limit. Disbursements will fail if the resulting principal will be above the max principal.
e.g. $1.75 would be represented by 175
.
status
string
Optional
The current status of the loan. A loan can have a status of current
, delinquent
, charged_off
, in_dispute
, canceled
or paid_off
.
Request
curl 'https://api.column.com/loans/<loan_id>' \
-XPATCH \
-u : -u :<YOUR API KEY> \
-d max_principal_balance="50000000"
Response
{
"balances": {
"principal_charged_off": "0",
"principal_holding": "0",
"principal_outstanding": "1500",
"principal_paid": "2000"
},
"charged_off_at": null,
"created_at": "2022-03-16T22:25:51Z",
"currency": "USD",
"delinquent_at": null,
"description": "sample loan",
"disputed_at": null,
"id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"is_revolving": true,
"maturity_date": "2022-10-10",
"max_principal_balance": "50000000",
"paid_off_at": null,
"primary_signer_entity_id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
"status": "current"
}
Create a disbursement
POST
/loans/disbursements
Creates a disbursement for a loan.
body parameters
amount
string
Required
Amount (in cents) of the funds that will be disbursed.
e.g. $1.75 would be represented by 175
.
bank_account_id
string
Required
The bank account to which funds will be disbursed.
currency
string
Required
The currency of the loan. Currently only USD
is supported.
description
string
Required
The description of the loan in the Column dashboard.
hold
boolean
Optional
If true
, creates a disbursement in a hold
state. The disbursement will not be completed until the clear
API is called. Disbursements in a hold
state may be updated or canceled.
loan_id
string
Required
The ID of the loan to from which the disbursement is being made.
details
object
Optional
Transfer monitoring details
sender_name
string
Optional
Name of the sender
merchant_name
string
Optional
Name of the merchant for this transaction
merchant_category_code
string
Optional
Category code for the merchant for this transaction
authorization_method
string
Optional
Authorization method for this transaction
website
string
Optional
Website for this transaction
internal_transfer_type
string
Optional
Transfer type in non-column systems
statement_description
string
Optional
Line item on the customer statement for the transfer
address
object
Required
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
Request
curl 'https://api.column.com/loans/disbursements' \
-XPOST \
-u :<YOUR API KEY> \
-d amount="1000" \
-d currency="USD" \
-d description="first disbursement" \
-d loan_id=loan_26UE1mcnJsRMTIJfwKFXqqF0xXo \
-d bank_account_id=bacc_25FyEyuKX3KlRAciUs3BzXag1RI
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"amount": "1000",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"created_at": "2022-03-17T16:00:24.686Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-17T16:00:24.684711613Z",
"id": "ldsb_26WIHBrOhkhJNEBA48DKsxny8J9",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "completed"
}
Create a payment
POST
/loans/payments
Creates a payment for a loan.
body parameters
principal_amount
string
Required
Amount (in cents) of the funds that will be disbursed.
e.g. $1.75 would be represented by 175
.
bank_account_id
string
Required
The bank account from which the payment is coming from. The balance of the bank account will decrease by the payment amount.
currency
string
Required
The currency of the loan. Currently only USD
is supported.
description
string
Required
The description of the loan in the Column dashboard.
loan_id
string
Required
The ID of the loan to which the payment is being made. The principal_oustanding
of the loan will decrease by the payment amount.
Request
curl 'https://api.column.com/loans/payments' \
-XPOST \
-u :<YOUR API KEY> \
-d principal_amount="1000" \
-d currency="USD" \
-d description="first payment" \
-d loan_id=loan_26UE1mcnJsRMTIJfwKFXqqF0xXo \
-d bank_account_id=bacc_25FyEyuKX3KlRAciUs3BzXag1RI
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"currency": "",
"description": "first payment",
"id": "lpmt_26WKSHYQoJvPEaGn149tlduSaja",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"principal_amount": "1000",
"status": "completed"
}
Update a disbursement
PATCH
/loans/disbursements/{disbursement_id}
Update a disbursement by its ID. Disbursement must be in a "hold" state. Only the amount can be updated.
path parameters
disbursement_id
string
Required
The ID of the disbursement you want to update.
body parameters
amount
string
Required
Amount (in cents) of the funds that will be disbursed.
e.g. $1.75 would be represented by 175
.
currency
string
Required
The currency of the loan. Currently only USD
is supported.
Request
curl 'https://api.column.com/loans/disbursements/<ldsb_id>' \
-XPATCH \
-u :<YOUR API KEY> \
-d amount="1500" \
-d currency="USD"
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"amount": "1500",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"created_at": "2022-03-17T16:39:20Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-17T16:39:20Z",
"id": "ldsb_26WN0fvWcr9cR1tTzbTB3qbov8e",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "hold"
}
Clear a disbursement
POST
/loans/disbursements/{disbursement_id}/clear
Clears a disbursement by its ID. Disbursements can only be cleared if they are in a "hold" state.
path parameters
disbursement_id
string
Required
The ID of the disbursement to clear.
body parameters
amount
string
Optional
Updated amount (in cents) of the funds that will be disbursed.
e.g. $1.75 would be represented by 175
.
currency
string
Optional
The currency of the loan. Currently only USD
is supported.
Request
curl 'https://api.column.com/loans/disbursements/<ldsb_id>/clear' \
-XPOST \
-u :<YOUR API KEY> \
-d amount="1500" \
-d currency="USD"
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"amount": "1500",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"created_at": "2022-03-17T16:39:20Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-17T16:39:20Z",
"id": "ldsb_26WN0fvWcr9cR1tTzbTB3qbov8e",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "completed"
}
Cancel a disbursement
POST
/loans/disbursements/{disbursement_id}/cancel
Cancels a disbursement by its ID. Only a disbursement in a "hold" state can be cancelled.
path parameters
disbursement_id
string
Required
The ID of the disbursement to clear.
Request
url 'https://api.column.com/loans/disbursements/<ldsb_id>/cancel' \
-XPOST \
-u :<YOUR API KEY>
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"amount": "1000",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"created_at": "2022-03-17T18:21:47Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-17T18:21:47Z",
"id": "ldsb_26WZT7MtY2vxbrNHO9RHekeCIOo",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "canceled"
}
Get a disbursement
GET
/loans/disbursments/{disbursement_id}
Get a disbursement by its ID.
path parameters
disbursement_id
string
Required
The ID of the disbursement you are looking up.
Request
curl 'https://api.column.com/loans/disbursements/<ldsb_id>' \
-u :<YOUR API KEY>
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"amount": "1000",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"created_at": "2022-03-17T18:21:47Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-17T18:21:47Z",
"id": "ldsb_26WZT7MtY2vxbrNHO9RHekeCIOo",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "canceled"
}
Get a payment
GET
/loans/payments/{payment_id}
Get a payment by its ID.
path parameters
payment_id
string
Required
The ID of the payment you are looking up.
Request
curl 'https://api.column.com/loans/payments/<lpmt_id>' \
-u :<YOUR API KEY>
Response
{
"account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
"bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
"currency": "",
"description": "first payment",
"id": "lpmt_26WaF5JrqUEXT1yhabNOfoCf6fp",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"principal_amount": "1000",
"status": "completed"
}
List all payments
GET
/loans/payments
List all disbursements under the platform. Filtered results can be retrieved with extra parameters in the query
query parameters
loan_id
string
Optional
bank_account_id
string
Optional
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
Request
curl 'https://api.column.com/loans/payments?loan_id=loan_26UE1mcnJsRMTIJfwKFXqqF0xXo' \
-u :<YOUR API KEY>
Response
{
"has_more": false,
"payments": [
{
"account_number_id": "acno_2781oeSJZNEtpG1cc9xWheur5SF",
"bank_account_id": "bacc_2781ocmuIk4fcq818QRDoJ7hXlS",
"currency": "USD",
"description": "first payment",
"id": "lpmt_2782JJaLBzAmF7qpSUTjBwxHy6B",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"principal_amount": "10000",
"status": "completed"
},
{
"account_number_id": "acno_274RkerEeeYrNHCoRmkxcdCWz0c",
"bank_account_id": "bacc_274RkcTicf4P3pZRWnCFM4tGzhT",
"currency": "USD",
"description": "first payment",
"id": "lpmt_274o2O54AEQU5vXwgjVyMEP7tiQ",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"principal_amount": "20000",
"status": "completed"
}
]
}
List all disbursements
GET
/loans/disbursements
List all disbursements under the platform. Filtered results can be retrieved with extra parameters in the query
query parameters
loan_id
string
Optional
bank_account_id
string
Optional
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
Request
curl 'https://api.column.com/loans/disbursements?loan_id=loan_26UE1mcnJsRMTIJfwKFXqqF0xXo' \
-u :<YOUR API KEY>
Response
{
"disbursements": [
{
"account_number_id": "acno_2781oeSJZNEtpG1cc9xWheur5SF",
"amount": "20000",
"bank_account_id": "bacc_2781ocmuIk4fcq818QRDoJ7hXlS",
"created_at": "2022-03-31T03:50:17Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-31T03:50:17Z",
"id": "ldsb_278PD0e01VxKMfFajrGBmEmCdoJ",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "completed"
},
{
"account_number_id": "acno_274RkerEeeYrNHCoRmkxcdCWz0c",
"amount": "20000",
"bank_account_id": "bacc_274RkcTicf4P3pZRWnCFM4tGzhT",
"created_at": "2022-03-29T21:18:27Z",
"currency": "USD",
"description": "first disbursement",
"effective_at": "2022-03-29T21:18:27Z",
"id": "ldsb_274oQyeBOsOoFe3k2HBv0vIGOgB",
"loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
"status": "completed"
}
]
}
Counterparty object
A counterparty is an external account that you can transfer money to and from. All ACH and Wire transfers originated by Column take in a counterparty_id to identify the destination. Once you have created a counterparty - you can send money to it (or pull from it)! A counterparty stores an external bank account and can also store additional transaction detail, as desired or required. Read about counterparties in our data model section for more information.
object parameters
account_number
string
The account number for the bank account.
created_at
string
The timestamp the object was created.
id
string
The unique id of the object
description
string
Description of the counterparty visible only in your platform. Maximum length: 127
characters.
is_column_account
boolean
Indicates whether this counterparty account is actually a Column account.
routing_number
string
The routing number of the bank.
routing_number_type
string
The type of the routing number. Can be aba
or bic
.
updated_at
string
The timestamp the object was last updated.
wire
object
The wire object associated with the counterparty.
beneficiary_name
string
The owner name of the bank account.
beneficiary_address
object
The address of the beneficiary.
line_1
string
Address line 1
line_2
string
Address line 2
city
string
City
state
string
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Postal code
country_code
string
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
beneficiary_phone
string
The phone number of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 31
characters.
beneficiary_email
string
The email address of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127
characters.
beneficiary_legal_id
string
The legal ID (e.g., Tax ID, Cedula Juridica, etc.) of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127
characters.
beneficiary_type
string
The legal entity type of the beneficiary. Can be business
, non_profit
, individual
, or sole_proprietor
. This field is recommended for international wire transfers, and required in some countries.
local_bank_code
string
The local bank code of the beneficiary's bank (e.g., India IFSC, Australia BSB, etc.). This field is recommended for international wire transfers, and required in some countries. Maximum length: 63
characters.
local_account_number
string
The local account number (e.g. Cuenta Cliente in Costa Rica) in the beneficiary's bank. This field is recommended for international wire transfers, and required in some countries. Maximum length: 63
characters.
wire_drawdown_allowed
boolean
Indicate if the counterparty is allowed to send drawdown requests to Column via FedWire. If it is false, all inbound drawdown requests from this counterparty will be rejected.
Counterparty object
{
"id": "cpty_2FMRklDi5aScQH2RjQ0jvUkhcfg",
"account_number": "GB29NWBK60161331926819",
"routing_number": "BKENGB20",
"wire": {
"beneficiary_name": "John Doe",
"beneficiary_address": {
"line_1": "96 Lairg Road",
"line_2": "",
"city": "New Winton",
"state": "",
"postal_code": "EH33 5ZN",
"country_code": "GB"
},
"beneficiary_phone": "1302345666543",
"beneficiary_email": "john.doe@gmail.com",
"beneficiary_legal_id": "GB1245643234",
"beneficiary_type": "sole_proprietor",
"local_bank_code": "GB123456",
"local_account_number": "876545678"
},
"created_at": "2022-09-27T17:35:11.996150Z",
"updated_at": "2022-09-27T17:35:11.996150Z",
"is_column_account": false,
"wire_drawdown_allowed": false,
"routing_number_type": "bic",
"description": "international_cpty"
}
Create a counterparty
POST
/counterparties
A counterparty is the legal entity on the other side of the transaction. Depending on the type of transaction we may need to know more or less about them.
e.g. A domestic ACH only requires the account and routing number, while an international wire will need full name and address.
body parameters
routing_number
string
Required
The routing number of the bank.
routing_number_type
string
Optional
The type of the routing number. Can be aba
or bic
. Default value is aba
if this field is not set.
account_number
string
Required
The account number of the bank account.
description
string
Optional
Description of the counterparty visible only in your platform. Maximum length: 127
characters.
wire_drawdown_allowed
boolean
Optional
Indicate if the counterparty is allowed to send drawdown requests to Column via FedWire. If it is false, all inbound drawdown requests from this counterparty will be rejected.
wire
object
Optional
The wire object associated with the counterparty.
beneficiary_name
string
Required
The owner name of the bank account.
beneficiary_address
object
Required
The address of the beneficiary.
line_1
string
Required
Address line 1
line_2
string
Optional
Address line 2
city
string
Required
City
state
string
Required
State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...
) are allowed.
postal_code
string
Required
Postal code
country_code
string
Required
ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...
).
beneficiary_phone
string
Optional
The phone number of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 31
characters.
beneficiary_email
string
Optional
The email address of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127
characters.
beneficiary_legal_id
string
Optional
The legal ID (e.g., Tax ID, Cedula Juridica, etc.) of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127
characters.
beneficiary_type
string
Optional
The legal entity type of the beneficiary. Can be business
, non_profit
, individual
, or sole_proprietor
. This field is recommended for international wire transfers, and required in some countries.
local_bank_code
string
Optional
The local bank code of the beneficiary's bank (e.g., India IFSC, Australia BSB, etc.). This field is recommended for international wire transfers, and required in some countries. Maximum length: 63
characters.
local_account_number
string
Optional
The local account number (e.g. Cuenta Cliente in Costa Rica) in the beneficiary's bank. This field is recommended for international wire transfers, and required in some countries. Maximum length: 63
characters.
Request
curl 'https://api.column.com/counterparties' \
-XPOST \
-u :<YOUR API KEY> \
-d routing_number="BKENGB20" \
-d account_number="GB29NWBK60161331926819" \
-d routing_number_type="bic" \
-d description="international_cpty" \
-d "wire[beneficiary_name]"="John Doe" \
-d "wire[beneficiary_phone]"="1302345666543" \
-d "wire[beneficiary_email]"="john.doe@gmail.com" \
-d "wire[beneficiary_legal_id]"="GB1245643234" \
-d "wire[beneficiary_type]"="sole_proprietor" \
-d "wire[local_bank_code]"="GB123456" \
-d "wire[local_account_number]"="876545678" \
-d "wire[beneficiary_address][line_1]"="96 Lairg Road" \
-d "wire[beneficiary_address][city]"="New Winton" \
-d "wire[beneficiary_address][postal_code]"="EH33 5ZN" \
-d "wire[beneficiary_address][country_code]"="GB"
Response
{
"id": "cpty_2FMRklDi5aScQH2RjQ0jvUkhcfg",
"account_number": "GB29NWBK60161331926819",
"routing_number": "BKENGB20",
"wire": {
"beneficiary_name": "John Doe",
"beneficiary_address": {
"line_1": "96 Lairg Road",
"line_2": "",
"city": "New Winton",
"state": "",
"postal_code": "EH33 5ZN",
"country_code": "GB"
},
"beneficiary_phone": "1302345666543",
"beneficiary_email": "john.doe@gmail.com",
"beneficiary_legal_id": "GB1245643234",
"beneficiary_type": "sole_proprietor",
"local_bank_code": "GB123456",
"local_account_number": "876545678"
},
"created_at": "2022-09-27T17:35:11.996150Z",
"updated_at": "2022-09-27T17:35:11.996150Z",
"is_column_account": false,
"wire_drawdown_allowed": false,
"routing_number_type": "bic",
"description": "international_cpty"
}
List all counterparties
GET
/counterparties
Retrieve all counterparties under your developer account. Filtered results can be retrieved with extra parameters in the query (account_number
, routing_number
, etc.).
query parameters
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
account_number
string
Optional
Return counterparties created with given account number.
routing_number
string
Optional
Return counterparties created with given routing number.
Request
curl 'https://api.column.com/counterparties' \
-u :<YOUR API KEY>
Response
{
"counterparties": [
{
"id": "cpty_2FMRklDi5aScQH2RjQ0jvUkhcfg",
"account_number": "GB29NWBK60161331926819",
"routing_number": "BKENGB20",
"wire": {
"beneficiary_name": "John Doe",
"beneficiary_address": {
"line_1": "96 Lairg Road",
"line_2": "",
"city": "New Winton",
"state": "",
"postal_code": "EH33 5ZN",
"country_code": "GB"
},
"beneficiary_phone": "1302345666543",
"beneficiary_email": "john.doe@gmail.com",
"beneficiary_legal_id": "GB1245643234",
"beneficiary_type": "sole_proprietor",
"local_bank_code": "GB123456",
"local_account_number": "876545678"
},
"created_at": "2022-09-27T17:35:11.996150Z",
"updated_at": "2022-09-27T17:35:11.996150Z",
"is_column_account": false,
"wire_drawdown_allowed": false,
"routing_number_type": "bic",
"description": "international_cpty"
}
],
"has_more": true
}
Get a counterparty by ID
GET
/counterparties/{counterparty_id}
Retrieve a single counterparty by its ID.
path parameters
counterparty_id
string
Required
ID of the counterparty you're requesting
Request
curl 'https://api.column.com/counterparties/<counterparty_id>' \
-u :<YOUR API KEY>
Response
{
"id": "cpty_2FMRklDi5aScQH2RjQ0jvUkhcfg",
"account_number": "GB29NWBK60161331926819",
"routing_number": "BKENGB20",
"wire": {
"beneficiary_name": "John Doe",
"beneficiary_address": {
"line_1": "96 Lairg Road",
"line_2": "",
"city": "New Winton",
"state": "",
"postal_code": "EH33 5ZN",
"country_code": "GB"
},
"beneficiary_phone": "1302345666543",
"beneficiary_email": "john.doe@gmail.com",
"beneficiary_legal_id": "GB1245643234",
"beneficiary_type": "sole_proprietor",
"local_bank_code": "GB123456",
"local_account_number": "876545678"
},
"created_at": "2022-09-27T17:35:11.996150Z",
"updated_at": "2022-09-27T17:35:11.996150Z",
"is_column_account": false,
"wire_drawdown_allowed": false,
"routing_number_type": "bic",
"description": "international_cpty"
}
Delete a counterparty
DELETE
/counterparties/{counterparty_id}
Delete a counterparty
path parameters
counterparty_id
string
Required
ID of the counterparty you're deleting
Request
curl 'https://api.column.com/counterparties/<counterparty_id>' \
-XDELETE \
-u :<YOUR API KEY>
Response
{}
Financial Institution object
object parameters
ach_eligible
bool
Indicate if an institution accepts ACH transfers or not.
city
string
Institution's address city name.
created_at
string
The timestamp the object was created.
full_name
string
Institution's official full name.
phone_number
string
Institution's phone number. Only available if ach_eligible = true
.
routing_number
string
Institution's routing/ABA number. Nine digits including a check digit.
short_name
string
Institution's short name.
state
string
Institution's address state code (e.g., CA)
street_address
string
Institution's street address. Only available if ach_eligible = true
.
updated_at
string
The timestamp the object was last updated.
wire_eligible
bool
Indicate if an institution accepts wire transfers or not.
wire_settlement_only
bool
Indicate if an institution can only accept bank-to-bank settlement transfers, but cannot accept customer transfers.
zip_code
string
Institution's address zip code. Only available if ach_eligible = true
.
Counterparty object
{
"ach_eligible": true,
"city": "CHICO",
"created_at": "2021-10-13T16:39:01Z",
"full_name": "COLUMN N.A.",
"phone_number": "5308795900",
"routing_number": "121145307",
"short_name": "COLUMN NA",
"state": "CA",
"street_address": "1717 MANGROVE AVE # 100",
"updated_at": "2021-10-20T15:53:03Z",
"wire_eligible": true,
"wire_settlement_only": false,
"zip_code": "95926"
}
Get a financial institution
GET
/institutions/{routing_number}
Retrieve a single financial institution by its routing/ABA number.
path parameters
routing_number
string
Required
Routing/ABA number of the financial institution you're requesting
Request
curl 'https://api.column.com/institutions/322271627' \
-u :<YOUR API KEY>
Response
{
"ach_eligible": true,
"city": "TAMPA",
"created_at": "2021-10-13T16:39:55Z",
"full_name": "JPMORGAN CHASE BANK, NA",
"phone_number": "8134323700",
"routing_number": "322271627",
"short_name": "WASH MUT BANK",
"state": "FL",
"street_address": "10430 HIGHLAND MANOR DRIVE",
"updated_at": "2021-10-28T13:00:35Z",
"wire_eligible": true,
"zip_code": "33610"
}
ACH transfer object
The ACH transfer object represents the current state of a single ACH transfers originated by or received by Column. The ACH object will contain all relevant information about the specific transfer, which are described in the parameters below. Read about more about ACH transfers here.
object parameters
account_number_id
string
ID of the account number that is sending the transfer.
acknowledged_at
string
The timestamp at which an acknowledgement is received for a CCD or CTX ACH transfer.
allow_overdraft
boolean
Allow the account to go negative for the transfer. The bank account needs to have is_overdraftable
enabled with an overdraft reserve account linked to it.
amount
string
Amount (in cents) of the funds that will be transferred between originator and counterparty accounts.
e.g. $1.75 would be represented by 175
.
bank_account_id
string
ID of the bank account that is sending the transfer.
cancelled_at
string
The timestamp at which the transfer is cancelled
company_discretionary_data
string
This optional field allows you to include codes (one or more), of significance only to you, to enable specialized handling of the transfer. There is no standardized interpretation for the value of the field. Maximum length:20
characters.
CIE
: This field may contain the Biller's name.
CTX
: The Originator's bank account number may be placed in this field.
company_entry_description
string
You can use this optional field to provide the Receiver with a description of the purpose of the transfer. For example, “Gas bill”, “Reg. Salary”, “ins. prem.”, “Soc. Sec.”, “DTC”, “Trade Pay”, “PURCHASE”, etc.
Default value: "PAYMENT". Maximum length: 10 characters.
company_id
string
A 10-digit unique identifier used for identifying entities, called originators, collecting payments via ACH debit. If you would like to use a specific company ID when originating ACH transactions, please contact us.
company_name
string
The name of the originator company that initiated the ACH transfer.
completed_at
string
The timestamp at which the 60 day return window has passed for this ACH transfer, and it is officially completed.
counterparty_id
string
ID of the counterparty that will receive the transfer.
created_at
string
The timestamp at which the transfer request is created.
currency_code
string
The three-letter currency code defined in ISO 4217. e.g. USD
.
description
string
Description of the transfer visible only in your platform.
effective_on
string
Date (00:00AM
in Pacific Time zone) on which the transfer is effective. For incoming transfers, this is 00:00AM
on the Settlement Date of the transfer in PT timezone (more details).
entry_class_code
string
Standard Entry Class code of the transfer. More Details Here.
iat
object
This field provides additional IAT (International ACH Transfer) addenda information. More information here.
id
string
The unique id for this object
idempotency_key
string
The idempotency key specified in the ACH transfer.
initiated_at
string
The timestamp at which Column received your ACH request.
is_incoming
boolean
Indicates whether the ACH transfer was incoming (true
or outgoing false
is_on_us
boolean
Indicates whether or not the ACH transfer is coming from a Column bank account. If true
the request is processed immediately like a book transfer, and not sent to the Fed.
manual_review_at
string
The timestamp at which the ACH transfer went into the manual review state.
notification_of_changes
object
Details of Notifications of Change (NOCs) with the latest information of the counterparty. Available only with ach.outgoing_transfer.noc
events.
receiver_id
string
Latest accounting reference number by which the beneficiary should be referred by the originator.
routing_number
string
Latest routing number of the counterparty.
account_number
string
Latest account number of the counterparty.
nsf_deadline
string
For incoming ACH Debits and available only with ach.incoming_transfer.nsf
events. The deadline by which the receiver account must be funded with enough credits. Otherwise, Column will file an NSF return for this ACH Transfer. See Incoming Debit ACH Transfers for more details.
odfi_routing_number
string
The externally facing routing number for the ODFI that initiated the ACH Transfer.
payment_related_info
string
Provides additional information on the ACH transfer. It is usually up to 80 characters long but could be longer for CTX, ENR and TRX transfers.
receiver_id
string
This field contains the accounting reference number by which the Receiver is known to the Originator. It is included for further identification and for descriptive purposes.
For example, it may be the number shown on an invoice, statement, billhead, notice, or other communication as the reference for the Receiver to update account receivable records.
receiver_name
string
The name of the receiver, usually the name on the bank account of the Receiver.
Default value: beneficiary name of the counterparty. Maximum length: 22
characters.
return_contested_at
string
The timestamp at which the dishonored return for this transfer was contested by the RDFI.
return_details
array
Details of the return processing history (e.g., initiated, dishonored, dishonor contested, manual review, etc.). Available only with ach.*.returned
, ach.*.return_dishonored
or ach.*.return_contested
events.
return_dishonored_at
string
The timestamp at which the return for this transfer was dishonored by the ODFI.
returned_at
string
The timestamp at which the ACH transfer is returned by the RDFI.
reversal_pair_transfer_id
string
If the transfer is the original transfer of an ACH Reversal, this field is the unique ID of the reversal transfer. If the transfer is the reversal transfer of an ACH Reversal, this field is the unique ID of the original transfer. Please refer to ACH Reversals for more details.
same_day
boolean
Specify if the transfer is a same-day ACH transfer. If it is set as true
, it takes precedence over effective_date
and overrides it.
settled_at
string
The timestamp at which the ACH was settled.
status
string
The current state of the ACH transfer. See Notifications and States for details. Possible values: INITIATED
, PENDING_SUBMISSION
, SUBMITTED
, ACKNOWLEDGED
, SETTLED
, RETURNED
, COMPLETED
, CANCELED
, SCHEDULED
, PENDING_RETURN
, RETURN_DISHONORED
, RETURN_CONTESTED
, and MANUAL_REVIEW
.
submitted_at
string
The timestamp at which the ACH transfer was submitted to the Fed.
trace_number
string
The unique number assigned to every ACH entry by an ODFI which identifies that entry within a specific ACH file.
type
string
ACH transfer type: CREDIT
or DEBIT
. Learn more.
updated_at
string
The timestamp at which the ACH transfer was lastly updated.
ACH Transfer object
{
"id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
"iat": null,
"type": "CREDIT",
"amount": 60000,
"status": "SUBMITTED",
"is_on_us": false,
"same_day": false,
"company_id": "9959349647",
"created_at": "2022-11-09T23:32:47Z",
"settled_at": null,
"updated_at": "2022-11-09T23:32:48Z",
"description": "",
"is_incoming": false,
"receiver_id": "",
"returned_at": null,
"cancelled_at": null,
"company_name": "COLUMN NA",
"completed_at": null,
"effective_on": "2022-11-10T08:00:00Z",
"initiated_at": "2022-11-09T23:32:47Z",
"nsf_deadline": null,
"submitted_at": "2022-11-09T23:32:48Z",
"trace_number": "121145300000005",
"currency_code": "USD",
"receiver_name": "CHASE ACCOUNT",
"return_details": [],
"acknowledged_at": null,
"allow_overdraft": false,
"bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
"counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
"idempotency_key": "",
"entry_class_code": "PPD",
"manual_review_at": null,
"account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
"funds_availability": "default",
"odfi_routing_number": "121145307",
"return_contested_at": null,
"payment_related_info": "payment addenda for COR testing",
"return_dishonored_at": null,
"notification_of_changes": {
"receiver_id": "",
"routing_number": "241070530",
"account_number": "123456789"
},
"company_entry_description": "PAYMENT",
"reversal_pair_transfer_id": "",
"company_discretionary_data": ""
}
IAT transfer sub-object
object parameters
foreign_correspondent_bank_info
array
Provides additional details around foreign corresponding banks used in the IAT transfer.
foreign_payment_amount
string
The amount for which the transfer was originated by the Foreign ODFI. This will be in USD, since Column will receive IATs from a domestic correspondent bank.
foreign_trace_number
string
Contains the trace number assigned to the transfer in the originating national payments system.
odfi_branch_country_code
string
The two digit alphabetic country code which identifies the country in which the branch of the bank that originated the transfer is located.
odfi_identification
string
The routing number of the DFI originating the transfer.
odfi_identification_number_qualifier
string
Thw two digit numbering scheme used in the ODFI identification number. Possible values are 01
(National Clearing System Number), 02
(BIC Coder), or 03
(IBAN)
odfi_name
string
The name of the ODFI
originator_city_state_province
string
Contains the city, and if applicable the state or province of the originator.
originator_country_postal_code
string
Contains the postal code for the originator street address.
originator_name
string
Contains the name of the originator of the transaction.
originator_street_address
string
Contains the physical street address of the originator.
rdfi_branch_country_code
string
The two digit alphabetic country code which identifies the country in which the branch of the bank that received the transfer is located.
rdfi_identification
string
This field is used by the originator to insert its own number for tracing purposes.
rdfi_identification_number_qualifier
string
Thw two digit numbering scheme used in the RDFI identification number. Possible values are 01
(National Clearing System Number), 02
(BIC Coder), or 03
(IBAN)
rdfi_name
string
The name of the RDFI.
receiver_city_state_province
string
Contains the city, and if applicable the state or province of the receiver.
receiver_country_postal_code
string
Contains the postal code for the receiver street address.
receiver_identification_number
string
Contains the bank identification number of the DFI at which the receiver maintains their account.
receiver_street_address
string
Contains the physical street address of the receiver.
receiving_company_or_individual_name
string
Contains the name of the receiver of the transaction.
IAT transfer sub-object
{
"iat": {
"foreign_correspondent_bank_info": [{
"name": "name"
"identification_number_qualifier": "identification_number_qualifier"
"identification_number": "identification_number"
"branch_country_code": "branch_country_code"
}, ...],
"foreign_payment_amount": "11500",
"foreign_trace_number": "",
"odfi_branch_country_code": "IE",
"odfi_identification": "02800008",
"odfi_identification_number_qualifier": "01",
"odfi_name": "CITIBANK EUROPE PLC",
"originator_city_state_province": "LONDON*GB\\",
"originator_country_postal_code": "REDACTED",
"originator_name": "REDACTED",
"originator_street_address": "REDACTED",
"rdfi_branch_country_code": "US",
"rdfi_identification": "REDACTED",
"rdfi_identification_number_qualifier": "01",
"rdfi_name": "COLUMN N.A.",
"receiver_city_state_province": "x\\",
"receiver_country_postal_code": "US*74110\\",
"receiver_identification_number": "REDACTED",
"receiver_street_address": "REDACTED",
"receiving_company_or_individual_name": "REDACTED"
}
}
Create an ACH transfer
POST
/transfers/ach
Creates an ACH transfer between an account and a counterparty
.
body parameters
description
string
Optional
Description of the transfer visible only in your platform. Maximum length: 255
characters.
amount
string
Required
Amount (in cents) of the funds that will be transferred between originator and counterparty accounts.
e.g. $1.75 would be represented by 175
.
currency_code
string
Required
The three-letter currency code defined in ISO 4217. e.g. USD
bank_account_id
string
Optional
ID of the bank number that is sending the transfer. If no account_number_id
is specified, the default account number on bank_account_id is used.
account_number_id
or bank_account_id
is required.
counterparty_id
string
Required
ID of the counterparty that will receive the transfer
type
string
Required
ACH transfer type: CREDIT
or DEBIT
. Learn More.
effective_date
string
Optional
Date (format: YYYY-MM-DD
) on which the transfer will be effective
same_day
boolean
Optional
Specify if the transfer is a same-day ACH transfer. If it is set as true
, it takes precedence over effective_date
and overrides it.
company_discretionary_data
string
Optional
This optional field allows you to include codes (one or more), of significance only to you, to enable specialized handling of the transfer. There is no standardized interpretation for the value of the field. Maximum length:20
characters.
CIE
: This field may contain the Biller's name.
CTX
: The Originator's bank account number may be placed in this field.
company_entry_description
string
Optional
You can use this optional field to provide the Receiver with a description of the purpose of the transfer. For example, “Gas bill”, “Reg. Salary”, “ins. prem.”, “Soc. Sec.”, “DTC”, “Trade Pay”, “PURCHASE”, etc.
Default value: "PAYMENT". Maximum length: 10 characters.
company_name
string
Optional
This optional field identifies the source of the transfer and is used for descriptive purposes for the Receiver. Except as otherwise noted below, this field must contain the name by which the Originator is known to and readily recognized by the Receiver of the transfer to reduce risk of return by the Receiver
CCD
: For a Health Care EFT Transaction, this field must contain the name of the Health Plan, or where an organization is self-insured, the name of the organization's third-party administrator that is recognized by the Health Care Provider and to which the Health Care Provider submits its claims.
CIE
: This field contains the bill payment service provider's name.
WEB
: For a P2P transfer, this field contains the P2P service provider's name.
Default value: the root entity name of your platform, or "COLUMN NA" if no root entity exists. Maximum length: 16 characters.
payment_related_info
string
Optional
Provides an additional 80 characters to give details on the ACH transaction for outgoing transfers. This information will be surfaced to the RDFI.
receiver_name
string
Optional
The name of the receiver, usually the name on the bank account of the Receiver.
Default value: beneficiary name of the counterparty. Maximum length: 22
characters.
receiver_id
string
Optional
This field contains the accounting reference number by which the Receiver is known to the Originator. It is included for further identification and for descriptive purposes.
For example, it may be the number shown on an invoice, statement, billhead, notice, or other communication as the reference for the Receiver to update account receivable records.
Maximum length: 15
characters.
entry_class_code
string
Optional
Standard Entry Class code of the transfer. Valid values: CCD
, CTX
, CIE
, PPD
(default), TEL
, WEB
. More Details Here.
allow_overdraft
boolean
Optional
Allow the account to go negative for the transfer. The bank account needs to have is_overdraftable
enabled with an overdraft reserve account linked to it.
Request
curl 'https://api.column.com/transfers/ach' \
-XPOST \
-u :<YOUR API KEY> \
-d amount="100000" \
-d currency_code="USD" \
-d bank_account_id="<bank_account_id>" \
-d counterparty_id="<counterparty_id>" \
-d type="CREDIT"
Response
{
"id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
"iat": null,
"type": "CREDIT",
"amount": 100000,
"status": "SUBMITTED",
"is_on_us": false,
"same_day": false,
"company_id": "9959349647",
"created_at": "2022-11-09T23:32:47Z",
"settled_at": null,
"updated_at": "2022-11-09T23:32:48Z",
"description": "",
"is_incoming": false,
"receiver_id": "",
"returned_at": null,
"cancelled_at": null,
"company_name": "COLUMN NA",
"completed_at": null,
"effective_on": "2022-11-10T08:00:00Z",
"initiated_at": "2022-11-09T23:32:47Z",
"nsf_deadline": null,
"submitted_at": "2022-11-09T23:32:48Z",
"trace_number": "121145300000005",
"currency_code": "USD",
"receiver_name": "CHASE ACCOUNT",
"return_details": [],
"acknowledged_at": null,
"allow_overdraft": false,
"bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
"counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
"idempotency_key": "",
"entry_class_code": "PPD",
"manual_review_at": null,
"account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
"funds_availability": "default",
"odfi_routing_number": "121145307",
"return_contested_at": null,
"payment_related_info": "payment addenda for COR testing",
"return_dishonored_at": null,
"notification_of_changes": null,
"company_entry_description": "PAYMENT",
"reversal_pair_transfer_id": "",
"company_discretionary_data": ""
}
List all ACH transfers
GET
/transfers/ach
Retrieve all ACH transfers under your developer account. Filtered results can be retrieved with extra parameters in the query (bank_account_id
, counterparty_id
, etc.).
query parameters
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
bank_account_id
string
Optional
counterparty_id
string
Optional
status
string
Optional
Return results with this status.
Possible enum values:
- INITIATED
: the outgoing transfer has been initiated but not submitted yet.
-PENDING_SUBMISSION
: the outgoing transfer is to be submitted very soon.
- SUBMITTED
: the outgoing transfer has been submitted to the FRB.
- ACKNOWLEDGED
: the outgoing CCD/CTX transfer has been acknowledged by the RDFI.
- SETTLED
: the transfer has been settled.
- RETURNED
: the transfer has been returned. Please use the [ACH Return API](/docs/api/#ach-return/get) to check return details.
- COMPLETED
: the transfer has been completed, and no return (except R06 and \`R31\`) is acceptable.
- CANCELED
: the outgoing transfer has been cancelled by your request via our ACH Return API.
- SCHEDULED
: the incoming transfer has been scheduled to be settled on its Settlement Date
- PENDING_RETURN
: the incoming transfer will be returned shortly if no action is taken before the deadline
- RETURN_DISHONORED
: the return of the transfer has been dishonored by the ODFI. Please use the ACH Return API to check return details.
- RETURN_CONTESTED
: the dishonored return of the transfer has been contested by the RDFI. Please use the ACH Return API to check return details.
- MANUAL_REVIEW
: the transfer is under manual review.
is_incoming
boolean
Optional
Return transfers that is either incoming or outgoing.
type
string
Optional
Return transfers that is either credit or debit.
Request
curl 'https://api.column.com/transfers/ach' \
-u :<YOUR API KEY>
Response
{
"transfers": [
{
"id": "acht_28LtyrWQ7d5CZTXOjKEwVJrnlTa",
"created_at": "2022-04-26T21:19:11Z",
"updated_at": "2022-04-26T21:19:11Z",
"submitted_at": null,
"acknowledged_at": null,
"settled_at": null,
"completed_at": null,
"returned_at": null,
"cancelled_at": null,
"initiated_at": null,
"manual_review_at": null,
"return_dishonored_at": null,
"return_contested_at": null,
"status": "SCHEDULED",
"type": "DEBIT",
"idempotency_key": "",
"bank_account_id": "bacc_28Ltym2THRHbemnnJBVTH3m39fE",
"account_number_id": "acno_28LtynFqAR4JbLXYVdfwU53AVcO",
"counterparty_id": "",
"amount": 10000,
"currency_code": "USD",
"description": "received MOCK IAT transfer (trace #: 322271620000001)",
"effective_on": "2022-04-26T07:00:00Z",
"same_day": false,
"company_discretionary_data": "",
"company_entry_description": "MOCK IAT",
"company_id": "123456666",
"company_name": "STARK INDUSTRIES",
"receiver_name": "John P. Doe",
"receiver_id": "ACCT223457",
"entry_class_code": "IAT",
"allow_overdraft": false,
"is_incoming": true,
"nsf_deadline": null,
"trace_number": "322271620000001",
"odfi_routing_number": "322271627",
"return_details": [],
"is_on_us": false,
"iat": {
"foreign_payment_amount": "0",
"foreign_trace_number": "",
"receiving_company_or_individual_name": "John P. Doe",
"originator_name": "Stark Industries",
"originator_street_address": "THE WALBROOK BUILDING",
"originator_city_state_province": "LONDON*GB",
"originator_country_postal_code": "GB*EC4N 8AF",
"odfi_name": "CITIBANK EUROPE PLC",
"odfi_identification_number_qualifier": "01",
"odfi_identification": "0280008",
"odfi_branch_country_code": "IE",
"rdfi_name": "COLUMN N.A.",
"rdfi_identification_number_qualifier": "01",
"rdfi_identification": "121145307",
"rdfi_branch_country_code": "US",
"receiver_identification_number": "ACCT223457",
"receiver_street_address": "3744NBIRMINGHAMAVE",
"receiver_city_state_province": "x",
"receiver_country_postal_code": "US*74110",
"foreign_correspondent_bank_info": [],
"payment_related_info": ["1d46a25a-508e-4bc1-8a6e-5355b1dfd7aLuckyLand - 1d46a25a-508e-4bc1-8a6e"],
"transaction_type_code": "DEP"
},
"notification_of_changes": null,
"payment_related_info": "",
"reversal_pair_transfer_id": ""
},
{
"id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
"iat": null,
"type": "CREDIT",
"amount": 60000,
"status": "SUBMITTED",
"is_on_us": false,
"same_day": false,
"company_id": "9959349647",
"created_at": "2022-11-09T23:32:47Z",
"settled_at": null,
"updated_at": "2022-11-09T23:32:48Z",
"description": "",
"is_incoming": false,
"receiver_id": "",
"returned_at": null,
"cancelled_at": null,
"company_name": "COLUMN NA",
"completed_at": null,
"effective_on": "2022-11-10T08:00:00Z",
"initiated_at": "2022-11-09T23:32:47Z",
"nsf_deadline": null,
"submitted_at": "2022-11-09T23:32:48Z",
"trace_number": "121145300000005",
"currency_code": "USD",
"receiver_name": "CHASE ACCOUNT",
"return_details": [],
"acknowledged_at": null,
"allow_overdraft": false,
"bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
"counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
"idempotency_key": "",
"entry_class_code": "PPD",
"manual_review_at": null,
"account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
"funds_availability": "default",
"odfi_routing_number": "121145307",
"return_contested_at": null,
"payment_related_info": "payment addenda for COR testing",
"return_dishonored_at": null,
"notification_of_changes": null,
"company_entry_description": "PAYMENT",
"reversal_pair_transfer_id": "",
"company_discretionary_data": ""
}
],
"has_more": false
}
Get an ACH transfer
GET
/transfers/ach/{ach_transfer_id}
Retrieves a single transfer by its ID.
path parameters
ach_transfer_id
string
Required
Request
curl 'https://api.column.com/transfers/ach/<ach_transfer_id>' \
-u :<YOUR API KEY>
Response
{
"id": "acht_28LtyrWQ7d5CZTXOjKEwVJrnlTa",
"created_at": "2022-04-26T21:19:11Z",
"updated_at": "2022-04-26T21:19:11Z",
"submitted_at": null,
"acknowledged_at": null,
"settled_at": null,
"completed_at": null,
"returned_at": null,
"cancelled_at": null,
"initiated_at": null,
"manual_review_at": null,
"return_dishonored_at": null,
"return_contested_at": null,
"status": "SCHEDULED",
"type": "DEBIT",
"idempotency_key": "",
"bank_account_id": "bacc_28Ltym2THRHbemnnJBVTH3m39fE",
"account_number_id": "acno_28LtynFqAR4JbLXYVdfwU53AVcO",
"counterparty_id": "",
"amount": 10000,
"currency_code": "USD",
"description": "received MOCK IAT transfer (trace #: 322271620000001)",
"effective_on": "2022-04-26T07:00:00Z",
"same_day": false,
"company_discretionary_data": "",
"company_entry_description": "MOCK IAT",
"company_id": "123456666",
"company_name": "STARK INDUSTRIES",
"receiver_name": "John P. Doe",
"receiver_id": "ACCT223457",
"entry_class_code": "IAT",
"allow_overdraft": false,
"is_incoming": true,
"nsf_deadline": null,
"trace_number": "322271620000001",
"odfi_routing_number": "322271627",
"return_details": [],
"is_on_us": false,
"iat": {
"foreign_payment_amount": "0",
"foreign_trace_number": "",
"receiving_company_or_individual_name": "John P. Doe",
"originator_name": "Stark Industries",
"originator_street_address": "THE WALBROOK BUILDING",
"originator_city_state_province": "LONDON*GB",
"originator_country_postal_code": "GB*EC4N 8AF",
"odfi_name": "CITIBANK EUROPE PLC",
"odfi_identification_number_qualifier": "01",
"odfi_identification": "0280008",
"odfi_branch_country_code": "IE",
"rdfi_name": "COLUMN N.A.",
"rdfi_identification_number_qualifier": "01",
"rdfi_identification": "121145307",
"rdfi_branch_country_code": "US",
"receiver_identification_number": "ACCT223457",
"receiver_street_address": "3744NBIRMINGHAMAVE",
"receiver_city_state_province": "x",
"receiver_country_postal_code": "US*74110",
"foreign_correspondent_bank_info": [],
"payment_related_info": ["1d46a25a-508e-4bc1-8a6e-5355b1dfd7aLuckyLand - 1d46a25a-508e-4bc1-8a6e"],
"transaction_type_code": "DEP"
},
"notification_of_changes": null,
"payment_related_info": "",
"reversal_pair_transfer_id": ""
}
Cancel an ACH transfer
POST
/transfers/ach/{ach_transfer_id}/cancel
Cancels an ACH transfer before it is sent to the Federal Reserve.
This action can be performed only if a given transfer is INITIATED
. Once a transfer is PENDING SUBMISSION
it cannot be cancelled.
You can read more about ACH states here.
path parameters
ach_transfer_id
string
Required
Request
curl 'https://api.column.com/transfers/ach/<ach_transfer_id>/cancel' \
-XPOST \
-u :<YOUR API KEY>
Response
{
"id": "acht_28LtylaW2AzFlAkj1ZFyqW2m5tR",
"created_at": "2022-04-26T21:19:11Z",
"updated_at": "2022-04-26T21:19:11Z",
"submitted_at": null,
"acknowledged_at": null,
"settled_at": null,
"completed_at": null,
"returned_at": null,
"cancelled_at": "2022-04-26T21:19:11Z",
"initiated_at": "2022-04-26T21:19:11Z",
"manual_review_at": null,
"return_dishonored_at": null,
"return_contested_at": null,
"status": "CANCELED",
"type": "CREDIT",
"idempotency_key": "",
"bank_account_id": "bacc_28LtymCYuPbxZVKFqEb2LG25gtv",
"account_number_id": "acno_28LtyqzrhU5s1TGOjWqNrGNHpRp",
"counterparty_id": "cpty_28LtyqybwjOBwqcSYv1ogtffbYw",
"amount": 50000,
"currency_code": "USD",
"description": "test transfer",
"effective_on": "2022-04-27T07:00:00Z",
"same_day": false,
"company_discretionary_data": "",
"company_entry_description": "PAYMENT",
"company_id": "9121145307",
"company_name": "COLUMN NA",
"receiver_name": "CHASE ACCOUNT",
"receiver_id": "",
"entry_class_code": "PPD",
"allow_overdraft": false,
"is_incoming": false,
"nsf_deadline": null,
"trace_number": "",
"odfi_routing_number": "121145307",
"return_details": [],
"is_on_us": false,
"iat": null,
"payment_related_info": "",
"notification_of_changes": null,
"reversal_pair_transfer_id": ""
}
Reverse an ACH transfer
POST
/transfers/ach/{ach_transfer_id}/reverse
Reverse an erroneous outgoing ACH transfer. You can read more about ACH Reversals.
path parameters
ach_transfer_id
string
Required
body parameters
reason
string
Required
Reason for the reversal transfer. Must be one of the following:
duplicated_entry
: the original transfer is a duplicated transferincorrect_amount
: the original transfer has an incorrect amountincorrect_receiver_account
: the original transfer has an incorrect receiver accountdebit_earlier_than_intended
: the original transfer is an ACH debit requested earlier than intendedcredit_later_than_intended
: the original transfer is an ACH credit requested later than intended
description
string
Optional
Description of the reversal transfer visible only in your platform. Maximum length: 255
characters.
Request
curl 'https://api.column.com/transfers/ach/<ach_transfer_id>/reverse' \
-XPOST \
-u :<YOUR API KEY> \
-d reason="duplicated_entry" \
-d description="reverse duplicated transfer"
Response
{
"account_number_id": "acno_28LvftEu6Ee31HZzMCLrjf9skqU",
"acknowledged_at": null,
"allow_overdraft": false,
"amount": 12500,
"bank_account_id": "bacc_28LvfooToT4UhrNLxoDX8EuZLeR",
"cancelled_at": null,
"company_discretionary_data": "",
"company_entry_description": "REVERSAL",
"company_id": "9121145307",
"company_name": "COLUMN NA",
"completed_at": null,
"counterparty_id": "cpty_28LvfpAkfFAO1PiSSEY8rJAOtou",
"created_at": "2022-04-26T21:33:07Z",
"currency_code": "USD",
"description": "reverse duplicated transfer",
"effective_on": "2022-04-27T07:00:00Z",
"entry_class_code": "PPD",
"iat": null,
"id": "acht_28LvftqvcJ7nE5BDOAMLzTBI8xe",
"idempotency_key": "28LvfqsLQYMMtFFaV95gDYbcfMo",
"initiated_at": "2022-04-26T21:33:07Z",
"is_incoming": false,
"is_on_us": false,
"manual_review_at": null,
"nsf_deadline": null,
"odfi_routing_number": "121145307",
"payment_related_info": "duplicated_entry",
"receiver_id": "",
"receiver_name": "CHASE ACCOUNT",
"return_contested_at": null,
"return_details": [],
"return_dishonored_at": null,
"returned_at": null,
"reversal_pair_transfer_id": "acht_28Lvftv63RqD69H9gpbF4oQ2JEW",
"same_day": false,
"settled_at": null,
"status": "INITIATED",
"submitted_at": null,
"trace_number": "",
"type": "DEBIT",
"notification_of_changes": null,
"updated_at": "2022-04-26T21:33:07Z"
}
ACH return object
The ACH return object represents the current state of a single ACH return originated by or received by Column. The ACH return object will contain all relevant information about the specific return, which are described in the parameters below. Read about more about ACH transfers here.
object parameters
ach_transfer_id
string
The id of the ACH transfer that is being returned.
created_at
string
Date (format: YYYY-MM-DD
) on which the return was created.
details
array of objects
Includes an object containing detailed information about the return.
is_incoming
boolean
Indicates if the return was initiated by an RDFI (true
) or by Column (false
).
status
string
The current state of the ACH return. The possible states are INITIATED
, SENT
, DISHONORED
, CONTESTED
, COMPLETED
, and REJECTED
. See here for more information.
updated_at
string
Date (format: YYYY-MM-DD
) on which the ACH return was updated (typically a status update).
ACH Return object
{
"ach_transfer_id": "acht_25JG4Xr0azGVzfNDMoCUjcO1YgF",
"created_at": "2022-02-19T07:20:08Z",
"details": [
{
"addenda": "ACH Returned by FakeFed",
"created_at": "2022-02-19T07:20:08Z",
"description": "Insufficient Funds (trace #: 322271620000003)",
"return_code": "R01",
"status": "INITIATED",
"updated_at": "2022-02-19T07:20:08Z"
}
],
"is_incoming": true,
"status": "INITIATED",
"updated_at": "2022-02-19T07:20:08Z"
}
Create an ACH return
POST
/transfers/ach/{ach_transfer_id}/return
Submit a request to return an incoming ACH transfer that is sent by other ODFIs (i.e. Column is the RDFI).
At most only one return request can be submitted for each incoming ACH transfer.
You can read more about ACH returns here.
path parameters
ach_transfer_id
string
Required
ID of the ACH transfer you intend to return.
body parameters
return_code
string
Required
Return reason codes of the return
You can read more about ACH return reason codes here.
description
string
Optional
Description of the reason for the return. Maximum length: 255 characters. This is for internal use only and will not be transmitted to the ODFI.
addenda
string
Optional
If provided, this string will be sent as the addenda information field of the ACH addenda entry to the ODFI. Maximum length: 44 characters.
Request
curl 'https://api.column.com/transfers/ach/<ach_transfer_id>/return' \
-XPOST \
-u :<YOUR API KEY> \
-d return_code="R10"
Response
{
"ach_transfer_id": "string",
"created_at": "2021-11-29T20:08:58.662Z",
"updated_at": "2021-11-29T20:08:58.662Z",
"status": "INVALID",
"is_incoming": true,
"details": [
{
"created_at": "2021-11-29T20:08:58.662Z",
"updated_at": "2021-11-29T20:08:58.662Z",
"status": "INVALID",
"return_code": "string",
"description": "string",
"addenda": "string"
}
]
}
List all ACH returns
GET
/transfers/ach/returns
Retrieve the return processing details of all ACH transfers under your developer account, including both returns filed by your platform and returns sent by other RDFIs.
query parameters
limit
int32
Optional
A limit of the number of objects to be returned, between 1
and 100
. The default is 10
.
starting_after
string
Optional
A cursor for use in pagination. starting_after
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with foo_ZXhhbXBsZQo
, your subsequent call can include starting_after=foo_ZXhhbXBsZQo
in order to fetch the next page of the list.
ending_before
string
Optional
A cursor for use in pagination. ending_before
is an ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with foo_ZXhhbXBsZQo=
, your subsequent call can include ending_before=foo_ZXhhbXBsZQo=
in order to fetch the previous page of the list.
created.gt
date-time
Optional
Return results where the specified time field is greater than this value.
created.gte
date-time
Optional
Return results where the specified time field is greater than or equal to this value.
created.lt
date-time
Optional
Return results where the specified time field is less than this value.
created.lte
date-time
Optional
Return results where the specified time field is less than or equal to this value.
Request
curl 'https://api.column.com/transfers/ach/returns' \
-u :<YOUR API KEY>
Response
{
"ach_returns": [
{
"ach_transfer_id": "string",
"created_at": "2021-11-29T20:00:20.304Z",
"updated_at": "2021-11-29T20:00:20.304Z",
"status": "INVALID",
"is_incoming": true,
"details": [
{
"created_at": "2021-11-29T20:00:20.304Z",
"updated_at": "2021-11-29T20:00:20.304Z",
"status": "INVALID",
"return_code": "string",
"description": "string",
"addenda": "string"
}
]
}
],
"has_more": true
}
Get an ACH return
GET
/transfers/ach/{ach_transfer_id}/return
Retrieve the return processing details of an ACH transfer. The return may be either filed by your platform, or sent to you by other RDFIs.
path parameters
ach_transfer_id
string
Required
ID of the ACH transfer you're looking up.
Request
curl 'https://api.column.com/transfers/ach/<ach_transfer_id>/return' \
-u :<YOUR API KEY>
Response
{
"ach_transfer_id": "string",
"created_at": "2021-11-29T20:08:18.295Z",
"updated_at": "2021-11-29T20:08:18.295Z",
"status": "INVALID",
"is_incoming": true,
"details": [
{
"created_at": "2021-11-29T20:08:18.295Z",
"updated_at": "2021-11-29T20:08:18.295Z",
"status": "INVALID",
"return_code": "string",
"description": "string",
"addenda": "string"
}
]
}
Book transfer object
The book transfer object is the current state of a single book transfer initiated in Column. A book transfer is the movement of funds between two bank accounts under your platform, and once initiated, happen instantaneously 24/7. Read about more about book transfers here.
object parameters
allow_overdraft
boolean
Allows the account to go negative for an outgoing transfer. The bank account needs to haveis_overdraftable
enabled with an overdraft reserve account linked to it
amount
string
Amount (in cents) of the funds that will be transferred between sender and receiver accounts.
e.g. $1.75 would be represented by 175
created_at
string