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

List of documents which are uploaded with the Submit Document API

Unique identifier for the object

Whether this entity is going to be a root entity of the platform

Address line 1

Address line 2

City

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Postal code

ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

First name of the legal person

Last name of the legal person

Middle name of the legal person

Social Security Number

Date of birth (YYYY-MM-DD)

Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

List of reasons the entity is in Manual_Review

Type of entity. Can either be PERSON or BUSINESS

Current status of the entity verification. Can be UNVERIFIED, PENDING,MANUAL_REVIEW, VERIFIED, or DENIED

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

Required

First name of the legal person

Required

Last name of the legal person

Optional

Middle name of the legal person

Required

Social Security Number

Required

Date of birth (YYYY-MM-DD)

Optional

Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

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

Required

ID of the person entity you're updating

body parameters

Required

First name of the legal person

Required

Last name of the legal person

Optional

Middle name of the legal person

Required

Social Security Number

Required

Date of birth (YYYY-MM-DD)

Optional

Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

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

Required

Employer Identification Number (Tax ID)

Required

Legal Business Name

Optional

Website of the business. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

Required

ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

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.

Required

First name of the legal person

Required

Last name of the legal person

Optional

Middle name of the legal person

Required

Social Security Number

Required

Date of birth (YYYY-MM-DD)

Optional

Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

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

Required

ID of the business entity you're updating

body parameters

Required

Legal Business Name

Optional

Website of the business. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

Required

ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

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.

Required

First name of the legal person

Required

Last name of the legal person

Optional

Middle name of the legal person

Required

Social Security Number

Required

Date of birth (YYYY-MM-DD)

Optional

Email of the individual. Optional, but highly encouraged as it will increase likelihood of an automated verifcation.

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

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

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

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

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

Optional

Return results where the specified time field is less than or equal to this value.

Optional

Return results with this entity type.

Optional

Return results with this verification status.

Optional

Whether this entity is going to be a root entity of the platform

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

Required

ID of the entity for which a supporting document is being submitted.

body parameters

Required

ID of the entity for which a supporting document is being submitted.

Accepted formats for person entities: PNG, JPEG, GIF, and TIFF.

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.

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

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.

The timestamp the bank account was created.

The externally facing account number tied to this bank account.

The Column accno_id tied to this bank account.

The externally facing routing number tied to this bank account.

A name for the bank account (minimum of three characters)

The balance of money which is currently in a HOLD state specified in the Create Book Transfer API.

Whether the account can be overdrafted, must include a overdraft_reserve_account_id

Unique identifier for the object

Only applicable for root accounts. The locked balance is posted on the account but cannot be withdrawn.

List of entity_id's which are tied to this bank account

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.

Bank Account type. Can be CHECKING, OVERDRAFT_RESERVE, or PROGRAM_RESERVE

The overdraft reserve account that this account linked to. If is_overdraftable: true then this field is required.

Bank Account object

{
  "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

Required

A name for the bank account (minimum of three characters)

Required

The entity to create the account under

Optional

Whether the account can be overdrafted, must include a overdraft_reserve_account_id

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

Optional

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

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

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

Required

body parameters

Optional

Optional

Whether the account can be overdrafted, must include a overdraft_reserve_account_id

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

Required

Request

curl 'https://api.column.com/bank-accounts/<bank_account_id>' \
  -XDELETE \
  -u :<YOUR API KEY>

Response

{}

Bank Account Summary object

object parameters

Total credit amount in cents applied to available_balance. Zero or positive.

Total debit amount in cents applied to available_balance. Zero or negative.

Close available_balance in cents at the end of effective_on in time_zone.

The currency of the balances.

Effective date of the summary.

Total credit amount in cents applied to holding_balance. Zero or positive.

Total debit amount in cents applied to holding_balance. Zero or negative.

Close holding_balance in cents at the end of effective_on in time_zone.

Total credit amount in cents applied to locked_balance. Zero or positive.

Total debit amount in cents applied to locked_balance. Zero or negative.

Close locked_balance in cents at the end of effective_on in time_zone.

Total credit amount in cents applied to pending_balance. Zero or positive.

Total debit amount in cents applied to pending_balance. Zero or negative.

Close pending_balance in cents at the end of effective_on in time_zone.

Time zone of effective_on to decide day boundaries. You can set your platform reporting time zone in Platform Settings on Dashboard.

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

Required

The ID of the bank account you are looking up

query parameters

Required

Starting date of the history. Format: YYYY-MM-DD.

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

The externally facing account number tied to this bank account.

The Column bacc_id tied to this bank account.

The timestamp the account number was created.

A name for the account number (minimum of three characters)

The unique id of the object

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

Required

The bank account that you want the new account number to point to

body parameters

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

Required

The bank account that you want the new account number to point to

query parameters

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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

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.

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

object parameters

The balance of the loan which has been charged off.

The balance of the loan which is in a holding state.

The balance of the loan which is oustanding.

The balance of the loan which has been paid.

The timestamp the loan was charged off.

The timestamp the loan was created.

The currency of the loan. Currently only USD is supported.

The timestamp the loan was marked as delinquent.

The description of the loan in the Column dashboard.

The timestamp the loan was marked as disputed.

The id of the loan object.

Indicates whether or not the loan is revolving. If true the loan can have multiple disbursements.

The maturity date of the loan.

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.

The timestamp the loan is marked as paid off.

The Column entity_id which the loan is related to.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

POST

/loans

Creates a new loan under an entity.

body parameters

Required

The three-letter currency code defined in ISO 4217. e.g. USD

Required

The description of the loan in the Column dashboard.

Required

The entity to create the loan under.

Required

Indicates whether or not the loan is revolving. If true the loan can have multiple disbursements.

Required

The maturity date of the loan

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans

List all loans under the platform. Filtered results can be retrieved with extra parameters in the query

query parameters

Optional

Optional

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans/{loan_id}

Retrieve a single loan by its ID.

path parameters

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

PATCH

/loans/{loan_id}

Updates a loan by its ID.

path parameters

Required

The ID of the loan you are looking up

body parameters

Optional

The description of the loan in the Column dashboard.

Optional

Indicates whether or not the loan is revolving. If true the loan can have multiple disbursements.

Optional

The maturity date of the loan

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.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

POST

/loans/disbursements

Creates a disbursement for a loan.

body parameters

Required

Amount (in cents) of the funds that will be disbursed.

e.g. $1.75 would be represented by 175.

Required

The bank account to which funds will be disbursed.

Required

The currency of the loan. Currently only USD is supported.

Required

The description of the loan in the Column dashboard.

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.

Required

The ID of the loan to from which the disbursement is being made.

Optional

Transfer monitoring details

Optional

Name of the sender

Optional

Name of the merchant for this transaction

Optional

Category code for the merchant for this transaction

Optional

Authorization method for this transaction

Optional

Website for this transaction

Optional

Transfer type in non-column systems

Optional

Line item on the customer statement for the transfer

Required

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

POST

/loans/payments

Creates a payment for a loan.

body parameters

Required

Amount (in cents) of the funds that will be disbursed.

e.g. $1.75 would be represented by 175.

Required

The bank account from which the payment is coming from. The balance of the bank account will decrease by the payment amount.

Required

The currency of the loan. Currently only USD is supported.

Required

The description of the loan in the Column dashboard.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

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

Required

The ID of the disbursement you want to update.

body parameters

Required

Amount (in cents) of the funds that will be disbursed.

e.g. $1.75 would be represented by 175.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

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

Required

The ID of the disbursement to clear.

body parameters

Optional

Updated amount (in cents) of the funds that will be disbursed.

e.g. $1.75 would be represented by 175.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

POST

/loans/disbursements/{disbursement_id}/cancel

Cancels a disbursement by its ID. Only a disbursement in a "hold" state can be cancelled.

path parameters

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans/disbursments/{disbursement_id}

Get a disbursement by its ID.

path parameters

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans/payments/{payment_id}

Get a payment by its ID.

path parameters

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans/payments

List all disbursements under the platform. Filtered results can be retrieved with extra parameters in the query

query parameters

Optional

Optional

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

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

This is in beta

Our lending APIs are currently in beta and are only publicly available in our sandbox environment. Please contact us if you would like them enabled in production.

GET

/loans/disbursements

List all disbursements under the platform. Filtered results can be retrieved with extra parameters in the query

query parameters

Optional

Optional

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

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

The account number for the bank account.

The timestamp the object was created.

The unique id of the object

Indicates whether this counterparty account is actually a Column account.

The routing number of the bank.

The type of the routing number. Can be aba or swift.

The timestamp the object was last updated.

The wire object associated with the counterparty.

The owner name of the bank account. This field is required if you want to send wire transfers to the counterparty.

The address of the account owner. This field is required if you want to send wire transfers to the counterparty.

Address line 1

Address line 2

City

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Postal code

ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

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_292GOgPRSzW8Y8XIJSzzO94gJGM",
  "account_number": "1234567890",
  "routing_number": "121144269",
  "wire": {
    "beneficiary_name": "John Doe",
    "beneficiary_address": {
      "line_1": "96 Lairg Road",
      "line_2": "",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94101",
      "country_code": "US"
    }
  },
  "created_at": "2022-05-11T21:15:35Z",
  "updated_at": "2022-05-11T21:15:35Z",
  "is_column_account": false,
  "wire_drawdown_allowed": false,
  "routing_number_type": "aba"
}

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

Required

The routing number of the bank.

Optional

The type of the routing number. Can be aba or swift. Default value is aba if this field is not set.

Required

The account number of the bank account.

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.

Optional

The wire object associated with the counterparty.

Optional

The owner name of the bank account. This field is required if you want to send wire transfers to the counterparty.

Optional

The address of the account owner. This field is required if you want to send wire transfers to the counterparty.

Required

Address line 1

Optional

Address line 2

Required

City

Required

State name. For US addresses, only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Required

Postal code

Required

ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Request

curl 'https://api.column.com/counterparties' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d routing_number="121144269" \
  -d account_number="1234567890"

Response

{
  "id": "string",
  "account_number": "string",
  "routing_number": "string",
  "wire": {
    "beneficiary_name": "string",
    "beneficiary_address": {
      "line_1": "101 Market St",
      "line_2": "Suite 1913",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94105",
      "country_code": "USA"
    }
  },
  "created_at": "2021-11-29T17:36:10.082Z",
  "updated_at": "2021-11-29T17:36:10.082Z",
  "is_column_account": true,
  "wire_drawdown_allowed": true
}

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

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

Optional

Return results where the specified time field is less than or equal to this value.

Optional

Return counterparties created with given account number.

Optional

Return counterparties created with given routing number.

Request

curl 'https://api.column.com/counterparties' \
  -u :<YOUR API KEY>

Response

{
  "counterparties": [
    {
      "id": "string",
      "account_number": "string",
      "routing_number": "string",
      "wire": {
        "beneficiary_name": "string",
        "beneficiary_address": {
          "line_1": "101 Market St",
          "line_2": "Suite 1913",
          "city": "San Francisco",
          "state": "CA",
          "postal_code": "94105",
          "country_code": "US"
        }
      },
      "created_at": "2022-02-25T21:22:24.435Z",
      "updated_at": "2022-02-25T21:22:24.435Z",
      "is_column_account": true,
      "wire_drawdown_allowed": true
    }
  ],
  "has_more": true
}

Get a counterparty by ID

GET

/counterparties/{counterparty_id}

Retrieve a single counterparty by its ID.

path parameters

Required

ID of the counterparty you're requesting

Request

curl 'https://api.column.com/counterparties/<counterparty_id>' \
  -u :<YOUR API KEY>

Response

{
  "id": "string",
  "account_number": "string",
  "routing_number": "string",
  "wire": {
    "beneficiary_name": "string",
    "beneficiary_address": {
      "line_1": "101 Market St",
      "line_2": "Suite 1913",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94105",
      "country_code": "USA"
    }
  },
  "created_at": "2021-11-29T17:56:54.238Z",
  "updated_at": "2021-11-29T17:56:54.238Z",
  "is_column_account": true,
  "wire_drawdown_allowed": true
}

Delete a counterparty

DELETE

/counterparties/{counterparty_id}

Delete a counterparty

path parameters

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

Indicate if an institution accepts ACH transfers or not.

Institution's address city name.

The timestamp the object was created.

Institution's official full name.

Institution's phone number. Only available if ach_eligible = true.

Institution's routing/ABA number. Nine digits including a check digit.

Institution's short name.

Institution's address state code (e.g., CA)

Institution's street address. Only available if ach_eligible = true.

The timestamp the object was last updated.

Indicate if an institution accepts wire transfers or not.

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,
    "zip_code": "95926"
}

Get a financial institution

GET

/institutions/{routing_number}

Retrieve a single financial institution by its routing/ABA number.

path parameters

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

ID of the account number that is sending the transfer.

The timestamp at which an acknowledgement is received for a CCD or CTX ACH transfer.

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 (in cents) of the funds that will be transferred between originator and counterparty accounts.

e.g. $1.75 would be represented by 175.

ID of the bank account that is sending the transfer.

The timestamp at which the transfer is cancelled

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.

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.

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.

The name of the originator company that initiated the ACH transfer.

The timestamp at which the 60 day return window has passed for this ACH transfer, and it is officially completed.

ID of the counterparty that will receive the transfer.

The timestamp at which the transfer request is created.

The three-letter currency code defined in ISO 4217. e.g. USD.

Description of the transfer visible only in your platform.

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).

Standard Entry Class code of the transfer. More Details Here.

This field provides additional IAT (International ACH Transfer) addenda information. More information here.

The unique id for this object

The idempotency key specified in the ACH transfer.

The timestamp at which Column received your ACH request.

Indicates whether the ACH transfer was incoming (true or outgoing false

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.

The timestamp at which the the ACH transfer went into the manual review state.

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.

The externally facing routing number for the ODFI that initiated the ACH Transfer.

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.

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.

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.

The timestamp at which the dishonored return for this transfer was contested by the RDFI.

A detailed reason for why the ACH transfer was returned.

The timestamp at which the return for this transfer was dishonored by the ODFI.

The timestamp at which the ACH transfer is returned by the RDFI.

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.

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.

The timestamp at which the the ACH was settled.

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.

The timestamp at which the the ACH transfer was submitted to the Fed.

The unique number assigned to every ACH entry by an ODFI which identifies that entry within a specific ACH file.

ACH transfer type: CREDIT or DEBIT. Learn more.

The timestamp at which the ACH transfer was lastly updated.

ACH Transfer object

{
  "account_number_id": "acno_23btfANGrPxZJeyl0aSFgv8BgWd",
  "acknowledged_at": null,
  "allow_overdraft": false,
  "amount": "8131300",
  "bank_account_id": "bacc_23btf5yxLtQjo3dhhT8vd2BWgFm",
  "cancelled_at": null,
  "company_discretionary_data": "",
  "company_entry_description": "MOCK PPD",
  "company_id": "123456789",
  "company_name": "ABC HR INC",
  "completed_at": null,
  "counterparty_id": "",
  "created_at": "2022-02-23T00:30:08Z",
  "currency_code": "USD",
  "description": "received MOCK PPD transfer (trace #: 322271620000001)",
  "effective_on": "2022-02-22T08:00:00Z",
  "entry_class_code": "PPD",
  "iat": null,
  "id": "acht_25UKQIyk17EdZn6cynkdCcfq4u7",
  "idempotency_key": "",
  "initiated_at": null,
  "is_incoming": true,
  "is_on_us": false,
  "manual_review_at": null,
  "nsf_deadline": null,
  "odfi_routing_number": "322271627",
  "payment_related_info": "",
  "receiver_id": "ACCT223456",
  "receiver_name": "John P. Doe",
  "return_contested_at": null,
  "return_details": [],
  "return_dishonored_at": null,
  "returned_at": null,
  "reversal_pair_transfer_id": "",
  "same_day": false,
  "settled_at": "2022-02-23T00:30:08Z",
  "status": "SETTLED",
  "submitted_at": null,
  "trace_number": "322271620000001",
  "type": "DEBIT",
  "updated_at": "2022-02-23T00:30:08Z"
}

IAT transfer sub-object

object parameters

Provides additional details around foreign corresponding banks used in the IAT transfer.

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.

Contains the trace number assigned to the transfer in the originating national payments system.

The two digit alphabetic country code which identifies the country in which the branch of the bank that originated the transfer is located.

The routing number of the DFI originating the transfer.

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)

The name of the ODFI

Contains the city, and if applicable the state or province of the originator.

Contains the postal code for the originator street address.

Contains the name of the originator of the transaction.

Contains the physical street address of the originator.

The two digit alphabetic country code which identifies the country in which the branch of the bank that received the transfer is located.

This field is used by the originator to insert its own number for tracing purposes.

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)

The name of the RDFI.

Contains the city, and if applicable the state or province of the receiver.

Contains the postal code for the receiver street address.

Contains the bank identification number of the DFI at which the receiver maintains their account.

Contains the physical street address of the receiver.

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

Optional

Description of the transfer visible only in your platform. Maximum length: 255 characters.

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.

Required

The three-letter currency code defined in ISO 4217. e.g. USD

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.

Required

ID of the counterparty that will receive the transfer

Required

ACH transfer type: CREDIT or DEBIT. Learn More.

Optional

Date (format: YYYY-MM-DD) on which the transfer will be effective

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.

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.

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.

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.

Optional

Provides an additional 80 characters to give details on the ACH transaction for outgoing transfers. This information will be surfaced to the RDFI.

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.

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.

Optional

Standard Entry Class code of the transfer. Valid values: CCD, CTX, CIE, PPD (default), TEL, WEB. More Details Here.

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": "string",
  "created_at": "2021-11-29T20:09:59.787Z",
  "updated_at": "2021-11-29T20:09:59.787Z",
  "submitted_at": "2021-11-29T20:09:59.787Z",
  "acknowledged_at": "2021-11-29T20:09:59.787Z",
  "settled_at": "2021-11-29T20:09:59.787Z",
  "completed_at": "2021-11-29T20:09:59.787Z",
  "returned_at": "2021-11-29T20:09:59.787Z",
  "cancelled_at": "2021-11-29T20:09:59.787Z",
  "status": "INVALID_STATUS",
  "type": "INVALID_TYPE",
  "idempotency_key": "string",
  "bank_account_id": "string",
  "account_number_id": "string",
  "counterparty_id": "string",
  "amount": "string",
  "currency_code": "string",
  "description": "string",
  "effective_on": "2021-11-29T20:09:59.787Z",
  "reversal_pair_transfer_id": "",
  "same_day": true,
  "company_discretionary_data": "string",
  "company_entry_description": "string",
  "company_id": "string",
  "company_name": "string",
  "receiver_name": "string",
  "receiver_id": "string",
  "entry_class_code": "string",
  "allow_overdraft": true,
  "is_incoming": true,
  "nsf_deadline": "2021-11-29T20:09:59.787Z"
}

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

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

Optional

Return results where the specified time field is less than or equal to this value.

Optional

Return results associated with this bank account.

Optional

Return results associated with this counterparty.

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.

Optional

Return transfers that is either incoming or outgoing.

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"
      },
      "payment_related_info": "",
      "reversal_pair_transfer_id": ""
    },
    {
      "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": null,
      "initiated_at": "2022-04-26T21:19:11Z",
      "manual_review_at": null,
      "return_dishonored_at": null,
      "return_contested_at": null,
      "status": "INITIATED",
      "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": "",
      "reversal_pair_transfer_id": ""
    }
  ],
  "has_more": false
}

Get an ACH transfer

GET

/transfers/ach/{ach_transfer_id}

Retrieves a single transfer by its ID.

path parameters

Required

ID of the ACH transfer you're looking up.

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"
  },
  "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

Required

ID of the ACH transfer you intend to cancel.

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": "",
  "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

Required

ID of the original ACH transfer you intend to reverse.

body parameters

Required

Reason for the reversal transfer. Must be one of the following:

  • duplicated_entry: the original transfer is a duplicated transfer
  • incorrect_amount: the original transfer has an incorrect amount
  • incorrect_receiver_account: the original transfer has an incorrect receiver account
  • debit_earlier_than_intended: the original transfer is an ACH debit requested earlier than intended
  • credit_later_than_intended: the original transfer is an ACH credit requested later than intended

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",
  "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

The id of the ACH transfer that is being returned.

Date (format: YYYY-MM-DD) on which the return was created.

Includes an object containing detailed information about the return.

Indicates if the return was initiated by an RDFI (true) or by Column (false).

The current state of the ACH return. The possible states are INITIATED, SENT, DISHONORED, CONTESTED, COMPLETED, and REJECTED. See here for more information.

Date (format: YYYY-MM-DD) on which the 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

Required

ID of the ACH transfer you intend to return.

body parameters

Required

Return reason codes of the return

You can read more about ACH return reason codes here.

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.

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

Optional

A limit of the number of objects to be returned, between 1 and 100. The default is 10.

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.

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.

Optional

Return results where the specified time field is greater than this value.

Optional

Return results where the specified time field is greater than or equal to this value.

Optional

Return results where the specified time field is less than this value.

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

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

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 (in cents) of the funds that will be transferred between sender and receiver accounts.

e.g. $1.75 would be represented by 175

Date (format: YYYY-MM-DD) on which the transfer request is created

The three-letter currency code defined in ISO 4217. e.g. USD

A description of the transfer visible in people's accounts.

The unique id of the object

The idempotency key specified in the book transfer.

ID of the account number that will receive the transfer. If this is specified, the

ID of the bank account that will receive the transfer.

ID of the account number that is sending the transfer.

ID of the bank account that is sending the transfer.

The current status of the book transfer. Possible values: REJECTED, COMPLETED, HOLD, and CANCELED.

Date (format: YYYY-MM-DD) on which the the book transfer was updated (typically a status update).

Book Transfer object

{
  "allow_overdraft": false,
  "amount": "50000",
  "created_at": "2022-03-02T22:44:35Z",
  "currency_code": "USD",
  "description": "For documents",
  "id": "book_25qiZnUKr2AP8Rb5Vs3PGzpcttC",
  "idempotency_key": "",
  "receiver_account_number_id": "acno_25FyF49P2SE4PJJOmfx6kYCzkeI",
  "receiver_bank_account_id": "bacc_25FyEyuKX3KlRAciUs3BzXag1RI",
  "sender_account_number_id": "acno_25nVQkqfCU6Okpn66QWi1xX9riD",
  "sender_bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "status": "COMPLETED",
  "updated_at": "2022-03-02T22:44:35Z"
}

Create a book transfer

POST

/transfers/book

A book transfer, is a transaction between between two Column accounts that you own.

They can happen instantly and can be sent 24 hours a day, 7 days a week. Both accounts need to under your platform, but don't need to be under the same entity.

Alternatively, you can send a book transfer in two steps, using the "hold" parameter and "clear" method. Book transfers in a "hold" state can be updated and canceled.

There is no reversal functionality for book transfers. Simply swap the originator_account_number_id and receiver_account_number_id and repeat the request.

body parameters

Optional

A description of the transfer visible in people's accounts.

Required

Amount (in cents) of the funds that will be transferred between sender and receiver accounts.

e.g. $1.75 would be represented by 175

Required

The three-letter currency code defined in ISO 4217. e.g. USD

Optional

ID of the bank account that is sending the transfer. If no sender_account_number_id is specified, the default account number on sender_bank_account_id is used.

sender_bank_account_id or sender_account_number_id is required

Optional

ID of the account number that is sending the transfer.

If this is specified, the sender_bank_account_id does not need to be included.

sender_bank_account_id or sender_account_number_id is required

Optional

ID of the bank account that will receive the transfer. If no receiver_account_number_id is specified, the default account number on receiver_bank_account_id is used.

receiver_bank_account_id or receiver_account_number_id is required

Optional

ID of the account number that will receive the transfer. If this is specified, the receiver_bank_account_id does not need to be included.

receiver_bank_account_id or receiver_account_number_id is required

Optional

DEPRECATED: Learn more

Optional

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

Optional

Creates a book transfer in a hold state. The transfer will not be completed until the clear API is called. Transfers in a hold state may be updated or canceled.

Optional

Transfer monitoring details

Optional

Name of the sender

Optional

Name of the merchant for this transaction

Optional

Category code for the merchant for this transaction

Optional

Authorization method for this transaction

Optional

Website for this transaction

Optional

Transfer type in non-column systems

Optional

Line item on the customer statement for the transfer

Required

Required

Address line 1

Optional

Address line 2

Required

City