Person Entity object

An entity represents a person or organization possessing separate and distinct legal rights. 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

Contains all person details of the legal person entity. Only returned when entity type is PERSON.

First name of the legal person. Must adhere to Fedwire character validation.

Last name of the legal person. Must adhere to Fedwire character validation.

Middle name of the legal person. Must adhere to Fedwire character validation.

Social Security Number. SSN is required for U.S. citizens. ITIN may be shared in place of SSN.

Passport Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Passport number

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Driver's License Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Driver's license number

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

National ID Details. Passport, Driver's License or National ID is required for non U.S. citizens.

National ID number

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Date of birth (YYYY-MM-DD)

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

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

List of documents which are uploaded with the Submit Document API

Unique identifier for the object

Indicates if the entity is the root entity of the platform.

List of reasons the entity is in Manual_Review

Type of entity. PERSON for a person entity.

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.

Person Entity object

{
  "documents": [],
  "id": "enti_2Q1ctiJm1NypVqCt8UBC8e4xTfH",
  "is_root": false,
  "person_details": {
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "101 Market St",
      "line_2": "Suite 1913",
      "postal_code": "94105",
      "state": "CA"
    },
    "date_of_birth": "1985-08-04",
    "email": "oliver@column.com",
    "first_name": "Oliver",
    "last_name": "Hockey",
    "middle_name": "Smith",
    "passport": {},
    "ssn": "565438976", 
    "drivers_license":null,
    "national_id": null
  },
  "review_reasons": [],
  "type": "PERSON",
  "verification_status": "VERIFIED"
}

Business Entity object

A business entity represents a legal business in the Column data model.

object parameters

Contains all business details of the legal business entity. Only returned when entity type is BUSINESS.

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

A list of all the persons who have ultimate control over funds in the business, whether through ownership or other means.

This is anyone who owns owns 25 percent or more of the business and those who control the funds. If no one owns more than 25% of the business, just the individual who has ultimate control of the funds must be included.

First name of the legal person

Last name of the legal person

Middle name of the legal person

Social Security Number is required for US beneficial owners. Passport, driver's license, or national ID is required for foreign beneficial owners.

Passport Number. SSN, passport, driver's license, or national ID is required.

Passport number

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Driver's license. SSN, passport, driver's license, or national ID is required.

Driver's license number

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

National ID. SSN, passport, driver's license, or national ID is required.

National ID number

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Date of birth (YYYY-MM-DD)

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

Boolean value which specifies if this person is a designated control person.

Boolean value which specifies if this person is a designated beneficial owner.

Percentage ownership, specified as a integer, of the beneficial owner

Job title of the beneficial owner or control person.

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

Legal Business Name

Employer Identification Number (Tax ID). This may be SSN for a sole proprietorship.

Registration ID. EIN or Registration ID is required.

Business registration ID

Country code where the business registration ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Industry in which the business entity operates.

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

Type of business. Permitted values are limited-partnership, trust, sole-proprietorship, corporation,llc, general-partnership, professional-association,government,non-profit, other.

State in which the business is incorporated. Only postal abbreviations (e.g. AL, CA, DE, ...) are allowed. Only required for a root entity.

Date on which the business entity was incorporated. Only required for a root entity.

Indicates possible uses of the accounts an entity may use at Column. Only required for a root entity.

Description of the business entity. Only required for a root entity.

Expected payment volumes. Only required for a root entity.

Countries in which the business currently operates or expects to operate. Only ISO 3166-1 Alpha-2 Country Codes (e.g., US, FR, UK, DE, ...) are allowed. Only required for a root entity.

Indicates if the entity is the root entity of the platform.

List of documents which are uploaded with the Submit Document API

Unique identifier for the object

List of reasons the entity is in Manual_Review

Type of entity. BUSINESS for a business entity.

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

{
  "business_details": {
    "account_usage": "",
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "1110 Gorgas Avenue",
      "line_2": "Suite 1000",
      "postal_code": "94109",
      "state": "CA"
    },
    "beneficial_owners": [
      {
        "address": {
          "city": "San Francisco",
          "country_code": "US",
          "line_1": "999 Bay Street",
          "line_2": "",
          "postal_code": "94109",
          "state": "CA"
        },
        "date_of_birth": "1989-01-01",
        "drivers_license": null,
        "email": "mbakery@bakery.com",
        "first_name": "Sam",
        "last_name": "Smith",
        "middle_name": "Test",
        "national_id": null,
        "passport": {},
        "ssn": "999999999"
      }
    ],
    "business_name": "Maries Bakery",
    "countries_of_operation": null,
    "date_of_incorporation": "2022-01-01",
    "description": "Bakery",
    "ein": "111111111",
    "industry": "",
    "legal_type": "",
    "payment_volumes": null,
    "registration_id": {
      "country_code": "US",
      "number": "111111111"
    },
    "state_of_incorporation": "CA",
    "website": "acme.com"
  },
  "documents": [],
  "id": "enti_2dk2oXqPcB5Xb5wFpnrg50F7BeD",
  "is_root": false,
  "review_reasons": [],
  "type": "BUSINESS",
  "verification_status": "VERIFIED"
}

Create a legal person entity

POST

/entities/person

Creates a legal person entity.

body parameters

Required

First name of the legal person. Must adhere to Fedwire character validation.

Required

Last name of the legal person. Must adhere to Fedwire character validation.

Optional

Middle name of the legal person. Must adhere to Fedwire character validation.

Required

Social Security Number. SSN is required for U.S. citizens. ITIN may be shared in place of SSN.

Optional

Passport Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

Passport number

Required

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Optional

Driver's License Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

Driver's license number

Required

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

Optional

National ID Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

National ID number

Required

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Required

Date of birth (YYYY-MM-DD)

Optional

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

Required

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

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="oliver@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

{
  "documents": [],
  "id": "enti_2Q1ctiJm1NypVqCt8UBC8e4xTfH",
  "is_root": false,
  "person_details": {
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "101 Market St",
      "line_2": "Suite 1913",
      "postal_code": "94105",
      "state": "CA"
    },
    "date_of_birth": "1985-08-04",
    "email": "oliver@column.com",
    "first_name": "Oliver",
    "last_name": "Hockey",
    "middle_name": "Smith",
    "passport": {},
    "ssn": "565438976", 
    "drivers_license": null,
    "national_id": null
  },
  "review_reasons": [],
  "type": "PERSON",
  "verification_status": "VERIFIED"
}

Update a legal person entity

PATCH

/entities/person/<entity_id>

Update the information stored for a legal person. 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. Must adhere to Fedwire character validation.

Required

Last name of the legal person. Must adhere to Fedwire character validation.

Optional

Middle name of the legal person. Must adhere to Fedwire character validation.

Required

Social Security Number. SSN is required for U.S. citizens. ITIN may be shared in place of SSN.

Optional

Passport Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

Passport number

Required

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Optional

Driver's License Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

Driver's license number

Required

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

Optional

National ID Details. Passport, Driver's License or National ID is required for non U.S. citizens.

Required

National ID number

Required

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Required

Date of birth (YYYY-MM-DD)

Optional

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

Required

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

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

{
  "documents": [],
  "id": "enti_2Q1ctiJm1NypVqCt8UBC8e4xTfH",
  "is_root": false,
  "person_details": {
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "101 Market St",
      "line_2": "Suite 1913",
      "postal_code": "94105",
      "state": "CA"
    },
    "date_of_birth": "1985-08-04",
    "email": "apis@column.com",
    "first_name": "Bruce",
    "last_name": "Hockey",
    "middle_name": "Smith",
    "passport": {},
    "ssn": "565438976",
    "drivers_license": null,
    "national_id": null
  },
  "review_reasons": [],
  "type": "PERSON",
  "verification_status": "VERIFIED"
}

Create a legal business entity

POST

/entities/business

Creates a legal business entity.

body parameters

Required

Employer Identification Number (Tax ID)

Optional

Registration ID, typically for a non US incorporated company. EIN or Registration ID is required.

Required

Business registration ID

Required

Country code where the business registration ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Required

Legal Business Name. Must adhere to Fedwire character validation.

Optional

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

Optional

Type of business. Permitted values are limited-partnership, trust, sole-proprietorship, corporation,llc, general-partnership, professional-association,government,non-profit, other.

Optional

State in which the business is incorporated. Only postal abbreviations (e.g. AL, CA, DE, ...) are allowed. Only required for a root entity.

Optional

Date on which the business entity was incorporated. Only required for a root entity.

Optional

Indicates possible uses of the accounts an entity may use at Column. Only required for a root entity.

Optional

Description of the business entity. Only required for a root entity.

Optional

Expected payment volumes. Only required for a root entity.

Optional

Countries in which the business currently operates or expects to operate. Only ISO 3166-1 Alpha-2 Country Codes (e.g., US, FR, UK, DE, ...) are allowed. Only required for a root entity.

Required

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

Postal code

Required

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

Required

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

Optional

Social Security Number is required for US beneficial owners. Passport, driver's license, or national ID is required for foreign beneficial owners.

Optional

Passport Number. SSN, passport, driver's license, or national ID is required.

Required

Passport number

Required

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Optional

Driver's license. SSN, passport, driver's license, or national ID is required.

Required

Driver's license number

Required

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

Optional

National ID. SSN, passport, driver's license, or national ID is required.

Required

National ID number

Required

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Required

Date of birth (YYYY-MM-DD)

Optional

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

Required

Boolean value which specifies if this person is a designated control person.

Required

Boolean value which specifies if this person is a designated beneficial owner.

Optional

Percentage ownership, specified as a integer, of the beneficial owner

Optional

Job title of the beneficial owner or control person.

Required

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

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> \
  -H 'Content-Type: application/json' \
  -d '{
    "ein": "999999999",
    "business_name": "Maries Bakery",
    "website": "mariesbakery.com",
    "address": {
        "line_1": "1110 Gorgas Avenue",
        "line_2": "1000",
        "city": "San Francisco",
        "state": "CA",
        "postal_code": "94109",
        "country_code": "US"
    },
    "beneficial_owners": [
        {
            "date_of_birth": "1989-04-15",
            "first_name": "Sam",
            "middle_name": "Bruce",
            "last_name": "Smith",
            "ssn": "999999999",
            "email": "samsmith@gmail.com",
            "is_beneficial_owner": true,
            "ownership_percentage": 50,
            "address": {
                "line_1": "999 Bay Street",
                "city": "San Francisco",
                "state": "CA",
                "postal_code": "94109",
                "country_code": "US"
            }
        }
    ]
}'

Response

{
  "business_details": {
    "account_usage": "",
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "1110 Gorgas Avenue",
      "line_2": "1000",
      "postal_code": "94109",
      "state": "CA"
    },
    "beneficial_owners": [
      {
        "address": {
          "city": "San Francisco",
          "country_code": "US",
          "line_1": "999 Bay Street",
          "line_2": "",
          "postal_code": "94109",
          "state": "CA"
        },
        "date_of_birth": "1989-04-15",
        "drivers_license": null,
        "email": "samsmith@gmail.com",
        "first_name": "Sam",
        "is_beneficial_owner": true,
        "is_control_person": false,
        "job_title": "",
        "last_name": "Smith",
        "middle_name": "Bruce",
        "national_id": null,
        "ownership_percentage": 50,
        "passport": {},
        "ssn": "999999999"
      }
    ],
    "business_name": "Maries Bakery",
    "countries_of_operation": null,
    "description": null,
    "ein": "999999999",
    "industry": "",
    "legal_type": "",
    "payment_volumes": null,
    "registration_id": {
      "country_code": "US",
      "number": "999999999"
    },
    "website": "mariesbakery.com"
  },
  "documents": [],
  "id": "enti_2dskHOBMYaqdTGllzMJpLYt1lC5",
  "is_root": false,
  "review_reasons": [],
  "type": "BUSINESS",
  "verification_status": "VERIFIED"
}

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-verification 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

Optional

Legal Business Name. Must adhere to Fedwire character validation.

Optional

Industry in which the business entity operates.

Optional

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

Optional

Type of business. Permitted values are limited-partnership, trust, sole-proprietorship, corporation,llc, general-partnership, professional-association,government,non-profit, other.

Optional

State in which the business is incorporated. Only postal abbreviations (e.g. AL, CA, DE, ...) are allowed. Only required for a root entity.

Optional

Date on which the business entity was incorporated. Only required for a root entity.

Optional

Indicates possible uses of the accounts an entity may use at Column. Only required for a root entity.

Optional

Description of the business entity. Only required for a root entity.

Optional

Expected payment volumes. Only required for a root entity.

Optional

Countries in which the business currently operates or expects to operate. Only ISO 3166-1 Alpha-2 Country Codes (e.g., US, FR, UK, DE, ...) are allowed. Only required for a root entity.

Optional

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

Postal code

Required

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

Optional

If beneficial owners are updated, the entire array of objects will be updated. This means you must pass the complete array of beneficial owners when updating.

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

Optional

Social Security Number is required for US beneficial owners. Passport, driver's license, or national ID is required for foreign beneficial owners.

Optional

Passport Number. SSN, passport, driver's license, or national ID is required.

Required

Passport number

Required

Country code where the passport was issued. US Passports will be rejected as we require US citizens to submit SSN.

Optional

Driver's license. SSN, passport, driver's license, or national ID is required.

Required

Driver's license number

Required

Country code where the driver's license was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...). US Drivers License will be rejected as we require US citizens to submit SSN.

Optional

National ID. SSN, passport, driver's license, or national ID is required.

Required

National ID number

Required

Country code where the national ID was issued. ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).

Required

Date of birth (YYYY-MM-DD)

Optional

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

Required

Boolean value which specifies if this person is a designated control person.

Required

Boolean value which specifies if this person is a designated beneficial owner.

Optional

Percentage ownership, specified as a integer, of the beneficial owner

Optional

Job title of the beneficial owner or control person.

Required

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

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> \
  -H 'Content-Type: application/json' \
  -d '{
    "ein":"123456789",
    "business_name":"Yellen Cocktails LLC",
    "industry":"housing",
    "website":"column.com",
    "legal_type":"corporation",
    "address":{
      "line_1":"555 California Street",
      "city":"San Francisco",
      "state":"CA",
      "country_code":"US"
    },
    "beneficial_owners":[
      {
        "date_of_birth":"1990-01-01",
        "first_name":"Oliver",
        "last_name":"Hockey",
        "ssn":"999999999",
        "email":"oli@column.com",
        "is_control_person":true,
        "is_beneficial_owner":true,
        "job_title":"CEO",
        "address":{
          "line_1":"101 Market St",
          "line_2":"Suite 1913",
          "city":"San Francisco",
          "state":"CA",
          "postal_code":"94105",
          "country_code":"US"
        }
      }
    ]
  }'

Response

{
  "business_details": {
    "account_usage": "",
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "1110 Gorgas Avenue",
      "line_2": "Suite 1000",
      "postal_code": "94109",
      "state": "CA"
    },
    "beneficial_owners": [
      {
        "address": {
          "city": "San Francisco",
          "country_code": "US",
          "line_1": "999 Bay Street",
          "line_2": "",
          "postal_code": "94109",
          "state": "CA"
        },
        "date_of_birth": "1989-01-01",
        "drivers_license": null,
        "email": "mbakery@bakery.com",
        "first_name": "Sam",
        "last_name": "Smith",
        "middle_name": "Test",
        "national_id": null,
        "passport": {},
        "ssn": "999999999"
      }
    ],
    "business_name": "Maries Bakery",
    "countries_of_operation": null,
    "date_of_incorporation": "2022-01-01",
    "description": "Bakery",
    "ein": "111111111",
    "industry": "",
    "legal_type": "",
    "payment_volumes": null,
    "registration_id": {
      "country_code": "US",
      "number": "111111111"
    },
    "state_of_incorporation": "CA",
    "website": "acme.com"
  },
  "documents": [],
  "id": "enti_2dk2oXqPcB5Xb5wFpnrg50F7BeD",
  "is_root": false,
  "review_reasons": [],
  "type": "BUSINESS",
  "verification_status": "VERIFIED"
}

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. Depending on the entity type, either the business or person object will be returned.

Request

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

Response

{
  "business_details": {
    "address": {
      "city": "San Francisco",
      "country_code": "US",
      "line_1": "555 California Street",
      "line_2": "",
      "postal_code": "",
      "state": "CA"
    },
    "beneficial_owners": [
      {
        "address": {
          "city": "San Francisco",
          "country_code": "US",
          "line_1": "101 Market St",
          "line_2": "Suite 1913",
          "postal_code": "94105",
          "state": "CA"
        },
        "date_of_birth": "1990-01-01",
        "email": "oliver@column.com",
        "first_name": "Oliver",
        "last_name": "Hockey",
        "middle_name": "",
        "passport": {},
        "ssn": "999999999",
        "drivers_license": null,
        "national_id": null
      }
    ],
    "business_name": "Yellen Cocktails LLC",
    "ein": "123456789",
    "registration_id": {
      "number": "123456789",
      "country_code": "US"
    },
    "industry": "",
    "legal_type": "corporation",
    "website": "column.com"
  },
  "documents": [],
  "id": "enti_2Q1fIwKjnf7TmZP37mAuKjWXB2o",
  "is_root": false,
  "review_reasons": [],
  "type": "BUSINESS",
  "verification_status": "VERIFIED"
}

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 on your platform. 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, either PERSON or BUSINESS.

Optional

Return results with this verification status.

Optional

Indicates if the entity is the root entity of the platform.

Optional

Return entities with this name.

Request

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

Response

{
  "entities": [
    {
      "documents": [],
      "id": "enti_2NkTtT5NI3Lh0LpjpvxO4M2AZHd",
      "is_root": false,
      "name": "Oliver Smith Hockey",
      "review_reasons": [],
      "type": "PERSON",
      "verification_status": "VERIFIED"
    },
    {
      "documents": [],
      "id": "enti_2MCE4Cgh2Sl5ttZfnXYwzmfik0c",
      "is_root": false,
      "name": "Jim's Bakery",
      "review_reasons": [],
      "type": "BUSINESS",
      "verification_status": "VERIFIED"
    },
    {
      "documents": [],
      "id": "enti_25n5phSY8StZxU4C2Y7gAREGUdB",
      "is_root": false,
      "name": "Bruce Smith Hockey",
      "review_reasons": [],
      "type": "PERSON",
      "verification_status": "VERIFIED"
    },
    {
      "documents": [],
      "id": "enti_25FtFWv8n9rHaOoL3ZYttfEAr9k",
      "is_root": false,
      "name": "Yellen Cocktails LLC",
      "review_reasons": [],
      "type": "BUSINESS",
      "verification_status": "VERIFIED"
    },
    {
      "documents": [],
      "id": "enti_23ZaVYnHLsOdd1MIQJ0uQfp9cgO",
      "is_root": true,
      "name": "Sam Smith",
      "review_reasons": [],
      "type": "PERSON",
      "verification_status": "VERIFIED"
    },
    {
      "documents": [],
      "id": "enti_23ZT8vsfjNkjTFEN6c3OBrX9BUt",
      "is_root": false,
      "name": "Andrew Jackson",
      "review_reasons": [],
      "type": "PERSON",
      "verification_status": "VERIFIED"
    }
  ],
  "has_more": false
}

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

Lists all possible balance amounts for an account represented in the smallest unit of the currency.

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 balance of money which is currently in a HOLD state specified in the Create Book Transfer API.

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

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.

The Swift BIC code for this bank account for international wire payments.

The timestamp at which the bank account was created.

Currency of the balances in the account. For all amounts this will be USD.

The externally facing default account number tied to this bank account.

The default account number ID tied to this account.

A name for the bank account (mininum: 3 characters)

Unique ID for this account.

Whether the account can be overdrafted, must include a overdraft_reserve_account_id

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

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

The 9-digit ABA routing number for this bank account.

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

The display name for the bank account. Display name is an account nickname used on Column's Dashboard.

Bank Account object

{
  "balances": {
    "available_amount": 5100,
    "holding_amount": 0,
    "locked_amount": 0,
    "pending_amount": 0
  },
  "bic": "CLNOUS66",
  "created_at": "2021-10-14T17:50:21Z",
  "currency_code": "USD",
  "default_account_number": "123456789012345",
  "default_account_number_id": "acno_2YHAWG9FTCxtL5emK1oVKCOx7fk",
  "description": "John Doe",
  "id": "bacc_2YHAXVyuS2xcJW12Buh9zsxV7vC",
  "is_overdraftable": false,
  "overdraft_reserve_account_id": "",
  "owners": [
    "enti_2YHAYW65t2fEna7uxll10OHzoty"
  ],
  "routing_number": "121145307",
  "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

Optional

The display name for the bank account. Display name is an account nickname used on Column's Dashboard.

Request

curl 'https://api.column.com/bank-accounts' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d description="Travel Checking" \
  -d entity_id="<entity_id>"

Response

{
  "balances": {
    "available_amount": 0,
    "holding_amount": 0,
    "locked_amount": 0,
    "pending_amount": 0
  },
  "bic": "CLNOUS66",
  "created_at": "2021-10-14T17:50:21Z",
  "currency_code": "USD",
  "default_account_number": "123456789012345",
  "default_account_number_id": "acno_2YHAWG9FTCxtL5emK1oVKCOx7fk",
  "description": "Travel Checking",
  "id": "bacc_2YHAXVyuS2xcJW12Buh9zsxV7vC",
  "is_overdraftable": false,
  "overdraft_reserve_account_id": "",
  "owners": [
    "enti_2YHAYW65t2fEna7uxll10OHzoty"
  ],
  "routing_number": "121145307",
  "type": "CHECKING"
}

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.

query parameters

Optional

List all accounts that belong to the entity with the entity_id.

Optional

List all accounts that are overdraftable.

Optional

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

Optional

List all bank accounts with the given overdraft_reserve_account_id.

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": [
    {
      "balances": {
        "available_amount": 0,
        "holding_amount": 0,
        "locked_amount": 0,
        "pending_amount": 0
      },
      "bic": "CLNOUS66",
      "created_at": "2021-10-14T17:50:21Z",
      "currency_code": "USD",
      "default_account_number": "123456789012345",
      "default_account_number_id": "acno_2YHAWG9FTCxtL5emK1oVKCOx7fk",
      "description": "Travel Checking",
      "id": "bacc_2YHAXVyuS2xcJW12Buh9zsxV7vC",
      "is_overdraftable": false,
      "overdraft_reserve_account_id": "",
      "owners": [
        "enti_2YHAYW65t2fEna7uxll10OHzoty"
      ],
      "routing_number": "121145307",
      "type": "CHECKING"
    }
  ],
  "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

{
  "balances": {
    "available_amount": 0,
    "holding_amount": 0,
    "locked_amount": 0,
    "pending_amount": 0
  },
  "bic": "CLNOUS66",
  "created_at": "2021-10-14T17:50:21Z",
  "currency_code": "USD",
  "default_account_number": "123456789012345",
  "default_account_number_id": "acno_2YHAWG9FTCxtL5emK1oVKCOx7fk",
  "description": "Travel Checking",
  "id": "bacc_2YHAXVyuS2xcJW12Buh9zsxV7vC",
  "is_overdraftable": false,
  "overdraft_reserve_account_id": "",
  "owners": [
    "enti_2YHAYW65t2fEna7uxll10OHzoty"
  ],
  "routing_number": "121145307",
  "type": "CHECKING"
}

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

Optional

The display name for the bank account. Display name is an account nickname used on Column's Dashboard.

Request

url 'https://api.column.com/bank-accounts/<bank_account_id>' \
  -XPATCH \
  -u :<YOUR API KEY> \
  -d description="Travel Checking UPDATE"

Response

{
  "balances": {
    "available_amount": 0,
    "holding_amount": 0,
    "locked_amount": 0,
    "pending_amount": 0
  },
  "bic": "CLNOUS66",
  "created_at": "2021-10-14T17:50:21Z",
  "currency_code": "USD",
  "default_account_number": "123456789012345",
  "default_account_number_id": "acno_2YHAWG9FTCxtL5emK1oVKCOx7fk",
  "description": "Travel Checking",
  "id": "bacc_2YHAXVyuS2xcJW12Buh9zsxV7vC",
  "is_overdraftable": false,
  "overdraft_reserve_account_id": "",
  "owners": [
    "enti_2YHAYW65t2fEna7uxll10OHzoty"
  ],
  "routing_number": "121145307",
  "type": "CHECKING"
}

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. This endpoint returns a list of summaries, one summary per day, for a single bank account. You must set your platform reporting time zone in Platform Settings on Dashboard to use this endpoint (read more).

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/<bank_account_id>/history?from_date=2022-03-01&to_date=2022-03-02' \
  -u :<YOUR API KEY>

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

Bank Account Overdraft Alert

A bank account overdraft alert is a notification when an account in your platform has been overdrawn and funds have been locked in your reserve accounts, or has been credited and locked funds in your reserve accounts have been released. Read more.

object parameters

The current available balance of the bank account after this alert.

Amount in cents

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

ID of the bank account that is overdrawn or credited.

The amount that has been locked or released in the reserve account.

Amount in cents

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

ID of the reserve account in which funds are locked or released.

ID of transfer that triggered this alert.

Bank Account object

{
  "available_balance": {
    "cents": -240000,
    "currency_code": "USD"
  },
  "bank_account_id": "bacc_2XJUlsjtGxHwFSyIxpWPmJ6a53q",
  "overdraft_amount": {
    "cents": 30000,
    "currency_code": "USD"
  },
  "reserve_account_id": "bacc_2XJUltwuf4e3L5g8D6cljBP79os",
  "transfer_id": "wire_2XJUlyL4xJ0BDynRsS0A2MHEtll"
}

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 Swift BIC code for this bank account for international wire payments.

The timestamp the account number was created.

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

The unique id of the object

The 9-digit ABA routing number for this bank account.

Account Number object

{
  "account_number": "256783259046169",
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "bic": "CLNOUS66",
  "created_at": "2022-03-01T20:09:42.949787176Z",
  "description": "Travel Checking Account Number",
  "id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "routing_number": "121145307"
}

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

{
  "account_number": "256783259046169",
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "bic": "CLNOUS66",
  "created_at": "2022-03-01T20:09:42.949787176Z",
  "description": "Travel Checking Account Number",
  "id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "routing_number": "121145307"
}

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": [
    {
      "account_number": "256783259046169",
      "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
      "bic": "CLNOUS66",
      "created_at": "2022-03-01T20:09:42.949787176Z",
      "description": "Travel Checking Account Number",
      "id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
      "routing_number": "121145307"
    }
  ],
  "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

{
  "account_number": "256783259046169",
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "bic": "CLNOUS66",
  "created_at": "2022-03-01T20:09:42.949787176Z",
  "description": "Travel Checking Account Number",
  "id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "routing_number": "121145307"
}

Loan object

A loan is an object that lives under an entity, at the same level as a bank account. Just like entities can have multiple bank accounts, entities can have multiple loans. Loans are the foundation for many lending-oriented use cases such as charge cards and term loans. Read about loans in our data model section for more information.

object parameters

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

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

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

Update a loan

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

Get a loan by ID

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

List all loans

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

Create a disbursement

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

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

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

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

Update a disbursement

PATCH

/loans/disbursements/<disbursement_id>

Update a disbursement by its ID. Disbursement must be in a "hold" state. Only the amount can be updated.

path parameters

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

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

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

GET

/loans/disbursements/<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"
}

List all disbursements

GET

/loans/disbursements

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

query parameters

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"
    }
  ],
  "has_more": false
}

Create a payment

POST

/loans/payments

Creates a payment for a loan.

body parameters

Required

Amount (in cents) of the loan payment.

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

Required

The bank account from which the payment is originated. 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 payment.

Required

The ID of the loan to which the payment is being made. The principal_outstanding 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",
  "created_at":"2023-07-07T21:46:43.093Z"
  "currency": "",
  "description": "first payment",
  "id": "lpmt_26WKSHYQoJvPEaGn149tlduSaja",
  "loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
  "principal_amount": "1000",
  "status": "completed"
}

Get a payment

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",
  "created_at": "2022-03-17T18:21:47Z",
  "currency": "",
  "description": "first payment",
  "id": "lpmt_26WaF5JrqUEXT1yhabNOfoCf6fp",
  "loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
  "principal_amount": "1000",
  "status": "completed"
}

List all payments

GET

/loans/payments

List all payments 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",
      "created_at":"2023-07-07T21:46:43.093Z",
      "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",
      "created_at":"2023-05-01T02:24:23.047Z",
      "currency": "USD",
      "description": "first payment",
      "id": "lpmt_274o2O54AEQU5vXwgjVyMEP7tiQ",
      "loan_id": "loan_26UE1mcnJsRMTIJfwKFXqqF0xXo",
      "principal_amount": "20000",
      "status": "completed"
    }
  ],
  "has_more": false
}

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 transfer 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 details, 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 type of the account number. Can be checking or savings.

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

The timestamp the object was created.

Description of the counterparty visible only in your platform. Maximum length: 127 characters.

The email address of the beneficiary.

The unique id of the object

Indicates whether this counterparty account is actually a Column account.

The legal ID (e.g., Tax ID, Cedula Juridica, etc.) of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127 characters.

The legal entity type of the beneficiary. Can be business, non_profit, individual, or sole_proprietor. This field is recommended for international wire transfers, and required in some countries.

The local account number (e.g. Cuenta Cliente in Costa Rica) in the beneficiary's bank. This field is recommended for international wire transfers, and required in some countries. Maximum length: 63 characters.

The local bank code of the beneficiary's bank (e.g., India IFSC, Australia BSB, China CNAPS, etc.). This field is recommended for international wire transfers, and required in some countries. Maximum length: 63 characters.

The counterparty name who owns the bank account. For domestic wires, only the first 35 characters are included in the wire message. For international wires, only the first 140 characters are included in the wire message. Additional characters will be truncated.

The phone number of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 31 characters.

Format for international wire transfers: \+[0-9]{1,3}-[0-9()+\-]{1,30} (e.g. +44-(0)1223-333300).

Format for domestic wire transfers:

  • +1-(650)123-4567 (US international phone number format)
  • 650-123-4567
  • (650)123-4567
  • (650) 123-4567
  • 650 123 4567
  • 6501234567

The routing number of the bank.

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

The timestamp the object was last updated.

Whitelists counterparties for automatic approval of drawdown requests to Column via FedWire. If false, all inbound drawdown requests from this counterparty will require explicit approval.

Counterparty object

{
  "account_number": "GB29NWBK60161331926819",
  "account_type": "checking",
  "address": {
    "city": "New Winton",
    "country_code": "GB",
    "line_1": "96 Lairg Road",
    "line_2": "",
    "postal_code": "EH33 5ZN",
    "state": ""
  },
  "created_at": "2023-07-07T22:31:30.859307801Z",
  "description": "international_cpty",
  "email": "john.doe@gmail.com",
  "id": "cpty_2SGNjEY3ax4DaX4LgU72navTADL",
  "is_column_account": false,
  "legal_id": "GB1245643234",
  "legal_type": "sole_proprietor",
  "local_account_number": "876545678",
  "local_bank_code": "GB123456",
  "local_bank_country_code": "",
  "local_bank_name": "",
  "name": "John Doe",
  "phone": "650-123-4567",
  "routing_number": "NWBKGB2L",
  "routing_number_type": "bic",
  "updated_at": "2023-07-07T22:31:30.859307801Z",
  "wire": {
    "beneficiary_address": {
      "city": "New Winton",
      "country_code": "GB",
      "line_1": "96 Lairg Road",
      "line_2": "",
      "postal_code": "EH33 5ZN",
      "state": ""
    },
    "beneficiary_email": "john.doe@gmail.com",
    "beneficiary_legal_id": "GB1245643234",
    "beneficiary_name": "John Doe",
    "beneficiary_phone": "650-123-4567",
    "beneficiary_type": "sole_proprietor",
    "local_account_number": "876545678",
    "local_bank_code": "GB123456"
  },
  "wire_drawdown_allowed": false
}

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.

A domestic ACH only requires a counterparty's account and routing number. If you include a counterparty name, Column will by default populate receiver_name on the ACH transfer request. Domestic and international wires require full name and address. Certain countries may require additional fields. Learn more about country-specific details here.

body parameters

Required

The routing number of the bank.

Optional

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

Required

The account number of the bank account.

Optional

The type of the account number. Can be checking or savings.

Optional

Description of the counterparty visible only in your platform. Maximum length: 127 characters.

Optional

Whitelists counterparties for automatic approval of drawdown requests to Column via FedWire. If false, all inbound drawdown requests from this counterparty will require explicit approval.

Optional

The account holder on the counterparty bank account. This field is not required to send ACH transfers, but is required to send domestic and international wires. For international wires, Must adhere to International Wire character validation . Column will truncate name to a maximum length of 140 characters per SWIFT guidelines. For domestic wires, Must adhere to FedWire character validation . Column will truncate name to 35 characters per Fedwire guidelines.

Optional

The address object is not required to send ACH transfers, but is required to send domestic and international wires.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

Postal code

Required

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

Optional

The phone number of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 31 characters.

Format for international wire transfers: \+[0-9]{1,3}-[0-9()+\-]{1,30} (e.g. +44-(0)1223-333300).

Format for domestic wire transfers:

  • +1-(650)123-4567 (US international phone number format)
  • 650-123-4567
  • (650)123-4567
  • (650) 123-4567
  • 650 123 4567
  • 6501234567

Optional

The email address of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127 characters.

Optional

The legal ID (e.g., Tax ID, Cedula Juridica, etc.) of the beneficiary. This field is recommended for international wire transfers, and required in some countries. Maximum length: 127 characters. For international wires, Must adhere to International Wire character validation .

Optional

The legal entity type of the beneficiary. Can be business, non_profit, individual, or sole_proprietor. This field is recommended for international wire transfers, and required in some countries. For international wires, Must adhere to International Wire character validation .

Optional

The local bank code of the beneficiary's bank (e.g., India IFSC, Australia BSB, China CNAPS, etc.). This field is recommended for international wire transfers, and required in some countries. Maximum length: 63 characters. For international wires, Must adhere to International Wire character validation .

Optional

The local account number (e.g. Cuenta Cliente in Costa Rica) in the beneficiary's bank. This field is recommended for international wire transfers, and required in some countries. Maximum length: 63 characters. For international wires, Must adhere to International Wire character validation .

Request

curl 'https://api.column.com/counterparties' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d routing_number="AACDGB21" \
  -d account_number="GB29NWBK60161331926819" \
  -d routing_number_type="bic" \
  -d account_type="checking" \
  -d description="international_cpty" \
  -d name="John Doe" \
  -d phone="650-123-4567" \
  -d email="john.doe@gmail.com" \
  -d legal_id="GB1245643234" \
  -d legal_type="sole_proprietor" \
  -d local_bank_code="GB123456" \
  -d local_account_number="876545678" \
  -d "address[line_1]"="96 Lairg Road" \
  -d "address[city]"="New Winton" \
  -d "address[postal_code]"="EH33 5ZN" \
  -d "address[country_code]"="GB"

Response

{
  "account_number": "GB29NWBK60161331926819",
  "account_type": "checking",
  "address": {
    "city": "New Winton",
    "country_code": "GB",
    "line_1": "96 Lairg Road",
    "line_2": "",
    "postal_code": "EH33 5ZN",
    "state": ""
  },
  "created_at": "2023-07-07T22:31:30.859307801Z",
  "description": "international_cpty",
  "email": "john.doe@gmail.com",
  "id": "cpty_2SGNjEY3ax4DaX4LgU72navTADL",
  "is_column_account": false,
  "legal_id": "GB1245643234",
  "legal_type": "sole_proprietor",
  "local_account_number": "876545678",
  "local_bank_code": "GB123456",
  "local_bank_country_code": "",
  "local_bank_name": "",
  "name": "John Doe",
  "phone": "650-123-4567",
  "routing_number": "NWBKGB2L",
  "routing_number_type": "bic",
  "updated_at": "2023-07-07T22:31:30.859307801Z",
  "wire": {
    "beneficiary_address": {
      "city": "New Winton",
      "country_code": "GB",
      "line_1": "96 Lairg Road",
      "line_2": "",
      "postal_code": "EH33 5ZN",
      "state": ""
    },
    "beneficiary_email": "john.doe@gmail.com",
    "beneficiary_legal_id": "GB1245643234",
    "beneficiary_name": "John Doe",
    "beneficiary_phone": "650-123-4567",
    "beneficiary_type": "sole_proprietor",
    "local_account_number": "876545678",
    "local_bank_code": "GB123456"
  },
  "wire_drawdown_allowed": false
}

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": [
    {
      "account_number": "GB29NWBK60161331926819",
      "account_type": "checking",
      "address": {
        "city": "New Winton",
        "country_code": "GB",
        "line_1": "96 Lairg Road",
        "line_2": "",
        "postal_code": "EH33 5ZN",
        "state": ""
      },
      "created_at": "2023-07-07T22:31:30.859307801Z",
      "description": "international_cpty",
      "email": "john.doe@gmail.com",
      "id": "cpty_2SGNjEY3ax4DaX4LgU72navTADL",
      "is_column_account": false,
      "legal_id": "GB1245643234",
      "legal_type": "sole_proprietor",
      "local_account_number": "876545678",
      "local_bank_code": "GB123456",
      "local_bank_country_code": "",
      "local_bank_name": "",
      "name": "John Doe",
      "phone": "650-123-4567",
      "routing_number": "NWBKGB2L",
      "routing_number_type": "bic",
      "updated_at": "2023-07-07T22:31:30.859307801Z",
      "wire": {
        "beneficiary_address": {
          "city": "New Winton",
          "country_code": "GB",
          "line_1": "96 Lairg Road",
          "line_2": "",
          "postal_code": "EH33 5ZN",
          "state": ""
        },
        "beneficiary_email": "john.doe@gmail.com",
        "beneficiary_legal_id": "GB1245643234",
        "beneficiary_name": "John Doe",
        "beneficiary_phone": "650-123-4567",
        "beneficiary_type": "sole_proprietor",
        "local_account_number": "876545678",
        "local_bank_code": "GB123456"
      },
      "wire_drawdown_allowed": false
    }
  ],
  "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 looking up.

Request

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

Response

{
  "account_number": "GB29NWBK60161331926819",
  "account_type": "checking",
  "address": {
    "city": "New Winton",
    "country_code": "GB",
    "line_1": "96 Lairg Road",
    "line_2": "",
    "postal_code": "EH33 5ZN",
    "state": ""
  },
  "created_at": "2023-07-07T22:31:30.859307801Z",
  "description": "international_cpty",
  "email": "john.doe@gmail.com",
  "id": "cpty_2SGNjEY3ax4DaX4LgU72navTADL",
  "is_column_account": false,
  "legal_id": "GB1245643234",
  "legal_type": "sole_proprietor",
  "local_account_number": "876545678",
  "local_bank_code": "GB123456",
  "local_bank_country_code": "",
  "local_bank_name": "",
  "name": "John Doe",
  "phone": "650-123-4567",
  "routing_number": "NWBKGB2L",
  "routing_number_type": "bic",
  "updated_at": "2023-07-07T22:31:30.859307801Z",
  "wire": {
    "beneficiary_address": {
      "city": "New Winton",
      "country_code": "GB",
      "line_1": "96 Lairg Road",
      "line_2": "",
      "postal_code": "EH33 5ZN",
      "state": ""
    },
    "beneficiary_email": "john.doe@gmail.com",
    "beneficiary_legal_id": "GB1245643234",
    "beneficiary_name": "John Doe",
    "beneficiary_phone": "650-123-4567",
    "beneficiary_type": "sole_proprietor",
    "local_account_number": "876545678",
    "local_bank_code": "GB123456"
  },
  "wire_drawdown_allowed": false
}

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.

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

The timestamp the object was created.

Institution's official full name.

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

Institution's routing number. Can be 9-digit ABA routing numbers, or 8/11-character BICs.

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

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.

Indicates if an institution accepts wire transfers or not.

Indicates if an institution can only accept bank-to-bank settlement transfers, but cannot accept customer transfers.

Institution's address zip code. Only available if ach_eligible = true.

Financial Institution object

{
    "ach_eligible": true,
    "city": "CHICO",
    "country_code": "US",
    "created_at": "2021-10-13T16:39:01Z",
    "full_name": "COLUMN N.A.",
    "phone_number": "5308795900",
    "routing_number": "121145307",
    "routing_number_type": "aba",
    "short_name": "COLUMN NA",
    "state": "CA",
    "street_address": "1717 MANGROVE AVE # 100",
    "updated_at": "2021-10-20T15:53:03Z",
    "wire_eligible": true,
    "wire_settlement_only": false,
    "zip_code": "95926"
}

Get a financial institution

GET

/institutions/<routing_number>

Retrieve a single financial institution by its ABA number or BIC.

path parameters

Required

ABA number or BIC 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",
  "country_code": "US",
  "created_at": "2021-10-13T16:39:55Z",
  "full_name": "JPMORGAN CHASE BANK, NA",
  "phone_number": "8134323700",
  "routing_number": "322271627",
  "routing_number_type": "aba",
  "short_name": "WASH MUT BANK",
  "state": "FL",
  "street_address": "10430 HIGHLAND MANOR DRIVE",
  "updated_at": "2021-10-28T13:00:35Z",
  "wire_eligible": true,
  "wire_settlement_only": false,
  "zip_code": "33610"
}

List financial institutions

GET

/institutions

List all financial institutions. Filtered results can be retrieved with extra parameters in your queires.

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

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

Optional

Case-insensitive keywords in full names of financial institutions.

Optional

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

Request

curl 'https://api.column.com/institutions?routing_number_type=bic&name=victoria&country_code=GB' \
  -u :<YOUR API KEY>

Response

{
  "has_more": false,
  "institutions": [
    {
      "ach_eligible": false,
      "city": "BOURNEMOUTH BH12NF",
      "country_code": "GB",
      "created_at": "2023-01-04T22:02:06Z",
      "full_name": "LIVERPOOL VICTORIA FINANCIAL SERVICES LIMITED",
      "phone_number": "",
      "routing_number": "LVFSGB21",
      "routing_number_type": "bic",
      "short_name": "",
      "state": "",
      "street_address": "FRIZZELL HOUSE, COUNTY GATES",
      "updated_at": "2023-01-04T22:02:06Z",
      "wire_eligible": true,
      "wire_settlement_only": false,
      "zip_code": ""
    },
    {
      "ach_eligible": false,
      "city": "LONDON EC2V 6EE",
      "country_code": "GB",
      "created_at": "2023-01-04T22:02:06Z",
      "full_name": "LIVERPOOL VICTORIA ASSET MANAGEMENT LIMITED",
      "phone_number": "",
      "routing_number": "LVAMGB21",
      "routing_number_type": "bic",
      "short_name": "",
      "state": "",
      "street_address": "80 CHEAPSIDE, FLOOR 3",
      "updated_at": "2023-01-04T22:02:06Z",
      "wire_eligible": true,
      "wire_settlement_only": false,
      "zip_code": ""
    }
  ]
}

IBAN validation object

object parameters

Account number in the financial institution.

Local bank code of the financial institution in its country.

BIC of the financial institution.

Branch ID of the financial institution.

Check digits of the IBAN.

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

The IBAN you are validating

Name of the financial institution.

National ID of the financial institution in its country, which usually consists of its bank_id and branch_id.

IBAN validation object

{
  "account_number": "31926819",
  "bank_id": "NWBK",
  "bic": "NWBKGB2L",
  "branch_id": "601613",
  "check_digits": "29",
  "country_code": "GB",
  "iban": "GB29NWBK60161331926819",
  "institution_name": "NATIONAL WESTMINSTER BANK PLC",
  "national_id": "NWBK601613"
}

Validate an IBAN

GET

/iban/<iban>

Validate the format of an IBAN and if it is registered with the given financial institution. However, we cannot verify if the account is still open.

path parameters

Required

IBAN you're requesting

Request

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

Response

{
  "account_number": "31926819",
  "bank_id": "NWBK",
  "bic": "NWBKGB2L",
  "branch_id": "601613",
  "check_digits": "29",
  "country_code": "GB",
  "iban": "GB29NWBK60161331926819",
  "institution_name": "NATIONAL WESTMINSTER BANK PLC",
  "national_id": "NWBK601613"
}

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. Maximum length: 255 characters.

Datetime (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.

Applies only to IAT transfers. This is a List of intermediary institutions involved in an IAT transfer.

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

Details of Notifications of Change (NOCs) with the latest information of the counterparty. Available only with ach.outgoing_transfer.noc events.

Latest accounting reference number by which the beneficiary should be referred by the originator.

Latest routing number of the counterparty.

Latest account number of the counterparty.

For incoming ACH Debits and available only with ach.incoming_transfer.nsf events. This is the deadline by which the receiver account must be funded to complete the incoming debit. Column will file an NSF return for this ACH transfer if the account is not funded by the nsf_deadline.

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.

Details of the return processing history (e.g., initiated, dishonored, dishonor contested, manual review, etc.). Available only with ach.*.returned, ach.*.return_dishonored or ach.*.return_contested events.

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 ACH was settled.

The current state of the ACH transfer. See Notifications and States for details. Possible values: INITIATED, PENDING_SUBMISSION, SUBMITTED, SETTLED, RETURNED, COMPLETED, CANCELED, SCHEDULED, PENDING_RETURN, RETURN_DISHONORED, RETURN_CONTESTED, MANUAL_REVIEW, and MANUAL_REVIEW_APPROVED.

The timestamp at which 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.

This is a required code on IAT transfers used to identify reason for payment. Possible values: ANN, BUS, DEP, LOA, MIS, MOR, PEN, REM, RLS, SAL, TAX. See IAT transfers for details.

ACH transfer type: CREDIT or DEBIT. Learn more.

ID of the ultimate beneficiary counterparty that will receive the transfer. This is only required on outgoing IAT debits.

ID of the ultimate originating counterparty that sent the transfer. This is only required on outgoing IAT credits.

The timestamp at which the ACH transfer was lastly updated.

ACH Transfer object

{
  "id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
  "iat": null,
  "type": "CREDIT",
  "amount": 60000,
  "status": "SUBMITTED",
  "is_on_us": false,
  "same_day": false,
  "company_id": "9959349647",
  "created_at": "2022-11-09T23:32:47Z",
  "settled_at": null,
  "updated_at": "2022-11-09T23:32:48Z",
  "description": "",
  "is_incoming": false,
  "receiver_id": "",
  "returned_at": null,
  "cancelled_at": null,
  "company_name": "COLUMN NA",
  "completed_at": null,
  "effective_on": "2022-11-10T08:00:00Z",
  "initiated_at": "2022-11-09T23:32:47Z",
  "nsf_deadline": null,
  "submitted_at": "2022-11-09T23:32:48Z",
  "trace_number": "121145300000005",
  "currency_code": "USD",
  "receiver_name": "CHASE ACCOUNT",
  "return_details": [],
  "acknowledged_at": null,
  "allow_overdraft": false,
  "bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
  "counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
  "idempotency_key": "",
  "entry_class_code": "PPD",
  "manual_review_at": null,
  "account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
  "funds_availability": "default",
  "odfi_routing_number": "121145307",
  "return_contested_at": null,
  "payment_related_info": "payment addenda for COR testing",
  "return_dishonored_at": null,
  "notification_of_changes": {
    "receiver_id": "",
    "routing_number": "241070530",
    "account_number": "123456789"
  },
  "company_entry_description": "PAYMENT",
  "reversal_pair_transfer_id": "",
  "company_discretionary_data": "",
  "ultimate_beneficiary_counterparty_id":"",
  "ultimate_originator_counterparty_id":""
}

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.

The 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 account number from which the transfer is sent. If no account_number_id is specified, the default account number on a provided bank_account_id is used.

account_number_id or bank_account_id is required.

Optional

ID of the bank account from which the transfer is sent. If no account_number_id is specified, the default account number on the bank_account_id is used.

account_number_id or bank_account_id is required.

Optional

Counterparty object to create a counterparty for the receiver of the transfer at transfer creation. Either counterparty or counterparty_id is required.

Required

ID of the counterparty that will receive the transfer. Either counterparty or counterparty_id is required.

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.

Characters are validated according to the ACH Valid Character Specification.

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.

Characters are validated according to the ACH Valid Character Specification.

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.

Characters are validated according to the ACH Valid Character Specification.

Optional

Provides an additional 80 characters to give details on the ACH transaction for outgoing transfers. This information will be surfaced to the RDFI. This information will be surfaced to the RDFI. Characters are validated according to the ACH Valid Character Specification.

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.

Characters are validated according to the ACH Valid Character Specification

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.

Characters are validated according to the ACH Valid Character Specification

Required

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.

Optional

Counterparty object to create a counterparty an ultimate beneficiary counterparty at the time of transfer creation. This is only required on outgoing IAT debits. Either ultimate_beneficiary_counterparty or ultimate_beneficiary_counterpartyid is required.

Optional

ID of the ultimate beneficiary counterparty that will receive the transfer. This is only required on outgoing IAT debits. Either ultimate_beneficiary_counterparty or ultimate_beneficiary_counterpartyid is required.

Optional

Counterparty object to create an ultimate originator counterparty at the time of transfer creation. This is only required on outgoing IAT credits. Either ultimate_originator_counterparty or ultimate_originator_counterpartyid is required.

Optional

ID of the ultimate originating counterparty that will sent the transfer. This is only required on outgoing IAT credits. Either ultimate_originator_counterparty or ultimate_originator_counterpartyid is required.

Request

curl 'https://api.column.com/transfers/ach' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d amount=100000 \
  -d currency_code="USD" \
  -d bank_account_id="<bank_account_id>" \
  -d counterparty_id="<counterparty_id>" \
  -d type="CREDIT"

Response

{
  "id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
  "iat": null,
  "type": "CREDIT",
  "amount": 100000,
  "status": "SUBMITTED",
  "is_on_us": false,
  "same_day": false,
  "company_id": "9959349647",
  "created_at": "2022-11-09T23:32:47Z",
  "settled_at": null,
  "updated_at": "2022-11-09T23:32:48Z",
  "description": "",
  "is_incoming": false,
  "receiver_id": "",
  "returned_at": null,
  "cancelled_at": null,
  "company_name": "COLUMN NA",
  "completed_at": null,
  "effective_on": "2022-11-10T08:00:00Z",
  "initiated_at": "2022-11-09T23:32:47Z",
  "nsf_deadline": null,
  "submitted_at": "2022-11-09T23:32:48Z",
  "trace_number": "121145300000005",
  "currency_code": "USD",
  "receiver_name": "CHASE ACCOUNT",
  "return_details": [],
  "acknowledged_at": null,
  "allow_overdraft": false,
  "bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
  "counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
  "idempotency_key": "",
  "entry_class_code": "PPD",
  "manual_review_at": null,
  "account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
  "funds_availability": "default",
  "odfi_routing_number": "121145307",
  "return_contested_at": null,
  "payment_related_info": "payment addenda for COR testing",
  "return_dishonored_at": null,
  "notification_of_changes": null,
  "company_entry_description": "PAYMENT",
  "reversal_pair_transfer_id": "",
  "company_discretionary_data": "",
  "ultimate_beneficiary_counterparty_id": "",
  "ultimate_originator_counterparty_id": ""
}

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 are either CREDIT or DEBIT.

Request

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

Response

{
  "transfers": [
    {
      "id": "acht_28LtyrWQ7d5CZTXOjKEwVJrnlTa",
      "created_at": "2022-04-26T21:19:11Z",
      "updated_at": "2022-04-26T21:19:11Z",
      "submitted_at": null,
      "acknowledged_at": null,
      "settled_at": null,
      "completed_at": null,
      "returned_at": null,
      "cancelled_at": null,
      "initiated_at": null,
      "manual_review_at": null,
      "return_dishonored_at": null,
      "return_contested_at": null,
      "status": "SCHEDULED",
      "type": "DEBIT",
      "idempotency_key": "",
      "bank_account_id": "bacc_28Ltym2THRHbemnnJBVTH3m39fE",
      "account_number_id": "acno_28LtynFqAR4JbLXYVdfwU53AVcO",
      "counterparty_id": "",
      "amount": 10000,
      "currency_code": "USD",
      "description": "received MOCK IAT transfer (trace #: 322271620000001)",
      "effective_on": "2022-04-26T07:00:00Z",
      "same_day": false,
      "company_discretionary_data": "",
      "company_entry_description": "MOCK IAT",
      "company_id": "123456666",
      "company_name": "STARK INDUSTRIES",
      "receiver_name": "John P. Doe",
      "receiver_id": "ACCT223457",
      "entry_class_code": "IAT",
      "allow_overdraft": false,
      "is_incoming": true,
      "nsf_deadline": null,
      "trace_number": "322271620000001",
      "odfi_routing_number": "322271627",
      "return_details": [],
      "is_on_us": false,
      "iat": {
        "foreign_payment_amount": "0",
        "foreign_trace_number": "",
        "receiving_company_or_individual_name": "John P. Doe",
        "originator_name": "Stark Industries",
        "originator_street_address": "THE WALBROOK BUILDING",
        "originator_city_state_province": "LONDON*GB",
        "originator_country_postal_code": "GB*EC4N 8AF",
        "odfi_name": "CITIBANK EUROPE PLC",
        "odfi_identification_number_qualifier": "01",
        "odfi_identification": "0280008",
        "odfi_branch_country_code": "IE",
        "rdfi_name": "COLUMN N.A.",
        "rdfi_identification_number_qualifier": "01",
        "rdfi_identification": "121145307",
        "rdfi_branch_country_code": "US",
        "receiver_identification_number": "ACCT223457",
        "receiver_street_address": "3744NBIRMINGHAMAVE",
        "receiver_city_state_province": "x",
        "receiver_country_postal_code": "US*74110",
        "foreign_correspondent_bank_info": [],
        "payment_related_info": ["1d46a25a-508e-4bc1-8a6e-5355b1dfd7aLuckyLand - 1d46a25a-508e-4bc1-8a6e"],
        "transaction_type_code": "DEP"
      },
      "notification_of_changes": null,
      "payment_related_info": "",
      "reversal_pair_transfer_id": "", 
      "ultimate_beneficiary_counterparty_id":"",
      "ultimate_originator_counterparty_id":""
    },
    {
      "id": "acht_2HKbYE2th2sFioBxrRFOZL3IHR4",
      "iat": null,
      "type": "CREDIT",
      "amount": 60000,
      "status": "SUBMITTED",
      "is_on_us": false,
      "same_day": false,
      "company_id": "9959349647",
      "created_at": "2022-11-09T23:32:47Z",
      "settled_at": null,
      "updated_at": "2022-11-09T23:32:48Z",
      "description": "",
      "is_incoming": false,
      "receiver_id": "",
      "returned_at": null,
      "cancelled_at": null,
      "company_name": "COLUMN NA",
      "completed_at": null,
      "effective_on": "2022-11-10T08:00:00Z",
      "initiated_at": "2022-11-09T23:32:47Z",
      "nsf_deadline": null,
      "submitted_at": "2022-11-09T23:32:48Z",
      "trace_number": "121145300000005",
      "currency_code": "USD",
      "receiver_name": "CHASE ACCOUNT",
      "return_details": [],
      "acknowledged_at": null,
      "allow_overdraft": false,
      "bank_account_id": "bacc_2HKbY4W10hcBQBx5r42xMDEhv2K",
      "counterparty_id": "cpty_2HKbYBePtS8z3zK32QvwKlIoIeK",
      "idempotency_key": "",
      "entry_class_code": "PPD",
      "manual_review_at": null,
      "account_number_id": "acno_2HKbY3eq0gPP1WaQLZShDk87JC4",
      "funds_availability": "default",
      "odfi_routing_number": "121145307",
      "return_contested_at": null,
      "payment_related_info": "payment addenda for COR testing",
      "return_dishonored_at": null,
      "notification_of_changes": null,
      "company_entry_description": "PAYMENT",
      "reversal_pair_transfer_id": "",
      "company_discretionary_data": "", 
      "ultimate_beneficiary_counterparty_id":"",
      "ultimate_originator_counterparty_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"
  },
  "notification_of_changes": null,
  "payment_related_info": "",
  "reversal_pair_transfer_id": "", 
  "ultimate_beneficiary_counterparty_id":"",
  "ultimate_originator_counterparty_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": "",
  "notification_of_changes": null,
  "reversal_pair_transfer_id": "", 
  "ultimate_beneficiary_counterparty_id":"",
  "ultimate_originator_counterparty_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",
  "notification_of_changes": null,
  "updated_at": "2022-04-26T21:33:07Z", 
  "ultimate_beneficiary_counterparty_id":"",
  "ultimate_originator_counterparty_id":""
}

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.

The timestamp at which the return was created.

Includes an object containing detailed information about the return.

Optional information provided about the ACH return.

The timestamp at which the ACH return is created.

Description of the ACH return.

Reason for the ACH return.

Status of the ACH return.

The timestamp at which the ACH return is updated.

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.

The timestamp at which the return 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

The timestamp at 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.

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.

The timestamp at which 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

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

Addresses need to adhere to character validation, as addresses are used across multiple payment rails. Characters are validated according to the ACH Valid Character Specification.

Required

Address line 1

Optional

Address line 2

Required

City

Optional

State name. For US addresses, this field is mandatory and only postal abbreviations (e.g. AL, CA, DE, ...) are allowed.

Optional

Postal code

Required

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

Request

curl 'https://api.column.com/transfers/book' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d amount=10000 \
  -d currency_code="USD" \
  -d sender_bank_account_id="<bank_account_id>" \
  -d receiver_bank_account_id="<bank_account_id>"

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:18:34.844Z",
  "updated_at": "2021-11-29T20:18:34.844Z",
  "idempotency_key": "string",
  "sender_bank_account_id": "string",
  "sender_account_number_id": "string",
  "receiver_bank_account_id": "string",
  "receiver_account_number_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true,
  "details": {}
}

List all book transfers

GET

/transfers/book

Retrieve all book transfers under your developer account. Filtered results can be retrieved with extra parameters in the query (sender_bank_account_id, receiver_bank_account_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 sender bank account.

Optional

Return results associated with this receiver bank account.

Optional

Return results with this status.

Possible enum values:

  • REJECTED
  • COMPLETED
  • HOLD
  • CANCELED

Request

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

Response

{
  "transfers": [
    {
      "id": "string",
      "created_at": "2021-11-29T20:22:11.956Z",
      "updated_at": "2021-11-29T20:22:11.956Z",
      "idempotency_key": "string",
      "sender_bank_account_id": "string",
      "sender_account_number_id": "string",
      "receiver_bank_account_id": "string",
      "receiver_account_number_id": "string",
      "amount": int64,
      "currency_code": "string",
      "description": "string",
      "status": "NONE",
      "allow_overdraft": true
    }
  ],
  "has_more": true
}

Get a book transfer

GET

/transfers/book/<book_transfer_id>

Retrieve a single book transfer by its ID

path parameters

Required

ID of the book transfer you're looking up.

Request

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

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:22:41.596Z",
  "updated_at": "2021-11-29T20:22:41.596Z",
  "idempotency_key": "string",
  "sender_bank_account_id": "string",
  "sender_account_number_id": "string",
  "receiver_bank_account_id": "string",
  "receiver_account_number_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true
}

Update a book transfer

PATCH

/transfers/book/<book_transfer_id>

Update a book transfer by its ID. Transfer must be in a "hold" state. Only the amount can be updated.

path parameters

Required

body parameters

Required

Amount (in cents) to update the hold to. Can be lower or higher than the original amount. This will not clear the hold.

e.g. $1.75 would be represented by 175

Required

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

Optional

If true, will cause the hold to overdraft the available balance if the amount is greater than the available balance.

Request

curl 'https://api.column.com/transfers/book/<book_transfer_id>' \
  -XPATCH \
  -u :<YOUR API KEY> \
  -d amount=15000 \
  -d currency_code="USD"

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:22:41.596Z",
  "updated_at": "2021-11-29T20:22:41.596Z",
  "idempotency_key": "string",
  "sender_bank_account_id": "string",
  "sender_account_number_id": "string",
  "receiver_bank_account_id": "string",
  "receiver_account_number_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true
}

Cancel a book transfer

POST

/transfers/book/<book_transfer_id>/cancel

Cancel a book transfer hold by its ID. Transfer must be in a "hold" state.

path parameters

Required

Request

curl 'https://api.column.com/transfers/book/<book_transfer_id>/cancel' \
  -XPOST \
  -u :<YOUR API KEY>

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:24:42.867Z",
  "updated_at": "2021-11-29T20:24:42.867Z",
  "idempotency_key": "string",
  "sender_bank_account_id": "string",
  "sender_account_number_id": "string",
  "receiver_bank_account_id": "string",
  "receiver_account_number_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true
}

Clear a book transfer

POST

/transfers/book/<book_transfer_id>/clear

Clear a book transfer by its ID. Transfer must be in a "hold" state. If the amount is specified, then that amount will be cleared, regardless of the amount of the hold. If no amount is specified, then the amount of the hold will be cleared.

path parameters

Required

body parameters

Optional

Amount (in cents) to clear the hold to. Can be lower or higher than the original amount. If no amount is specified, the hold will be cleared for the original amount on the transfer.

Optional

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

Optional

If true, will cause the clear to overdraft the available balance if the amount is greater than the available balance.

Request

curl 'https://api.column.com/transfers/book/<book_transfer_id>/clear' \
  -u :<YOUR API KEY> \
  -d amount=150000 \
  -d currency_code="USD"

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:24:42.867Z",
  "updated_at": "2021-11-29T20:24:42.867Z",
  "idempotency_key": "string",
  "sender_bank_account_id": "string",
  "sender_account_number_id": "string",
  "receiver_bank_account_id": "string",
  "receiver_account_number_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true
}

Wire transfer object

The wire transfer object represents the current state of a single wire transfer initiated by or received by Column. Wire transfers are used to send and receive money over Fedwire. The wire transfer object exposes all relevant information about the wire transfer to developers. Read about more about wire transfers here.

object parameters

ID of the account number that is sending/receiving the transfer.

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 originator and counterparty accounts.

e.g. $1.75 would be represented by 175

ID of the bank number that is sending/receiving the transfer.

The external account number to which the wire is being sent.

The name of the person who is receiving the wire.

The business function code specified in the wire transfer. Possible business function codes are BTR, CTP, CTR, DRC, or DRW.

The timestamp when the wire was completed.

ID of the counterparty that is receiving/sending the transfer

The timestamp when the wire was created.

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

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

Financial institution to financial institution information, most often used by a FI to explain the reason for a wire reversal. Column will populate this for outgoing reversals. There can be up to six separate parameters, one for each message line.

The unique id of the object.

The idempotency key specified in the wire transfer.

Stands for Input/Output Message Accountability Data. A unique number set by the originating bank given to each FedWire payment when using the Federal Reserve Bank Service and can be used to investigate and track wire transfers. IMAD will not be populated for on-us wire transfers.

The timestamp when the wire was initiated.

Indicates whether the wire transfer was incoming (true or outgoing false)

Indicates whether the wire transfer was between two bank accounts held at Column.

The timestamp when the wire went into the manual review state.

Stands for Input/Output Message Accountability Data. A unique number set by the Fed given to each FedWire payment when using the Federal Reserve Bank Service and can be used to investigate and track wire transfers. OMAD will not be populated for on-us wire transfers.

The external account number from which the wire is originated.

The name of the person or entity that is originating the wire.

The timestamp when the wire was marked PENDING_SUBMISSION.

The previous message identifier included in the raw wire message.

The unstructured beneficiary address extracted from the raw wire message.

The unstructured originator address extracted from the raw wire message

The name of the person / entity that received the wire.

The routing number of the bank that received the wire.

The timestamp when the wire was rejected.

If the transfer is the original transfer of an wire reversal, this field is the unique ID of the reversal transfer. If the transfer is the reversal transfer of a wire reversal, this field is the unique ID of the original transfer. Please refer to Wire Reversals for more details.

The name of the person / entity that sent the wire.

The routing number of the bank that sent the wire.

The sender reference field parsed out from the raw wire message.

The current status of the wire transfer. Possible statuses are INITIATED, PENDING_SUBMISSION, SUBMITTED, COMPLETED, REJECTED, and MANUAL_REVIEW.

The timestamp when the wire was submitted.

The subtype code specified in the wire transfer.

The type code specified in the wire transfer.

The timestamp when the wire was updated.

ID of the wire drawdown request if the wire is sent in response to a wire drawdown request.

Wire Transfer Object

{
  "account_number_id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "allow_overdraft": false,
  "amount": 100000,
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "beneficiary_account_number": "256783259046169",
  "beneficiary_name": "Column account",
  "business_function_code": "CTR"
  "completed_at": "2022-03-02T00:05:54Z",
  "counterparty_id": "cpty_25QihOzMbXhGQVNHQmeIp6UJNnj",
  "created_at": "2022-03-02T00:05:54Z",
  "currency_code": "USD",
  "description": "incoming CTR wire transfer",
  "fi_to_fi_information_line_1": "",
  "fi_to_fi_information_line_2": "",
  "fi_to_fi_information_line_3": "",
  "fi_to_fi_information_line_4": "",
  "fi_to_fi_information_line_5": "",
  "fi_to_fi_information_line_6": "",
  "id": "wire_25o3LGGbxLjpabTm6zHquAM1ti2",
  "idempotency_key": "",
  "imad": "20220301CHASE001000001",
  "initiated_at": "2022-03-02T00:05:54Z",
  "is_incoming": true,
  "is_on_us": false,
  "manual_review_at": null,
  "omad": "20220301MMQFMC2U000001",
  "originator_account_number": "1234567890",
  "originator_name": "Chase account",
  "pending_submission_at": null,
  "previous_message_reference": "",
  "raw_beneficiary_address": "",
  "raw_originator_address": "",
  "receiver_di_name": "Column Bank",
  "receiver_di_routing_number": "091000019",
  "rejected_at": null,
  "reversal_pair_transfer_id": null,
  "sender_di_name": "TestBank",
  "sender_di_routing_number": "322271627",
  "sender_reference": "",
  "status": "COMPLETED",
  "submitted_at": null,
  "subtype_code": "00",
  "type_code": "10",
  "updated_at": "2022-03-02T00:05:54Z",
  "wire_drawdown_request_id":"",
}

Create a wire transfer

POST

/transfers/wire

Create a wire transfer between a Column account and a counterparty.

body parameters

Optional

A description of the transfer visible in people's accounts. This field will be transmitted to the RDFI and is often visible in the beneficiary's statement. Must adhere to Fedwire character validation.

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 account number that is sending the transfer. If this is specified, the bank_account_id does not need to be included.

account_number_id or bank_account_id is required

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

Note: A wire object must be attached to the counterparty. If it is not, this request will fail.

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

Request

curl 'https://api.column.com/transfers/wire' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d description="Example wire transfer" \
  -d amount=10000 \
  -d currency_code="USD" \
  -d bank_account_id="<bank_account_id>" \
  -d counterparty_id="<counterparty_id>"

Response

{
  "id": "wire_2DucXfsrbVzW4GsNMUmFum1eOeP",
  "created_at": "2021-11-29T20:40:19.916Z",
  "updated_at": "2021-11-29T20:40:19.916Z",
  "initiated_at": "2021-11-29T20:40:19.916Z",
  "pending_submission_at": "2021-11-29T20:40:19.916Z",
  "submitted_at": "2021-11-29T20:40:19.916Z",
  "completed_at": "2021-11-29T20:40:19.916Z",
  "rejected_at": "2021-11-29T20:40:19.916Z",
  "idempotency_key": "string",
  "bank_account_id": "string",
  "account_number_id": "string",
  "counterparty_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true,
  "platform_id": "string",
  "is_on_us": true,
  "is_incoming": true,
  "wire_drawdown_request_id":"",
}

List all wire transfers

GET

/transfers/wire

Retrieve all wire transfers under your platform

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:

  • NONE
  • INITIATED
  • PENDING_SUBMISSION
  • SUBMITTED
  • COMPLETED
  • REJECTED
  • MANUAL_REVIEW

Optional

Return transfers that is either incoming or outgoing.

Request

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

Response

{
  "transfers": [
    {
      "id": "string",
      "created_at": "2021-11-29T20:43:16.326Z",
      "updated_at": "2021-11-29T20:43:16.326Z",
      "initiated_at": "2021-11-29T20:43:16.326Z",
      "pending_submission_at": "2021-11-29T20:43:16.326Z",
      "submitted_at": "2021-11-29T20:43:16.326Z",
      "completed_at": "2021-11-29T20:43:16.326Z",
      "rejected_at": "2021-11-29T20:43:16.326Z",
      "idempotency_key": "string",
      "bank_account_id": "string",
      "account_number_id": "string",
      "counterparty_id": "string",
      "amount": int64,
      "currency_code": "string",
      "description": "string",
      "status": "NONE",
      "allow_overdraft": true,
      "platform_id": "string",
      "is_on_us": true,
      "is_incoming": true, 
      "wire_drawdown_request_id":"",
    }
  ],
  "has_more": true
}

Get wire transfer

GET

/transfers/wire/<wire_transfer_id>

Retrieve a single wire transfer by its ID

path parameters

Required

ID of the wire transfer you're looking up.

Request

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

Response

{
  "id": "string",
  "created_at": "2021-11-29T20:44:53.287Z",
  "updated_at": "2021-11-29T20:44:53.287Z",
  "initiated_at": "2021-11-29T20:44:53.287Z",
  "pending_submission_at": "2021-11-29T20:44:53.287Z",
  "submitted_at": "2021-11-29T20:44:53.287Z",
  "completed_at": "2021-11-29T20:44:53.287Z",
  "rejected_at": "2021-11-29T20:44:53.287Z",
  "idempotency_key": "string",
  "bank_account_id": "string",
  "account_number_id": "string",
  "counterparty_id": "string",
  "amount": int64,
  "currency_code": "string",
  "description": "string",
  "status": "NONE",
  "allow_overdraft": true,
  "platform_id": "string",
  "is_on_us": true,
  "is_incoming": true,
  "wire_drawdown_request_id":"",

}

Reverse an incoming wire transfer

POST

/transfers/wire/<wire_transfer_id>/reverse

Reverse an incoming wire transfer received in error. You can read more about Wire Reversals.

path parameters

Required

ID of the original incoming wire transfer you intend to reverse.

body parameters

Required

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

  • invalid_beneficiary_account_number: the beneficiary account number is invalid
  • beneficiary_mismatch: beneficiary information in the wire does not match the corresponding information on the account
  • beneficiary_request: the beneficiary is refusing the wire
  • originator_request: the beneficiary is reversing the wire as per the sender's request

Optional

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

Request

curl 'https://api.column.com/transfers/wire/<wire_transfer_id>/reverse' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d reason="invalid_beneficiary_account_number" \
  -d description="the beneficiary account number does not exist"

Response

{
    "id": "wire_2DucXfsrbVzW4GsNMUmFum1eOeP",
    "created_at": "2021-11-29T20:40:19.916Z",
    "updated_at": "2021-11-29T20:40:19.916Z",
    "initiated_at": "2021-11-29T20:40:19.916Z",
    "pending_submission_at": "2021-11-29T20:40:19.916Z",
    "submitted_at": "2021-11-29T20:40:19.916Z",
    "completed_at": "2021-11-29T20:40:19.916Z",
    "rejected_at": "2021-11-29T20:40:19.916Z",
    "reversal_pair_transfer_id": "wire_2DuchZzpgT8W49QUdepFAKTQMSH",
    "idempotency_key": "string",
    "bank_account_id": "string",
    "account_number_id": "string",
    "counterparty_id": "string",
    "amount": int64,
    "currency_code": "string",
    "description": "string",
    "status": "NONE",
    "allow_overdraft": true,
    "platform_id": "string",
    "is_on_us": false,
    "is_incoming": true,
    "wire_drawdown_request_id":"",
}

Wire drawdown object

The wire drawdown object represents the current state of a single wire drawdown received by Column. Wire drawdowns are used to request a customer send a wire to a verified counterparty.

object parameters

The Column account number id to which the wire drawdown request was made.

Amount (in cents) that will be transferred between originator and counterparty accounts if the wire drawdown is approved.

Column bank account id to which the wire drawdown request was made.

The external account number to which funds will be sent if the wire drawdown request is approved.

The name of the person who will receive funds with via wire if the wire drawdown request is approved.

The counterparty ID, which Column automatically creates, to which funds will be sent if the wire drawdown request is approved.

The beneficiary name to which funds will be sent if the wire drawdown request is approved.

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

The unique id of the wire drawdown request object.

The IMAD included in the wire drawdown request. Stands for Input/Output Message Accountability Data. A unique number set by the originating bank given to each FedWire payment when using the Federal Reserve Bank Service and can be used to investigate and track wire transfers. IMAD will not be populated for on-us wire transfers.

Indicates whether the wire drawdown request is incoming. (true or outgoing false

The message identifier supplied in the wire drawdown request. This is typically the same as the IMAD.

The account number of the originator of the wire drawdown request. This is often different from the beneficiary account number.

The name of the originator who sent the wire drawdown request. This is often different from the beneficiary name.

Free form text where the originator may supply some additional information describing the wire drawdown request.

Date/time at which the wire drawdown request was received (UTC).

The name of the financial institution to which the wire drawdown request was sent.

The routing number of the financial institution to which the wire drawdown request was sent.

The name of the financial institution that sent the wire drawdown request.

The routing number of the financial institution that sent the wire drawdown request.

The status of the wire drawdown request. Possible statuses include received, approved, denied, completed, and rejected.

In the case you need to supplement counterparty information to approve a drawdown, create a new counterparty and pass the resulting ID here. Routing number and account number of the original drawdown request must match.

The wire transfer ID of the outgoing wire transfer should a wire drawdown request be approved.

Wire Drawdown Object

{
  "account_number_id": "acno_2N9g8VZKfCRXItzIV7bev39KlQ5",
  "amount": 100,
  "bank_account_id": "bacc_2N9g8VbA3n5NCh068GQwD5hrlS0",
  "beneficiary_account_number": "403943517509507",
  "beneficiary_counterparty_id": "cpty_2Jq2AyMFZhulLdrlBHcJw17SPGa",
  "beneficiary_name": "Yellen Cocktails, LLC",
  "currency_code": "USD",
  "id": "wdrw_2N9lWiJF2bGit9RGxOuWpAfrnKP",
  "imad": "20230317I1B7032R00000",
  "is_incoming": true,
  "message_identifier": "20230317I1B7032R00000",
  "originator_account_number": "",
  "originator_name": "",
  "originator_to_beneficiary_information": null,
  "received_at": "2023-03-17T19:06:52Z",
  "receiver_di_name": "Yellen Cocktails, LLC",
  "receiver_di_routing_number": "121145307",
  "sender_di_name": "WELLS FARGO SF",
  "sender_di_routing_number": "121000248",
  "status": "received",
  "supplementary_beneficiary_counterparty_id": "",
  "wire_transfer_id": ""
}

Get a wire drawdown request

GET

/transfers/wire/drawdown/<wire_drawdown_request_id>

Retrieves a single wire drawdown request by its ID.

path parameters

Required

ID of the wire drawdown request you're looking up.

Request

curl 'https://api.column.com/transfers/wire/drawdown/<wire_drawdown_request_id>' \
  -u :<YOUR API KEY>

Response

{
  "account_number_id": "acno_2N9g8VZKfCRXItzIV7bev39KlQ5",
  "amount": 100,
  "bank_account_id": "bacc_2N9g8VbA3n5NCh068GQwD5hrlS0",
  "beneficiary_account_number": "403943517509507",
  "beneficiary_counterparty_id": "cpty_2Jq2AyMFZhulLdrlBHcJw17SPGa",
  "beneficiary_name": "Yellen Cocktails, LLC",
  "currency_code": "USD",
  "id": "wdrw_2N9lWiJF2bGit9RGxOuWpAfrnKP",
  "imad": "20230317I1B7032R00000",
  "is_incoming": true,
  "message_identifier": "20230317I1B7032R00000",
  "originator_account_number": "",
  "originator_name": "",
  "originator_to_beneficiary_information": null,
  "received_at": "2023-03-17T19:06:52Z",
  "receiver_di_name": "Yellen Cocktails, LLC",
  "receiver_di_routing_number": "121145307",
  "sender_di_name": "WELLS FARGO SF",
  "sender_di_routing_number": "121000248",
  "status": "received",
  "supplementary_beneficiary_counterparty_id": "",
  "wire_transfer_id": ""
}

Approve a wire drawdown request

POST

/transfers/wire/drawdown/<wire_drawdown_request_id>/approve

Approves a single wire drawdown request by its ID. If approved, an outgoing wire is initiated using the information specified in the drawdown request.

path parameters

Required

ID of the wire drawdown request you're looking up.

body parameters

Optional

In the case you need to supplement counterparty information to approve a drawdown, create a new counterparty and pass the resulting ID here. Routing number and account number of the original drawdown request must match.

Request

curl 'https://api.column.com/transfers/wire/drawdown/<wire_drawdown_request_id>/approve' \
  -X POST \
  -u :<YOUR API KEY>

Response

{
  "account_number_id": "acno_2N9g8VZKfCRXItzIV7bev39KlQ5",
  "amount": 100,
  "bank_account_id": "bacc_2N9g8VbA3n5NCh068GQwD5hrlS0",
  "beneficiary_account_number": "403943517509507",
  "beneficiary_counterparty_id": "cpty_2Jq2AyMFZhulLdrlBHcJw17SPGa",
  "beneficiary_name": "Yellen Cocktails, LLC",
  "currency_code": "USD",
  "id": "wdrw_2N9lWiJF2bGit9RGxOuWpAfrnKP",
  "imad": "20230317I1B7032R00000",
  "is_incoming": true,
  "message_identifier": "20230317I1B7032R00000",
  "originator_account_number": "",
  "originator_name": "",
  "originator_to_beneficiary_information": null,
  "received_at": "2023-03-17T19:06:52Z",
  "receiver_di_name": "Yellen Cocktails, LLC",
  "receiver_di_routing_number": "121145307",
  "sender_di_name": "WELLS FARGO SF",
  "sender_di_routing_number": "121000248",
  "status": "approved",
  "supplementary_beneficiary_counterparty_id": "",
  "wire_transfer_id": "wire_4K8jWiJF3bGit6RHmKuJpWnjpQN"
}

List all wire drawdown requests

GET

/transfers/wire/drawdown

Retrieve all wire drawdowns under your developer account.

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 account number.

Optional

Return results associated with this beneficiary counterparty.

Optional

Return results with this status.

Possible enum values:

  • received
  • approved
  • denied
  • completed
  • rejected

Optional

All wire drawdowns are incoming, and thus is_incoming will be true.

Request

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

Response

{
  "transfers": [
    {
      "account_number_id": "acno_2N9g8VZKfCRXItzIV7bev39KlQ5",
      "amount": 100,
      "bank_account_id": "bacc_2N9g8VbA3n5NCh068GQwD5hrlS0",
      "beneficiary_account_number": "403943517509507",
      "beneficiary_counterparty_id": "cpty_2Jq2AyMFZhulLdrlBHcJw17SPGa",
      "beneficiary_name": "Yellen Cocktails, LLC",
      "currency_code": "USD",
      "id": "wdrw_2N9lWiJF2bGit9RGxOuWpAfrnKP",
      "imad": "20230317I1B7032R00000",
      "is_incoming": true,
      "message_identifier": "20230317I1B7032R00000",
      "originator_account_number": "",
      "originator_name": "",
      "originator_to_beneficiary_information": null,
      "received_at": "2023-03-17T19:06:52Z",
      "receiver_di_name": "Yellen Cocktails, LLC",
      "receiver_di_routing_number": "121145307",
      "sender_di_name": "WELLS FARGO SF",
      "sender_di_routing_number": "121000248",
      "status": "received",
      "supplementary_beneficiary_counterparty_id": "",
      "wire_transfer_id": ""
    }
  ],
  "has_more": true
}

Foreign exchange rate sheet object

The foreign exchange rate sheet object includes FX rates for all foreign currencies that Column supports. This rate sheet is informational only and should be used to display FX rates to your customers. You can read about more about international wires and creating FX quotes here.

object parameters

List of FX rates for all supported currencies.

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

The FX rate used for currency exchange from sell_currency_code to buy_currency_code, including FX rate margin charged by your platform. Read more

The FX rate used for currency exchange from sell_currency_code to buy_currency_code, excluding FX rate margin charged by your platform. Read more

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

The timestamp at which the FX rate was last refreshed.

Foreign currency exchange margin charged by your platform to your customers in Basis Points (BPS). 1 bps equals 0.01%. Read more

Number of supported currencies

Foreign Exchange Rate object

{
  "data": [
    {
        "buy_currency_code": "CNY",
        "rate": "7.181206726",
        "rate_without_margin": "7.188316832",
        "sell_currency_code": "USD",
        "updated_at": "2023-08-30T17:20:17Z"
    },
    {
        "buy_currency_code": "EUR",
        "rate": "0.902563814",
        "rate_without_margin": "0.903457442",
        "sell_currency_code": "USD",
        "updated_at": "2023-08-30T17:20:17Z"
    },
    {
        "buy_currency_code": "JPY",
        "rate": "144.045499505",
        "rate_without_margin": "144.188118812",
        "sell_currency_code": "USD",
        "updated_at": "2023-08-30T17:20:17Z"
    },
    ...
  ],
  "fx_rate_margin_bps": 10,
  "supported_currencies": 138
}

Get FX rate sheet

GET

/transfers/international-wire/fx-rate-sheet

Retrieve the FX rate sheet for all foreign currencies that Column supports.

Request

curl 'https://api.column.com/transfers/international-wire/fx-rate-sheet' \
  -u :<YOUR API KEY>

Response

{
    "data": [
        {
            "buy_currency_code": "CNY",
            "rate": "7.181206726",
            "rate_without_margin": "7.188316832",
            "sell_currency_code": "USD",
            "updated_at": "2023-08-30T17:20:17Z"
        },
        {
            "buy_currency_code": "EUR",
            "rate": "0.902563814",
            "rate_without_margin": "0.903457442",
            "sell_currency_code": "USD",
            "updated_at": "2023-08-30T17:20:17Z"
        },
        {
            "buy_currency_code": "JPY",
            "rate": "144.045499505",
            "rate_without_margin": "144.188118812",
            "sell_currency_code": "USD",
            "updated_at": "2023-08-30T17:20:17Z"
        },
            ...
            ],
            "fx_rate_margin_bps": 10,
            "supported_currencies": 138
}

Foreign exchange quote object

The Foreign Exchange Quote object represents the rate quote for an international wire transfer. Read about more about international wire transfers here.

object parameters

Buy amount (in the smallest unit of the currency) of the quote.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

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

The timestamp when the FX quote was created.

If this quote has not been booked yet, this is the deadline to book it. If this quote has already been booked, this is the deadline to use it to initiate an outgoing transfer. It is set as 16:30 ET on its rate date after it is booked. If this quote is not booked or used for an outgoing transfer after this deadline, it will be automatically canceled.

The ID of the FX quote.

The foreign exchange rate used for currency exchange from sell_currency to buy_currency.

The deadline to use this quote to initiate outgoing transfers. Format: YYYY-MM-DD.

Sell amount (in the smallest unit of the currency) of the quote.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

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

The current status of the FX quote. Possible statuses are:

  • not_booked: the FX quote has been requested but not yet booked. If you want to use it for an outgoing transfer, it must be booked before expired_at.
  • booked: the FX quote has been booked. It can be used for an outgoing transfer before expired_at.
  • canceled: the FX quote has been canceled, and can no longer be used for an outgoing transfer.
  • used: the FX quote has been used for an outgoing transfer.
  • failed: the FX quote is failed to be booked.

The timestamp when the FX quote was updated.

Foreign Exchange Quote Object

{
  "buy_amount": 100000,
  "buy_currency_code": "CNY",
  "created_at": "2022-09-29T19:16:58Z",
  "expired_at": "2022-09-29T19:31:28Z",
  "id": "fxqt_2FSINZ1O21ncdarR7GITr9kAgr6",
  "rate": "6.8546",
  "rate_date": "2022-09-29",
  "sell_amount": 14589,
  "sell_currency_code": "USD",
  "status": "not_booked",
  "updated_at": "2022-09-29T19:16:58.998Z"
}

Request a foreign exchange quote

POST

/transfers/international-wire/fx-rate

Request a foreign exchange quote to exchange USD to other currencies for international wire transfers. Quotas are not booked until they are used in transfer requests.

body parameters

Required

Buy amount (in the smallest unit of the currency) of the quote.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Required

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

Optional

Desired date for this FX quote. Format: YYYY-MM-DD. If buy_currency_code=CAD, max rate dates are one business day after the current dates. For any other currencies, max rate dates are two business days after the current dates.

Optional

By default (i.e., book_directly=false), we will query FX quotes only, and they are not booked until they are used to initiate outgoing transfers before they expire. However, if you need to initiate outgoing transfers after their expiration times (e.g., outgoing funds will not be available until next business day), you can book FX quotes directly by setting book_directly=true. Booked FX quotes will be valid for a few days, depending on their correspondent banks.

A FX quote should be booked only with the intention of completing a transfer. If you do not intend to use a booked FX quote, it should be canceled as soon as possible. You may incur costs associated with canceling booked FX quotes given FX rate fluctuations.

Request

curl https://api.column.com/transfers/international-wire/fx-rate \
  -XPOST \
  -u :<YOUR API KEY> \
  -d buy_amount=100000 \
  -d buy_currency=CNY

Response

{
  "buy_amount": 100000,
  "buy_currency_code": "CNY",
  "created_at": "2022-09-29T19:16:58Z",
  "expired_at": "2022-09-29T19:31:28Z",
  "id": "fxqt_2FSINZ1O21ncdarR7GITr9kAgr6",
  "rate": "6.8546",
  "rate_date": "2022-09-29",
  "sell_amount": 14589,
  "sell_currency_code": "USD",
  "status": "not_booked",
  "updated_at": "2022-09-29T19:16:58.998Z"
}

Get a foreign exchange quote

GET

/transfers/international-wire/fx-rate/<fx_quote_id>

Retrieve a single foreign exchange quote by its ID

path parameters

Required

ID of the foreign exchange quote you're looking up.

Request

curl 'https://api.column.com/transfers/international-wire/fx-rate/fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e' \
  -u :<YOUR API KEY>

Response

{
  "id": "fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e",
  "created_at": "2023-05-03T17:41:48Z",
  "updated_at": "2023-05-03T17:41:48Z",
  "rate": "6.8546",
  "rate_date": "2023-05-05",
  "expired_at": "2023-05-03T17:56:18Z",
  "sell_currency_code": "USD",
  "sell_amount": 14589,
  "buy_currency_code": "CNY",
  "buy_amount": 100000,
  "status": "used"
}

Book a foreign exchange quote

POST

/transfers/international-wire/fx-rate/<fx_quote_id>/book

Book a single foreign exchange quote by its ID. If the quote has already been booked before, it will be returned.

Warning

A FX quote should be booked only with the intention of completing a transfer. If you do not intend to use a booked FX quote, it should be canceled as soon as possible. You may incur costs associated with canceling booked FX quotes given FX rate fluctuations.

path parameters

Required

ID of the foreign exchange quote you're booking.

Request

curl 'https://api.column.com/transfers/international-wire/fx-rate/fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e/book' \
  -XPOST \
  -u :<YOUR API KEY>

Response

{
  "id": "fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e",
  "created_at": "2023-05-03T17:41:48Z",
  "updated_at": "2023-05-03T17:41:48Z",
  "rate": "6.8546",
  "rate_date": "2023-05-05",
  "expired_at": "2023-05-03T17:56:18Z",
  "sell_currency_code": "USD",
  "sell_amount": 14589,
  "buy_currency_code": "CNY",
  "buy_amount": 100000,
  "status": "booked"
}

Cancel a foreign exchange quote

POST

/transfers/international-wire/fx-rate/<fx_quote_id>/cancel

Cancel a single foreign exchange quote by its ID. If the quote has already been used by an outgoing transfer, it cannot be canceled. If the quote has already been canceled before, it will be returned.

Warning

If you do not intend to use a booked FX quote, it should be canceled as soon as possible. You may incur costs associated with canceling booked FX quotes given FX rate fluctuations.

path parameters

Required

ID of the foreign exchange quote you're canceling.

Request

curl 'https://api.column.com/transfers/international-wire/fx-rate/fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e/cancel' \
  -XPOST \
  -u :<YOUR API KEY>

Response

{
  "id": "fxqt_2PIDTFK8uWYeTV1SD9ybNiWMx9e",
  "created_at": "2023-05-03T17:41:48Z",
  "updated_at": "2023-05-03T17:41:48Z",
  "rate": "6.8546",
  "rate_date": "2023-05-05",
  "expired_at": "2023-05-03T17:56:18Z",
  "sell_currency_code": "USD",
  "sell_amount": 14589,
  "buy_currency_code": "CNY",
  "buy_amount": 100000,
  "status": "canceled"
}

International wire transfer object

The international wire transfer object represents the current state of a single international wire transfer initiated by or received by Column. International wire transfers are used to send/receive money to/from outside of the United States via the Swift network. The international wire transfer object exposes all relevant information about the wire transfer to developers. Read about more about international wire transfers here.

object parameters

ID of the account number that is sending/receiving the transfer.

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 the smallest unit of the currency) of the funds that will be debited from the originator account for an outgoing transfer (including all fees), or credited to the beneficiary account for an incoming transfer (after deducting any fees).

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

ID of the bank account that is sending/receiving the transfer.

The account number of the beneficiary.

The address of the beneficiary.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

The Swift BIC code of the beneficiary's financial institution.

The name of the beneficiary.

The reason if the transfer is requested to be canceled (Read more).

The status of cancellation request (Read more). Possible statuses are pending, accepted, and rejected.

The charge bearer code. Can be DEBT, CRED, or SHAR. Read more.

List of fees charged by financial institutions involved in this transfer. These charges are inclusive of both the wire the wire return if applicable. Charges are only listed here if the intermediary and beneficiary banks are part of the SWIFT GPI tracking system.

Charge amount (in the smallest unit of the currency).

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

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

The Swift BIC code of the financial institution that applied the charge. It may be empty as some financial institutions do not provide it.

The amount (in the smallest unit of currency_code) of fixed fee charged by Column for an outgoing transfer. This is not included in the charges field.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

The timestamp when the international wire was completed.

ID of the counterparty that is receiving/sending the transfer.

The timestamp when the international wire was created.

Currency of amount. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

The description of the transfer visible only in your platform.

Unique ID to unambiguously identify the transaction. This ID is passed on, unchanged, throughout the entire end-to-end chain, and can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction.

For example, an originator sent a transfer to pay an invoice. However, its amount is not enough to pay off the balance due to FX fluctuations, fees charged by intermediary banks. The originator may send another transfer with a different uetr, but the same end_to_end_id to link those two transfers.

Note: while uetr is globally unique for each transfer, end_to_end_id is unique only within originating banks (it may be only unique within certain time periods).

The ID of the foreign exchange quote.

The foreign exchange rate used for currency exchange of this transfer, including your platform FX rate margin markup. Read more

The ID of this international wire transfer.

The idempotency key specified in the wire transfer.

The timestamp when the international wire was initiated.

Instructed amount (in the smallest unit of the currency) of the transfer. Read more.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Instructed currency. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

Unique ID assigned by the sender of this message.

Further information for the beneficiary's financial institution.

The Swift BIC codes of intermediary financial institutions.

Indicates whether the wire transfer was incoming (true or outgoing false)

The timestamp when the international wire went into the manual review state.

The account number of the originator.

The address of the originator.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

The Swift BIC code of the originator's financial institution.

The name of the originator.

The timestamp when the international wire was pending for submission.

The amount (in the smallest unit of the currency_code) of fixed fee charged by your platform for an outgoing transfer. This is not included in the charges field.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

The amount (in the smallest unit of the currency_code) of FX fee charged by your platform for an outgoing FX transfer. This is not included in the charges field.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Raw initial transfer message in the Swift MT103 or ISO 20022/MX pacs.008 format. Only populated if it is queried with expand=raw_message parameter.

Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an account's receivable system. We will support more structured information soon (e.g., tax, invoicer, invoicee, etc.). They will be sent in F70 in MT103 messages, or RmtInf in pacs.008.001.xx messages. More details. Must adhere to International Wire character validation .

General information for the beneficiary in an unstructured form. Maximum length: 140 characters.

Reference for the beneficiary (e.g., invoice number) to reconcile this transfer with their internal records. Maximum length: 30 characters.

The reason if this transfer is returned.

The amount (in the smallest unit of the currency) if this transfer is returned. Read more.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

The timestamp when the international wire was returned.

The currency if this transfer is returned. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

Settlement amount (in the smallest unit of the currency) of the transfer. Read more.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Settlement currency. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

The date (in ET time zone) when funds are sent to the beneficiary bank for an outgoing transfer, or received from the originator bank for an incoming transfer. Format: YYYY-MM-DD.

The current status of the international wire transfer. This internal status is different from the tracking status of tracking object (Read more). Possible statuses are initiated, manual_review,pending_submission, submitted, completed,pending_return and returned.

The timestamp when the international wire was submitted to the Swift network.

Universally unique ID to provide an end-to-end reference for this transfer. Format: UUID v4.

The address of the ultimate beneficiary to which this transfer is due.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

The name of the ultimate beneficiary to which this transfer is due.

The address of the ultimate party that owes an amount to the (ultimate) beneficiary.

Address line 1

Address line 2

City

State name. For US addresses, this field is mandatory and 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, ...).

The name of the ultimate party that owes an amount to the (ultimate) beneficiary.

The timestamp when the international wire was updated.

International Wire Transfer Object

{
  "account_number_id": "acno_2F37RhDUnWtB4GD9JXQEDYu7YAY",
  "allow_overdraft": false,
  "amount": "17965",
  "bank_account_id": "bacc_2F37RbG3NZAr7Yn2d1i5hITz9O4",
  "beneficiary_account_number": "1234567890",
  "beneficiary_address": {
    "city": "London",
    "country_code": "GB",
    "line_1": "123 Threadneedle Street",
    "line_2": "",
    "postal_code": "EC2R 8AH",
    "state": "LND"
  },
  "beneficiary_fi": "BKENGB20",
  "beneficiary_name": "Bob Trimble",
  "charge_bearer": "SHAR",
  "charges": [
    {
      "amount": "500",
      "currency_code": "USD",
      "agent": "CLNOUS66"
    },
    {
      "amount": "500",
      "currency_code": "CNY",
      "agent": "CHASGBGLT"
    }
  ],
  "completed_at": null,
  "counterparty_id": "cpty_2ESSJPnpof38GraQR5C6EnfFGKw",
  "created_at": "2022-09-20T21:55:31Z",
  "currency_code": "USD",
  "description": "Swift transfer with CNY",
  "end_to_end_id": "",
  "fx_quote_id": "fxqt_2F3BY6XCpKQUy5cGCqPgLf3Kit7",
  "fx_rate": "6.872100000",
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "idempotency_key": null,
  "initiated_at": "2022-09-20T21:55:31Z",
  "instructed_amount": "123456",
  "instructed_currency_code": "CNY",
  "instruction_id": "XF7MBKI09TUNZXIL",
  "instruction_to_beneficiary_fi": "please contact with the beneficiary before releasing the funds",
  "is_incoming": false,
  "manual_review_at": null,
  "originator_account_number": "366763686659680",
  "originator_address": {
    "city": "San Francisco",
    "country_code": "US",
    "line_1": "12345 Mission St.",
    "line_2": "",
    "postal_code": "94016",
    "state": "CA"
  },
  "originator_fi": "CLNOUS66",
  "originator_name": "Alice Biden",
  "pending_submission_at": "2022-09-20T21:55:32Z",
  "raw_message": null,
  "remittance_info": {
    "general_info": "downpayment for mortgage ID 123546"
  },
  "return_reason": null,
  "returned_amount": null,
  "returned_at": null,
  "returned_currency_code": null,
  "settled_amount": "123456",
  "settled_currency_code": "CNY",
  "settlement_date": "2022-09-20",
  "status": "submitted",
  "submitted_at": "2022-09-20T21:59:16Z",
  "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
  "ultimate_beneficiary_address": null,
  "ultimate_beneficiary_name": "",
  "ultimate_originator_address": null,
  "ultimate_originator_name": "",
  "updated_at": "2022-09-20T22:09:18Z"
}

Create an international wire transfer

POST

/transfers/international-wire

Create an international wire transfer between a Column account and a counterparty. Transfer status can be tracked via the Tracking API.

body parameters

Optional

ID of the account number that is sending the transfer. If this is specified, the bank_account_id does not need to be included.

account_number_id or bank_account_id is required

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

Required

Amount (in the smallest unit of the currency) of the funds that will be transferred between originator and counterparty accounts.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

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

Optional

The charge bearer code. Can be SHAR (default) DEBT, or CRED. Read more.

Required

ID of the counterparty that will receive the transfer

Note: A wire object must be attached to the counterparty. If it is not, this request will fail.

Required

The three-letter currency code defined in ISO 4217. e.g. EUR. If USD is specified as the currency_code we will discard any provided fx_quote_id and send the transfer in USD.

Optional

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

Optional

ID of the foreign exchange quote returned by FX Quote API. If it is not specified, we will automatically book a FX quote for this transfer if the currency is not USD.

Optional

BIC of the intermediary bank. We will route the transfer request to the given intermediary bank. It will then forward the transfer request to the beneficiary bank.

Note: we use the routing table from Swift to decide the optimal routes to beneficiary banks if this parameter is not set. If you set an incorrect intermediary bank that has no routing information to the beneficiary bank, your transfer request will be returned. So please only set this parameter at your risk.

Optional

Further information for the beneficiary's financial institution, which is sent in F72 in MT103 messages, or InstrForCdtrAgt in pacs.008.001.xx messages. Maximum length: 140 characters. Must adhere to International Wire character validation .

Optional

Information supplied to enable the matching of an entry with the items that the transfer is intended to settle, such as commercial invoices in an account's receivable system. We will support more structured information soon (e.g., tax, invoicer, invoicee, etc.). They will be sent in F70 in MT103 messages, or RmtInf in pacs.008.001.xx messages. More details. Must adhere to International Wire character validation .

Optional

General information for the beneficiary in an unstructured form. Maximum length: 140 characters.

Optional

Reference for the beneficiary (e.g., invoice number) to reconcile this transfer with their internal records. Maximum length: 30 characters.

Optional

Purpose code of this transfer. Maximum length: 35 characters. More details.

Request

curl https://api.column.com/transfers/international-wire \
  -XPOST \
  -u :<YOUR API KEY> \
  -d description="Swift transfer with CNY" \
  -d message_to_beneficiary_bank="please contact with the beneficiary before releasing the funds" \
  -d "remittance_info[general_info]"="downpayment for mortgage ID 123546" \
  -d amount=123456 \
  -d currency_code=CNY \
  -d bank_account_id=bacc_2F37RbG3NZAr7Yn2d1i5hITz9O4 \
  -d counterparty_id=cpty_2ESSJPnpof38GraQR5C6EnfFGKw

Response

{
  "account_number_id": "acno_2F37RhDUnWtB4GD9JXQEDYu7YAY",
  "allow_overdraft": false,
  "amount": 17965,
  "bank_account_id": "bacc_2F37RbG3NZAr7Yn2d1i5hITz9O4",
  "beneficiary_account_number": "1234567890",
  "beneficiary_address": {
    "city": "London",
    "country_code": "GB",
    "line_1": "123 Threadneedle Street",
    "line_2": "",
    "postal_code": "EC2R 8AH",
    "state": "LND"
  },
  "beneficiary_fi": "BKENGB20",
  "beneficiary_name": "Bob Trimble",
  "charge_bearer": "SHAR",
  "charges": [
    {
      "amount": 500,
      "currency_code": "USD",
      "agent": "CLNOUS66"
    },
    {
      "amount": 500,
      "currency_code": "CNY",
      "agent": "CHASGBGLT"
    }
  ],
  "completed_at": null,
  "counterparty_id": "cpty_2ESSJPnpof38GraQR5C6EnfFGKw",
  "created_at": "2022-09-20T21:55:31Z",
  "currency_code": "USD",
  "description": "Swift transfer with CNY",
  "end_to_end_id": "",
  "fx_quote_id": "fxqt_2F3BY6XCpKQUy5cGCqPgLf3Kit7",
  "fx_rate": "6.872100000",
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "idempotency_key": null,
  "initiated_at": "2022-09-20T21:55:31Z",
  "instructed_amount": 123456,
  "instructed_currency_code": "CNY",
  "instruction_id": "XF7MBKI09TUNZXIL",
  "instruction_to_beneficiary_fi": "please contact with the beneficiary before releasing the funds",
  "is_incoming": false,
  "manual_review_at": null,
  "originator_account_number": "366763686659680",
  "originator_address": {
    "city": "San Francisco",
    "country_code": "US",
    "line_1": "12345 Mission St.",
    "line_2": "",
    "postal_code": "94016",
    "state": "CA"
  },
  "originator_fi": "CLNOUS66",
  "originator_name": "Alice Biden",
  "pending_submission_at": "2022-09-20T21:55:32Z",
  "raw_message": null,
  "remittance_info": {
    "general_info": "downpayment for mortgage ID 123546"
  },
  "return_reason": null,
  "returned_amount": null,
  "returned_at": null,
  "returned_currency_code": null,
  "settled_amount": 123456,
  "settled_currency_code": "CNY",
  "settlement_date": "2022-09-20",
  "status": "submitted",
  "submitted_at": "2022-09-20T21:59:16Z",
  "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
  "ultimate_beneficiary_address": null,
  "ultimate_beneficiary_name": "",
  "ultimate_originator_address": null,
  "ultimate_originator_name": "",
  "updated_at": "2022-09-20T22:09:18Z"
}

Get international wire transfer

GET

/transfers/international-wire/<swift_transfer_id>

Retrieve a single international wire transfer by its ID

path parameters

Required

ID of the Swift transfer you're looking up.

query parameters

Optional

List of fields to be expanded (format: expand=field_1&expand=field_2&expand=field_3).

  • raw_message: raw initial transfer message in MT103 or ISO 20022/MX pacs.008 format

Request

curl 'https://api.column.com/transfers/international-wire/swft_2F3BYA9aMdHag8iUtsDE8ji0KOK?expand=raw_message' \
  -u :<YOUR API KEY>

Response

{
  "account_number_id": "acno_2F37RhDUnWtB4GD9JXQEDYu7YAY",
  "allow_overdraft": false,
  "amount": 17965,
  "bank_account_id": "bacc_2F37RbG3NZAr7Yn2d1i5hITz9O4",
  "beneficiary_account_number": "1234567890",
  "beneficiary_address": {
    "city": "London",
    "country_code": "GB",
    "line_1": "123 Threadneedle Street",
    "line_2": "",
    "postal_code": "EC2R 8AH",
    "state": "LND"
  },
  "beneficiary_fi": "BKENGB20",
  "beneficiary_name": "Bob Trimble",
  "charge_bearer": "SHAR",
  "charges": [
    {
      "amount": 500,
      "currency_code": "USD",
      "agent": "CLNOUS66"
    },
    {
      "amount": 500,
      "currency_code": "CNY",
      "agent": "CHASGBGLT"
    }
  ],
  "completed_at": null,
  "counterparty_id": "cpty_2ESSJPnpof38GraQR5C6EnfFGKw",
  "created_at": "2022-09-20T21:55:31Z",
  "currency_code": "USD",
  "description": "Swift transfer with CNY",
  "end_to_end_id": "",
  "fx_quota_id": "fxqt_2F3BY6XCpKQUy5cGCqPgLf3Kit7",
  "fx_rate": "6.872100000",
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "idempotency_key": null,
  "initiated_at": "2022-09-20T21:55:31Z",
  "instructed_amount": 123456,
  "instructed_currency_code": "CNY",
  "instruction_id": "XF7MBKI09TUNZXIL",
  "instruction_to_beneficiary_fi": "please contact with the beneficiary before releasing the funds",
  "is_incoming": false,
  "manual_review_at": null,
  "originator_account_number": "366763686659680",
  "originator_address": {
    "city": "San Francisco",
    "country_code": "US",
    "line_1": "12345 Mission St.",
    "line_2": "",
    "postal_code": "94016",
    "state": "CA"
  },
  "originator_fi": "CLNOUS66",
  "originator_name": "Alice Biden",
  "pending_submission_at": "2022-09-20T21:55:32Z",
  "raw_message": null,
  "remittance_info": {
    "general_info": "downpayment for mortgage ID 123546"
  },
  "return_reason": null,
  "returned_amount": null,
  "returned_at": null,
  "returned_currency_code": null,
  "settled_amount": 123456,
  "settled_currency_code": "CNY",
  "settlement_date": "2022-09-20",
  "status": "submitted",
  "submitted_at": "2022-09-20T21:59:16Z",
  "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
  "ultimate_beneficiary_address": null,
  "ultimate_beneficiary_name": "",
  "ultimate_originator_address": null,
  "ultimate_originator_name": "",
  "updated_at": "2022-09-20T22:09:18Z"
}

List all international wire transfers

GET

/transfers/international-wire

Retrieve all international wire transfers under your platform

query parameters

Optional

Return results associated with this bank account.

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/international-wire' \
  -u :<YOUR API KEY>

Response

{
  "transfers": [
    {
      "account_number_id": "acno_2F37RhDUnWtB4GD9JXQEDYu7YAY",
      "allow_overdraft": false,
      "amount": 17965,
      "bank_account_id": "bacc_2F37RbG3NZAr7Yn2d1i5hITz9O4",
      "beneficiary_account_number": "1234567890",
      "beneficiary_address": {
        "city": "London",
        "country_code": "GB",
        "line_1": "123 Threadneedle Street",
        "line_2": "",
        "postal_code": "EC2R 8AH",
        "state": "LND"
      },
      "beneficiary_fi": "BKENGB20",
      "beneficiary_name": "Bob Trimble",
      "charge_bearer": "SHAR",
      "charges": [
        {
          "amount": 500,
          "currency_code": "USD",
          "agent": "CLNOUS66"
        },
        {
          "amount": 500,
          "currency_code": "CNY",
          "agent": "CHASGBGLT"
        }
      ],
      "completed_at": null,
      "counterparty_id": "cpty_2ESSJPnpof38GraQR5C6EnfFGKw",
      "created_at": "2022-09-20T21:55:31Z",
      "currency_code": "USD",
      "description": "Swift transfer with CNY",
      "end_to_end_id": "",
      "fx_quota_id": "fxqt_2F3BY6XCpKQUy5cGCqPgLf3Kit7",
      "fx_rate": "6.872100000",
      "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
      "idempotency_key": null,
      "initiated_at": "2022-09-20T21:55:31Z",
      "instructed_amount": 123456,
      "instructed_currency_code": "CNY",
      "instruction_id": "XF7MBKI09TUNZXIL",
      "instruction_to_beneficiary_fi": "please contact with the beneficiary before releasing the funds",
      "is_incoming": false,
      "manual_review_at": null,
      "originator_account_number": "366763686659680",
      "originator_address": {
        "city": "San Francisco",
        "country_code": "US",
        "line_1": "12345 Mission St.",
        "line_2": "",
        "postal_code": "94016",
        "state": "CA"
      },
      "originator_fi": "CLNOUS66",
      "originator_name": "Alice Biden",
      "pending_submission_at": "2022-09-20T21:55:32Z",
      "raw_message": null,
      "remittance_info": {
        "general_info": "downpayment for mortgage ID 123546"
      },
      "return_reason": null,
      "returned_amount": null,
      "returned_at": null,
      "returned_currency_code": null,
      "settled_amount": 123456,
      "settled_currency_code": "CNY",
      "settlement_date": "2022-09-20",
      "status": "submitted",
      "submitted_at": "2022-09-20T21:59:16Z",
      "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
      "ultimate_beneficiary_address": null,
      "ultimate_beneficiary_name": "",
      "ultimate_originator_address": null,
      "ultimate_originator_name": "",
      "updated_at": "2022-09-20T22:09:18Z"
    }
  ],
  "has_more": true
}

Return an incoming international wire

POST

/transfers/international-wire/<swift_transfer_id>/return

Return an incoming international wire transfer to the originator. Return status can be tracked via the Tracking API.

path parameters

Required

ID of the original incoming international wire transfer you intend to return.

body parameters

Required

Reason for the return. Must be one of the following:

  • incorrect_beneficiary_account: the beneficiary account number is incorrect
  • beneficiary_account_blocked: the beneficiary account is blocked
  • incorrect_amount: transfer amount is not the same as expected by the beneficiary
  • beneficiary_mismatch: beneficiary information in the wire does not match the corresponding information on the account
  • refused_by_beneficiary: the beneficiary refuses to accept this transfer
  • cancellation_requested: the cancellation request from the originator is approved
  • fraud: the transfer is a fraud
  • compliance_rejected: the transfer did not pass compliance check

Optional

Additional information to the originator bank

Request

curl 'https://api.column.com/transfers/international-wire/<swift_transfer_id>/return' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d return_reason="incorrect_beneficiary_account" \
  -d message_to_originator_bank="the beneficiary account number does not exist"

Response

{
  "id": "swft_2IYWtUEUhEhSNXOEPfjzHAxaCzw",
  "idempotency_key": null,
  "bank_account_id": "bacc_2IYWtTssuLNF4DNUoEPUlXmv9iq",
  "account_number_id": "acno_2IYWtWEgx9HtronSv2F5adAzKqS",
  "counterparty_id": "cpty_2IYWtRzthJQiW8SyXcdGWPdqDAJ",
  "status": "pending_return",
  "is_incoming": true,
  "allow_overdraft": false,
  "description": null,
  "fx_quota_id": "",
  "return_reason": "incorrect_beneficiary_account",
  "amount": 2918,
  "currency_code": "USD",
  "instructed_amount": 20000,
  "instructed_currency_code": "CNY",
  "settled_amount": 2918,
  "settled_currency_code": "USD",
  "settlement_date": "2022-12-06",
  "returned_amount": 2918,
  "returned_currency_code": "USD",
  "created_at": "2022-12-06T20:40:12Z",
  "updated_at": "2022-12-06T12:40:11.719-08:00",
  "initiated_at": "2022-12-06T20:40:12Z",
  "pending_submission_at": null,
  "submitted_at": null,
  "completed_at": "2022-12-06T20:40:12Z",
  "returned_at": null,
  "manual_review_at": null,
  "end_to_end_id": null,
  "uetr": "6a4796b7-a97e-43f6-afa1-d98b2ab90be3",
  "fx_rate": "0.145887433",
  "charge_bearer": "CRED",
  "charges": [
    {
      "amount": 1000,
      "currency_code": "USD",
      "agent": ""
    }
  ],
  "originator_name": "John Britain",
  "originator_address": {
    "line_1": "96 Lairg Road",
    "line_2": "",
    "city": "New Winton",
    "state": "",
    "postal_code": "EH33 5ZN",
    "country_code": "GB"
  },
  "originator_account_number": "GB29NWBK60161331926819",
  "originator_fi": "BKENGB22",
  "ultimate_originator_name": "",
  "ultimate_originator_address": null,
  "beneficiary_name": "Alice Milton",
  "beneficiary_address": {
    "line_1": "1 Mission St",
    "line_2": "Apt 202",
    "city": "San Francisco",
    "state": "CA",
    "postal_code": "94110",
    "country_code": "US"
  },
  "beneficiary_account_number": "485989263105726",
  "beneficiary_fi": "CLNOUS66",
  "instruction_id": "XF7MBKI09TUNZXIL",
  "instruction_to_beneficiary_fi": "POP/tax payment",
  "ultimate_beneficiary_name": "",
  "ultimate_beneficiary_address": null,
  "remittance_info": { "general_info": "payment for invoice ABC-123" },
  "raw_message": null
}

Cancel an outgoing international wire

POST

/transfers/international-wire/<swift_transfer_id>/cancel

Send a cancellation request to recall funds from the beneficiary for an outgoing international wire transfer. The beneficiary may approve or reject the cancellation request. Cancellation status can be tracked via the Tracking API.

path parameters

Required

ID of the original outgoing international wire transfer you intend to cancel.

body parameters

Required

Reason for the cancellation. Must be one of the following:

  • incorrect_amount: the transfer amount is incorrect
  • incorrect_currency: the transfer currency is incorrect
  • duplicate: the transfer was sent multiple times by mistake
  • fraud: the transfer is a fraud
  • tech_failure: the transfer was sent by mistake due to technical failures
  • payment_not_justified: the transfer is missing some critical information required to process it successfully
  • requested_by_originator: any other reason requested by the originator

Request

curl 'https://api.column.com/transfers/international-wire/<swift_transfer_id>/cancel' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d cancellation_reason="duplicate"

Response

{
  "account_number_id": "acno_2IYWtWEgx9HtronSv2F5adAzKqS",
  "allow_overdraft": false,
  "amount": 553,
  "bank_account_id": "bacc_2IYWtTssuLNF4DNUoEPUlXmv9iq",
  "beneficiary_account_number": "485989263105726",
  "beneficiary_address": {
    "city": "London",
    "country_code": "GB",
    "line_1": "123 Threadneedle Street",
    "line_2": "",
    "postal_code": "EC2R 8AH",
    "state": "LND"
  },
  "beneficiary_fi": "BKENGB20",
  "beneficiary_name": "Bob Trimble",
  "cancellation_reason": "duplicate",
  "cancellation_status": "pending",
  "charge_bearer": "DEBT",
  "charges": null,
  "column_fixed_fee": 0,
  "completed_at": "2023-08-22T06:52:40Z",
  "counterparty_id": "cpty_2ESSJPnpof38GraQR5C6EnfFGKw",
  "created_at": "2023-08-21T21:45:48Z",
  "currency_code": "USD",
  "description": "test cancellation of outgoing transfer",
  "end_to_end_id": null,
  "fx_quote_id": "fxqt_2F3BY6XCpKQUy5cGCqPgLf3Kit7",
  "fx_rate": "0.904159132",
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "idempotency_key": null,
  "initiated_at": "2023-08-21T21:45:48Z",
  "instructed_amount": 500,
  "instructed_currency_code": "EUR",
  "instruction_id": "TQT1n61SqYWCjhTL",
  "instruction_to_beneficiary_fi": "",
  "intermediary_fis": ["CHASUS33FXS", "CHASDEFX", "BREXPLPW"],
  "is_incoming": false,
  "manual_review_at": null,
  "originator_account_number": "366763686659680",
  "originator_address": {
    "city": "San Francisco",
    "country_code": "US",
    "line_1": "12345 Mission St.",
    "line_2": "",
    "postal_code": "94016",
    "state": "CA"
  },
  "originator_fi": "CLNOUS66",
  "originator_name": "Column NA",
  "pending_submission_at": "2023-08-22T04:00:39Z",
  "platform_fixed_fee": 0,
  "platform_fx_fee": 0,
  "raw_message": null,
  "remittance_info": {
    "beneficiary_reference": "",
    "general_info": "invoice NO. 123456"
  },
  "return_reason": null,
  "returned_amount": null,
  "returned_at": null,
  "returned_currency_code": null,
  "settled_amount": 500,
  "settled_currency_code": "EUR",
  "settlement_date": "2023-08-22",
  "status": "completed",
  "submitted_at": "2023-08-22T04:00:40Z",
  "uetr": "dbfefd8f-0156-4c47-830c-71d4eb1d4226",
  "ultimate_beneficiary_address": null,
  "ultimate_beneficiary_name": "",
  "ultimate_originator_address": null,
  "ultimate_originator_name": "",
  "updated_at": "2023-08-22T17:07:08.383Z"
}

International wire tracking object

Read more.

object parameters

The reason if the transfer is requested to be canceled. Read more.

The latest status of cancellation request (Read more). Can be one of the following:

  • pending: the beneficiary bank is still processing the cancellation request.
  • accepted: the beneficiary bank has accepted the cancellation request. Funds have been returned, or will be returned shortly.
  • rejected: the beneficiary bank has rejected the cancellation request. Funds won't be returned.

The timestamp when the international wire was completed by the beneficiary bank.

The amount (in the smallest unit of the currency) credited to the beneficiary account by the beneficiary bank.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Currency code of the completed amount. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

List of tracking updates of the transfer in ascending order of event timestamp.

The reason if the transfer is requested to be canceled. Read more.

The current status of cancellation request by this event (Read more). Can be one of the following:

  • pending: the beneficiary bank is still processing the cancellation request.
  • accepted: the beneficiary bank has accepted the cancellation request. Funds have been returned, or will be returned shortly.
  • rejected: the beneficiary bank has rejected the cancellation request. Funds won't be returned.

The reason if the cancellation request is still pending or rejected.

The charge bearer code. Can be DEBT, CRED, or SHAR. Read more.

List of fees charged by financial institutions involved in this transfer. These charges are inclusive of both the wire the wire return if applicable. Charges are only listed here if the intermediary and beneficiary banks are part of the SWIFT GPI tracking system.

Charge amount (in the smallest unit of the currency).

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

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

The Swift BIC code of the financial institution that applied the charge. It may be empty as some financial institutions do not provide it.

The foreign exchange rate used for currency exchange by this financial institution.

Instructed amount (in the smallest unit of the currency) of the transfer. Read more.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Instructed currency. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

The Swift BIC code of the instructed financial institution (i.e., the next FI in the routing).

Indicate if this event is for the cover transfer that settles funds. Cover transfer events will not impact the corresponding customer transfer status. Read more

The event ID in the Swift tracking system. Unique per transfer.

Settlement amount (in the smallest unit of the currency) of the transfer.

e.g., 1756 means 1.756 in KWD, 17.56 in USD, or 1756 in JPY.

Settlement currency. The three-letter currency code defined in ISO 4217 (e.g. USD). Read more.

The current transfer status in the Swift tracking system by this event. This tracking status is different from the internal status of international wire object (Read more). Can be one of the following:

  • pending: the transfer is still being processed by an intermediary bank or the beneficiary bank.
  • rejected: the transfer has been rejected by an intermediary bank or the beneficiary bank.
  • completed: the transfer has been processed successfully by the beneficiary bank, and funds have been credited to the beneficiary account.

The reason if the transfer is still pending or rejected.

The tracking event type. Can be one of the following:

  • transfer_initiated: the transfer is initiated
  • transfer_updated: the transfer status is updated
  • transfer_cancellation_requested: the originator has requested to cancel the transfer
  • transfer_cancellation_responded: the cancellation status is updated
  • transfer_cancellation_tracking_updated: the tracking status of cancellation request is updated
  • transfer_return_initiated: the transfer is returned
  • transfer_return_updated: the transfer return status is updated
  • transfer_cover_initiated: the cover transfer is initiated
  • transfer_cover_updated: the cover transfer status is updated
  • transfer_cover_return_initiated: the cover transfer is returned
  • transfer_cover_return_updated: the cover transfer return status is updated

The timestamp when the event was lastly updated by the Swift Tracking system.

The Swift BIC code of the financial institution posting this status update, or the Swift Tracking system (TRCKCHZZXXX).

The ID of this international wire transfer.

The latest transfer status in the Swift tracking system. This tracking status is different from the internal status of international wire object (Read more). Can be one of the following:

  • pending: the transfer is still being processed by an intermediary bank or the beneficiary bank.
  • rejected: the transfer has been rejected by an intermediary bank or the beneficiary bank.
  • completed: the transfer has been processed successfully by the beneficiary bank, and funds have been credited to the beneficiary account.

The reason if the transfer is still pending or rejected.

Universally unique ID to provide an end-to-end reference for this transfer. Format: UUID v4.

The timestamp when the transfer was lastly updated by the Swift tracking system.

International Wire Tracking Object

{
  "cancellation_reason": null,
  "cancellation_status": null,
  "completed_amount": null,
  "completed_at": null,
  "completed_currency_code": null,
  "events": [
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": "DEBT",
      "charges": null,
      "fx_rate": null,
      "instructed_amount": 500,
      "instructed_currency_code": "EUR",
      "instructed_fi": null,
      "network_reference": "20230821CLNOUS66AXXX0161234567",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-08-22T04:01:02Z",
      "updated_by": "CLNOUS66XXX"
    },
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": "DEBT",
      "charges": null,
      "fx_rate": null,
      "instructed_amount": 500,
      "instructed_currency_code": "EUR",
      "instructed_fi": null,
      "network_reference": "swi00004-2023-08-22T04:03:08.44682.781207Z",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-08-22T04:03:33Z",
      "updated_by": "CHASUS33XXX"
    }
  ],
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "transfer_status": "pending",
  "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
  "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
  "updated_at": "2023-08-22T04:03:33Z"
}

Get international wire tracking

GET

/transfers/international-wire/<swift_transfer_id_or_uetr>/tracking

Retrieve the tracking details of an international wire transfer by its ID or UETR. Read more.

path parameters

Required

ID or UETR of the Swift transfer you're looking up.

Request

curl 'https://api.column.com/transfers/international-wire/swft_2F3BYA9aMdHag8iUtsDE8ji0KOK/tracking' \
  -u :<YOUR API KEY>

curl 'https://api.column.com/transfers/international-wire/d6e4313a-e186-4b21-83a5-43fa4cbaa38e/tracking' \
  -u :<YOUR API KEY>

Response

{
  "cancellation_reason": null,
  "cancellation_status": null,
  "completed_amount": 500,
  "completed_at": "2023-08-22T06:09:00Z",
  "completed_currency_code": "EUR",
  "events": [
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": "DEBT",
      "charges": null,
      "fx_rate": null,
      "instructed_amount": 500,
      "instructed_currency_code": "EUR",
      "instructed_fi": null,
      "network_reference": "20230821CLNOUS66AXXX0161234567",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-08-22T04:01:02Z",
      "updated_by": "CLNOUS66XXX"
    },
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": "DEBT",
      "charges": null,
      "fx_rate": null,
      "instructed_amount": 500,
      "instructed_currency_code": "EUR",
      "instructed_fi": null,
      "network_reference": "swi00004-2023-08-22T04:03:08.44682.781207Z",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
      "type": "transfer_initiated",
      "updated_at": "2023-08-22T04:03:33Z",
      "updated_by": "CHASUS33XXX"
    },
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": "DEBT",
      "charges": null,
      "fx_rate": null,
      "instructed_amount": null,
      "instructed_currency_code": null,
      "instructed_fi": null,
      "network_reference": "20230822CHASDEFXEXXX1681234567",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "pending",
      "transfer_status_reason": "Credit transfer has been forwarded to the next bank that does not provide tracking service",
      "type": "transfer_updated",
      "updated_at": "2023-08-22T06:08:00Z",
      "updated_by": "CHASDEFXXXX"
    },
    {
      "cancellation_reason": null,
      "cancellation_status": null,
      "cancellation_status_reason": null,
      "charge_bearer": null,
      "charges": null,
      "fx_rate": null,
      "instructed_amount": null,
      "instructed_currency_code": null,
      "instructed_fi": null,
      "network_reference": "20230822BKENGB20AXXX6667680136",
      "settled_amount": 500,
      "settled_currency_code": "EUR",
      "transfer_status": "completed",
      "transfer_status_reason": null,
      "type": "transfer_updated",
      "updated_at": "2023-08-22T06:10:02Z",
      "updated_by": "BKENGB20XXX"
    }
  ],
  "id": "swft_2F3BYA9aMdHag8iUtsDE8ji0KOK",
  "transfer_status": "completed",
  "transfer_status_reason": null,
  "uetr": "d6e4313a-e186-4b21-83a5-43fa4cbaa38e",
  "updated_at": "2023-08-22T17:22:18Z"
}

Realtime transfer object

The realtime transfer object represents the current state of a single realtime transfer initiated by or received by Column. Realtime transfers are used to send and receive money over FedNow or RTP. The realtime transfer object exposes all relevant information about the realtime transfer to developers. Read about more about realtime transfers here.

object parameters

The timestamp when the realtime was accepted without posting.

ID of the account number that is sending/receiving the transfer.

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 originator and counterparty accounts.

e.g. $1.75 would be represented by 175

ID of the bank number that is sending/receiving the transfer.

The timestamp when the realtime was blocked after accepting without posting.

The timestamp when the realtime was completed.

ID of the counterparty that is receiving/sending the transfer

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 realtime transfer.

The timestamp when the realtime was initiated.

Indicates whether the realtime transfer was incoming (true or outgoing false)

Indicates whether the realtime transfer was between two bank accounts held at Column.

The timestamp when the realtime was approved after manual review.

The timestamp when the realtime went into the manual review state.

The timestamp when the realtime was rejected after manual review.

The timestamp when the realtime was rejected after accept without posting

The current status of the realtime transfer. Possible statuses are initiated, pending, accepted, completed, blocked, rejected, manual_review, manual_review_approved, manual_review_rejected.

Indicates which payment provider was used for the transfer (fednow or rtp)

Universally unique ID to provide an end-to-end reference for this transfer. Format: UUID v4.

Realtime Transfer Object

{
  "accepted_at": "2023-12-29T19:45:11Z",
  "account_number_id": "acno_2XrFelm5efqwGkPsu3B1DtSEDDg",
  "allow_overdraft": false,
  "amount": 10000,
  "bank_account_id": "bacc_2XrFelZxSUOXXTswfr0h9KByzNp",
  "blocked_at": null,
  "completed_at": "2023-12-29T19:45:13Z",
  "counterparty_id": "cpty_2aELmewqaBj5Bp6oraJ7Pl6LH1p",
  "currency_code": "USD",
  "description": "Example realtime transfer",
  "id": "rttr_2aEM6RbzozxcvVY11ArHJw1Ka4E",
  "idempotency_key": null,
  "initiated_at": "2023-12-29T19:45:10Z",
  "is_incoming": false,
  "is_on_us": false,
  "manual_review_approved_at": null,
  "manual_review_at": null,
  "manual_review_rejected_at": null,
  "pending_at": null,
  "rejected_at": null,
  "status": "completed",
  "type": "fednow",
  "uetr": "52330fe7-a9d0-404b-9848-6c925857c3b6"
}

Create a realtime transfer

POST

/transfers/realtime

Create a realtime transfer between a Column account and a counterparty.

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 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 account number that is sending the transfer. If this is specified, the bank_account_id does not need to be included.

account_number_id or bank_account_id is required

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

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

Request

curl 'https://api.column.com/transfers/realtime' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d description="Example realtime transfer" \
  -d amount=10000 \
  -d currency_code="USD" \
  -d bank_account_id="<bank_account_id>" \
  -d counterparty_id="<counterparty_id>"

Response

{
  "accepted_at": "2023-12-29T19:45:11Z",
  "account_number_id": "acno_2XrFelm5efqwGkPsu3B1DtSEDDg",
  "allow_overdraft": false,
  "amount": 10000,
  "bank_account_id": "bacc_2XrFelZxSUOXXTswfr0h9KByzNp",
  "blocked_at": null,
  "completed_at": "2023-12-29T19:45:13Z",
  "counterparty_id": "cpty_2aELmewqaBj5Bp6oraJ7Pl6LH1p",
  "currency_code": "USD",
  "description": "Example realtime transfer",
  "id": "rttr_2aEM6RbzozxcvVY11ArHJw1Ka4E",
  "idempotency_key": null,
  "initiated_at": "2023-12-29T19:45:10Z",
  "is_incoming": false,
  "is_on_us": false,
  "manual_review_approved_at": null,
  "manual_review_at": null,
  "manual_review_rejected_at": null,
  "pending_at": null,
  "rejected_at": null,
  "status": "completed",
  "type": "fednow",
  "uetr": "52330fe7-a9d0-404b-9848-6c925857c3b6"
}

List all realtime transfers

GET

/transfers/realtime

Retrieve all realtime transfers under your platform

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/transfers/realtime' \
  -u :<YOUR API KEY>

Response

{
  "transfers": [
    {
      "accepted_at": "2023-12-29T19:45:11Z",
      "account_number_id": "acno_2XrFelm5efqwGkPsu3B1DtSEDDg",
      "allow_overdraft": false,
      "amount": 10000,
      "bank_account_id": "bacc_2XrFelZxSUOXXTswfr0h9KByzNp",
      "blocked_at": null,
      "completed_at": "2023-12-29T19:45:13Z",
      "counterparty_id": "cpty_2aELmewqaBj5Bp6oraJ7Pl6LH1p",
      "currency_code": "USD",
      "description": "Example realtime transfer",
      "id": "rttr_2aEM6RbzozxcvVY11ArHJw1Ka4E",
      "idempotency_key": null,
      "initiated_at": "2023-12-29T19:45:10Z",
      "is_incoming": false,
      "is_on_us": false,
      "manual_review_approved_at": null,
      "manual_review_at": null,
      "manual_review_rejected_at": null,
      "pending_at": null,
      "rejected_at": null,
      "status": "completed",
      "type": "fednow",
      "uetr": "52330fe7-a9d0-404b-9848-6c925857c3b6"
    }
  ],
  "has_more": true
}

Check transfer object

The check transfer object represents the current state of a single check transfer initiated by or received by Column. Check transfers are used to send and receive money over Check 21-Enabled services. The check transfer object exposes all relevant information about the check transfer to developers. Read about more about check transfers here.

object parameters

ID of the account number that is sending the 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.

Base 64 encoded TIFF image of the back of the deposited check image. This field is not populated in the check transfer object until after the check is deposited.

ID of the bank number that is sending the transfer.

Sequence number of the check.

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

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

Amount (in cents) of the funds that is deposited.

e.g. $1.75 would be represented by 175

Date (format: YYYY-MM-DD) on which the check is deposited (applies only to check deposited at Column).

For issued check, this is the routing number of bank of first deposit

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

Date (format: YYYY-MM-DD) on which the check is returned for the first time.

Base 64 encoded TIFF image of the front of the deposited check image. This field is not populated in the check transfer object until after the check is deposited.

The unique id of the object.

The idempotency key specified in the wire transfer.

The MICR line is the sequence of numbers and characters at the bottom of a check.

Amount of the issued check.

Auxiliary on us. This field is provided by the issuing bank and most commonly used for a check number. In many cases, auxiliary_on_us will be the string before a routing number in the MICR line.

External processing code.

Payor bank routing number.

On us. This field is provided by the issuing bank and most commonly contains both check number and account number. In many cases, on-us will be the string after a routing number in the MICR line.

The name of the person who is receiving the check.

The payee name extracted from the ICL file supplied by the bank of first deposit (for Column issued checks only). This can be compared to the payee name on the issued check to detect fraudulently altered checks. Not guaranteed to be accurate.

Date (format: YYYY-MM-DD) on which the check was pending deposit.

Date (format: YYYY-MM-DD) on which the check was pending first return.

Date (format: YYYY-MM-DD) on which the user initiates the return.

Amount (in cents) of the issued check that will be used in positive pay validation if account number is provided.

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

Date (format: YYYY-MM-DD) on which the check was recleared.

Date (format: YYYY-MM-DD) on which the check was returned for the second time.

Date (format: YYYY-MM-DD) on which the check was settled.

The current status of the check transfer. Possible statuses are initiated, issued,manual_review, rejected, pending_deposit, pending_stop,deposited, stopped, pending_first_return, pending_second_return,first_return, pending_reclear, recleared, second_return, settled,returned, pending_user_initiated_return, user_initiated_return_submitted,user_initiated_returned , and pending_user_initiated_return_dishonored.

Date (format: YYYY-MM-DD) on which the check was stopped.

Date (format: YYYY-MM-DD) on which funds locked for a check in a pending_stop state are made available.

Check transfer type. For checks deposited at Column, this is credit. For checks issued by Column and deposited at another FI, this is debit. Learn more here.

The timestamp at which the Check transfer was lastly updated.

Date (format: YYYY-MM-DD) on which the user initiated return is submitted to the Fed.

Date (format: YYYY-MM-DD) on which the user initiated return is completed.

Date (format: YYYY-MM-DD) on which the user initiated return is dishonored.

For issued check, whether this check is also mailed by Column.

Message to the payee. Only available for checks delivered by Column.

Memo on the check. Only available for checks delivered by Column.

The receiving address of the check. Only available for checks delivered by Column.

Address line 1

Address line 2

City

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

Postal code

Only US is allowed for now.

The current delivery status of the check delivered by Column. Possible statuses are created,mailed, in_transit, in_local_area,processed_for_delivery, delivered, failed, rerouted, and returned_to_sender.

For check delivered by Column, whether the preview PDF is ready to be downloaded.

Check Transfer Object

{
  "account_number_id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "back_image":"<base 64 encoded string>"
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "check_number": "1",
  "created_at": "2022-03-02T00:05:54Z",
  "currency_code": "USD",
  "delivered_by_column": false,
  "delivery_status": null,
  "deposited_amount": "100000",
  "deposited_amount": int64,
  "deposited_at": null,
  "description": "incoming check transfer",
  "external_routing_number":"<BOFD routing number>",
  "extracted_payee_name":"Alex Gold",
  "first_return_at": null,
  "front_image":"<base 64 encoded string>"
  "id": "chkt_25o3LGGbxLjpabTm6zHquAM1ti2",
  "idempotency_key": "",
  "is_preview_pdf_available":false,
  "issued_at": "2023-03-02T00:05:54Z",
  "manual_review_at": null,
  "memo": null,
  "message": null,
  "micr_line": {
    "amount_field": "100000",
    "auxiliary_on_us": "1001",
    "external_processing_code": "",
    "payor_bank_routing_number": "322271627",
    "on_us": "12345678910"
  },
  "payee_address": null,
  "payee_name": "Olive Column",
  "pending_deposit_at": "2022-03-02T00:05:54Z",
  "pending_first_return_at": null,
  "pending_stop_at": null,
  "pending_user_initiated_return_at": null,
  "positive_pay_amount": int64,
  "reclear_at": null,
  "rejected_at": null,
  "second_return_at": null,
  "settled_at": "2022-03-02T00:05:54Z",
  "status": "settled",
  "stopped_at": null,
  "type": "debit",
  "updated_at": "2022-03-02T00:05:54Z",
  "user_initiated_returned_at": null
}

Issue a check

POST

/transfers/checks/issue

Issue a check to a specific payee for a given amount. If mail_check_request is included, the check will be delivered by Column too.

body parameters

Required

ID of the bank account from which the check will be issued.

account_number_id or bank_account_id is required.

Optional

Account number from which the check will be issued. 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.

Optional

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

Required

Amount (in cents) of the issued check that will be used in positive pay validation if account number is provided.

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

Required

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

Required

Name of the payee or recipient of the issued check.

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.

Optional

Optional field to have Column to mail the check for you.

Required

Message to the payee. Maximum length: 400 characters.

Optional

Memo on the check. Maximum length: 40 characters.

Optional

Optional - Document ID of a check_attachment document. If provided, the document will be printed and included in the envelope. See Check Issuing, Printing and Mailing and Upload a document for more information.

Required

The receiving address of the check.

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

Only US is allowed for now.

Required

Payor name to be printed on the check. Maximum length: 40 characters.

Optional

"Courtesy of" line printed after payor name on the check. Maximum length: 40 characters.

Required

The payor address to be printed on the check.

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

Only US is allowed for now.

Optional

Signer of the check. Maximum length: 30 characters.

Request

curl 'https://api.column.com/transfers/checks/issue' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d bank_account_id="<bank_account_id>" \
  -d positive_pay_amount=100000 \
  -d currency_code="USD" \
  -d payee_name="Oliver Hockey"

Response

{
  "account_number_id": "acno_2Nc1pSb55eCJ7YxQnzCVis9OXrv",
  "back_image": null,
  "bank_account_id": "bacc_2Nc1pNdlOtyKM0SzfemCyHsWUn5",
  "check_number": 1003,
  "created_at": "2023-06-16T18:09:00.61936799Z",
  "currency_code": "USD",
  "delivered_by_column": false,
  "delivery_status": null,
  "deposited_amount": null,
  "deposited_at": null,
  "description": null,
  "external_routing_number": null,
  "first_return_at": null,
  "front_image": null,
  "id": "chkt_2RIYDHnZCWKEYyU12qhTpjsVmzy",
  "idempotency_key": null,
  "is_preview_pdf_available": false,
  "issued_at": "2023-06-16T18:09:00.653492083Z",
  "manual_review_at": null,
  "memo": null,
  "message": null,
  "micr_line": {
    "amount_field": "100000",
    "auxiliary_on_us": "1003",
    "external_processing_code": "",
    "on_us": "199175569013840",
    "payor_bank_routing_number": "121145307"
  },
  "payee_address": null,
  "payee_name": "Oliver Hockey",
  "pending_deposit_at": null,
  "pending_first_return_at": null,
  "pending_stop_at": null,
  "pending_user_initiated_return_at": null,
  "positive_pay_amount": "100000",
  "reclear_at": null,
  "rejected_at": null,
  "second_return_at": null,
  "settled_at": null,
  "status": "issued",
  "stopped_at": null,
  "type": "debit",
  "updated_at": "2023-06-16T18:09:00.654Z",
  "user_initiated_return_submitted_at": null,
  "user_initiated_returned_at": null,
  "user_initiated_return_dishonored_at": null
}

Get a check preview PDF for issued transfer

GET

/transfers/checks/<check_transfer_id>/preview-pdf

Get a preview PDF for a transfer. Only available for check delivered by Column

path parameters

Required

ID of the check transfer you're looking up.

Request

curl 'https://api.column.com/transfers/checks/<check_transfer_id>/preview-pdf' \
  -u :<YOUR API KEY>

Response

PDF Binary

Get a check transfer

GET

/transfers/checks/<check_transfer_id>

Retrieve a single check transfer by its ID.

path parameters

Required

ID of the check transfer you're looking up.

Request

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

Response

{
  "account_number_id": "acno_2Nc1pSb55eCJ7YxQnzCVis9OXrv",
  "back_image": null,
  "bank_account_id": "bacc_2Nc1pNdlOtyKM0SzfemCyHsWUn5",
  "check_number": 1003,
  "created_at": "2023-06-16T18:09:00.61936799Z",
  "currency_code": "USD",
  "delivered_by_column": false,
  "delivery_status": null,
  "deposited_amount": null,
  "deposited_amount": 100000,
  "deposited_at": null,
  "description": null,
  "external_routing_number": null,
  "first_return_at": null,
  "front_image": null,
  "id": "chkt_2RIYDHnZCWKEYyU12qhTpjsVmzy",
  "idempotency_key": null,
  "is_preview_pdf_available": false,
  "issued_at": "2023-06-16T18:09:00.653492083Z",
  "manual_review_at": null,
  "memo": null,
  "message": null,
  "micr_line": {
    "amount_field": "100000",
    "auxiliary_on_us": "1003",
    "external_processing_code": "",
    "on_us": "199175569013840",
    "payor_bank_routing_number": "121145307"
  },
  "payee_address": null,
  "payee_name": "Olive Column",
  "pending_deposit_at": null,
  "pending_first_return_at": null,
  "pending_stop_at": null,
  "pending_user_initiated_return_at": null,
  "positive_pay_amount": 100000,
  "reclear_at": null,
  "rejected_at": null,
  "second_return_at": null,
  "settled_at": null,
  "status": "issued",
  "stopped_at": null,
  "type": "debit",
  "updated_at": "2023-06-16T18:09:00.654Z",
  "user_initiated_return_submitted_at": null,
  "user_initiated_returned_at": null,
  "user_initiated_return_dishonored_at": null
}

List all check transfer

GET

/transfers/checks

Retrieve all check transfers on your platform.

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/checks' \
  -u :<YOUR API KEY>

Response

{
  "transfers":[
    {
      "account_number_id": "acno_2Nc1pSb55eCJ7YxQnzCVis9OXrv",
      "back_image": null,
      "bank_account_id": "bacc_2Nc1pNdlOtyKM0SzfemCyHsWUn5",
      "check_number": 1003,
      "created_at": "2023-06-16T18:09:00.61936799Z",
      "currency_code": "USD",
      "delivered_by_column": false,
      "delivery_status": null,
      "deposited_amount": null,
      "deposited_at": null,
      "description": null,
      "external_routing_number": null,
      "first_return_at": null,
      "front_image": null,
      "id": "chkt_2RIYDHnZCWKEYyU12qhTpjsVmzy",
      "idempotency_key": null,
      "is_preview_pdf_available": false,
      "issued_at": "2023-06-16T18:09:00.653492083Z",
      "manual_review_at": null,
      "memo": null,
      "message": null,
      "micr_line": {
        "amount_field": "100000",
        "auxiliary_on_us": "1003",
        "external_processing_code": "",
        "on_us": "199175569013840",
        "payor_bank_routing_number": "121145307"
      },
      "payee_address": null,
      "payee_name": "Olive Column",
      "pending_deposit_at": null,
      "pending_first_return_at": null,
      "pending_stop_at": null,
      "pending_user_initiated_return_at": null,
      "positive_pay_amount": "100000",
      "reclear_at": null,
      "rejected_at": null,
      "second_return_at": null,
      "settled_at": null,
      "status": "issued",
      "stopped_at": null,
      "type": "debit",
      "updated_at": "2023-06-16T18:09:00.654Z",
      "user_initiated_return_submitted_at": null,
      "user_initiated_returned_at": null,
      "user_initiated_return_dishonored_at": null
    }
  ]
  "has_more": true
}

Stop a check transfer

POST

/transfers/checks/<check_transfer_id>/stop-payment

Create a stop payment on a single check transfer by its ID. A check can only be stopped if it is of type debit and is in issued or manual_review status. A stopped check will move into a pending_stop status with a pending_stop_at timestamp until funds are released, at which point the status will be stopped and the stopped_at timestamp will be set.

path parameters

Required

ID of the check transfer you're looking up.

Request

curl 'https://api.column.com/transfers/checks/<check_transfer_id>/stop-payment' \
  -XPOST \
  -u :<YOUR API KEY>

Response

{
  "account_number_id": "acno_2Nc1pSb55eCJ7YxQnzCVis9OXrv",
  "back_image": null,
  "bank_account_id": "bacc_2Nc1pNdlOtyKM0SzfemCyHsWUn5",
  "check_number": 1003,
  "created_at": "2023-06-16T18:09:00.61936799Z",
  "currency_code": "USD",
  "delivered_by_column": false,
  "delivery_status": null,
  "deposited_amount": null,
  "deposited_at": null,
  "description": null,
  "external_routing_number": null,
  "first_return_at": null,
  "front_image": null,
  "id": "chkt_2RIYDHnZCWKEYyU12qhTpjsVmzy",
  "idempotency_key": null,
  "is_preview_pdf_available": false,
  "issued_at": "2023-06-16T18:09:00.653492083Z",
  "manual_review_at": null,
  "memo": null,
  "message": null,
  "micr_line": {
    "amount_field": "100000",
    "auxiliary_on_us": "1003",
    "external_processing_code": "",
    "on_us": "199175569013840",
    "payor_bank_routing_number": "121145307"
  },
  "payee_address": null,
  "payee_name": "Olive Column",
  "pending_deposit_at": null,
  "pending_first_return_at": null,
  "pending_stop_at": "2023-06-16T18:09:00.654Z",
  "pending_user_initiated_return_at": null,
  "positive_pay_amount": "100000",
  "reclear_at": null,
  "rejected_at": null,
  "second_return_at": null,
  "settled_at": null,
  "status": "pending_stop",
  "stopped_at": null,
  "type": "debit",
  "updated_at": "2023-06-16T18:09:00.654Z",
  "user_initiated_return_submitted_at": null,
  "user_initiated_returned_at": null,
  "user_initiated_return_dishonored_at": null
}

Deposit a check

POST

/transfers/checks/deposit

Deposit a check into a Column bank account.

body parameters

Required

ID of the bank account to which the check will be deposited.

account_number_id or bank_account_id is required.

Optional

Account number to which the check will be deposited. 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.

Optional

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

Required

Amount (in cents) of the check that is being deposited.

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

Required

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

Required

The MICR line is the sequence of numbers and characters at the bottom of a check.

Optional

Amount of the issued check.

Optional

Auxiliary on us. This field is provided by the issuing bank and most commonly used for a check number. In many cases, auxiliary_on_us will be the string before a routing number in the MICR line.

Optional

External processing code.

Required

Payor bank routing number.

Required

On us. This field is provided by the issuing bank and most commonly contains both check number and account number. In many cases, on-us will be the string after a routing number in the MICR line.

Required

Base64 encoded image of the front of the check. The image should be cropped along the edges of the check and oriented correctly.

Required

Base64 encoded image of the back of the check. The image should be cropped along the edges of the check and oriented correctly.

Request

curl 'https://api.column.com/transfers/checks/deposit' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d bank_account_id="<bank_account_id>" \
  -d deposited_amount=50000 \
  -d currency_code="USD" \
  -d micr_line[auxiliary_on_us]="1" \
  -d micr_line[on_us]="1" \
  -d micr_line[payor_bank_routing_number]="123456789" \
  -d image_front="<base64_encoded_image>" \
  -d image_back="<base64_encoded_image>"

Response

{
  "account_number_id": "acno_25nacNsLD8qLI1Vc6x67sxFU27c",
  "back_image":"<base 64 encoded string>"
  "bank_account_id": "bacc_25nVQr05nZybpyEzw8j0wV6VRUh",
  "check_number": "1001",
  "created_at": "2022-03-02T00:05:54Z",
  "currency_code": "USD",
  "delivered_by_column": false,
  "delivery_status": null,
  "deposited_amount": "100000",
  "deposited_at": "2022-03-02T00:05:54Z",
  "description": "deposited check transfer",
  "external_routing_number": "<payor bank routing number>",
  "first_return_at": null,
  "front_image":"<base 64 encoded string>"
  "id": "chkt_25o3LGGbxLjpabTm6zHquAM1ti2",
  "idempotency_key": "",
  "is_preview_pdf_available": false,
  "issued_at": null,
  "manual_review_at": null,
  "memo": null,
  "message": null,
  "micr_line": {
    "amount_field": "100000",
    "auxiliary_on_us": "1001",
    "external_processing_code": "",
    "payor_bank_routing_number": "322271627",
    "on_us": "12345678910"
  },
  "payee_address": null,
  "payee_name": "Olive Column",
  "pending_deposit_at": "2022-03-02T00:05:54Z",
  "pending_first_return_at": null,
  "pending_stop_at": null,
  "pending_user_initiated_return_at": null,
  "positive_pay_amount": null,
  "reclear_at": null,
  "rejected_at": null,
  "second_return_at": null,
  "settled_at": "2022-03-02T00:05:54Z",
  "status": "settled",
  "stopped_at": null,
  "deposited_amount": 50000,
  "rejected_at": null,
  "status": "pending_deposit",
  "type": "credit",
  "updated_at": "2022-03-02T00:05:54Z",
  "user_initiated_return_submitted_at": null,
  "user_initiated_returned_at": null,
  "user_initiated_return_dishonored_at": null
}

Capture front of check

POST

/transfers/checks/image/front

Preprocess an image of the front of a check. The response is going to include the parsed MICR Line data, deposit amount, and a processed TIFF image that conforms to the ICL file standard. The response fields are in the same format as the input of the check deposit API.

We recommend placing the check on a darker background, such as a darker shade if the check paper is white. The check itself should occupy the majority of the image. Additionally, we suggest using a higher DPI to ensure that the characters are easily recognizable. It is also advisable to correctly orient the check.

Note that the MICR and amount parsing is still in Beta. We recommend you validate parsed data with the user before submitting a check deposit.

body parameters

Required

An image file to upload (maximum size: 16MB). Most common image types are supported (PNG, JPEG, HEIC, TIFF, etc.). The file should follow the specifications of RFC 2388 for multipart/form-data protocol.

Request

curl 'https://api.column.com/transfers/checks/image/front' \
  -u :<YOUR API KEY> \
  -F file=@<YOUR FILE> \

Response

{
  "image_front": "<base64_encoded_tiff_image>"
  "micr_line": {
    "amount_field": "50000",
    "auxiliary_on_us": "1",
    "on_us": "string",
    "payor_bank_routing_number": "string"
  },
  "micr_line_confidence": 0.99,
  "deposited_amount": "50000",
  "deposited_amount_confidence": 0.99,
  "receiver_name": "string",
  "receiver_name_confidence": 0.99,
  "receiver_address": "string",
  "receiver_address_confidence": 0.99,
}

Capture back of check

POST

/transfers/checks/image/back

Preprocess an image of the back of a check. The response is going to include a processed TIFF image that conforms to the ICL file standard. The response fields are in the same format as the input of the check deposit API.

We recommend placing the check on a darker background, such as a darker shade if the check paper is white. The check itself should occupy the majority of the image. Additionally, we suggest using a higher DPI to ensure that the characters are easily recognizable. It is also advisable to correctly orient the check.

Note that the MICR and amount parsing is still in Beta. We recommend you validate parsed data with the user before submitting a check deposit.

body parameters

Required

An image file to upload (maximum size: 16MB). Most common image types are supported (PNG, JPEG, HEIC, TIFF, etc.). The file should follow the specifications of RFC 2388 for multipart/form-data protocol.

Request

curl 'https://api.column.com/transfers/checks/image/back' \
  -u :<YOUR API KEY> \
  -F file=@<YOUR FILE> \

Response

{
  "image_back": "<base64_encoded_tiff_image>"
}

Check return object

The check return object represents the current state of a single check return initiated by or received by Column. The check return object exposes all relevant information about the check return to developers. Read about more about check returns here.

object parameters

ID of the check transfer that has been returned.

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

The unique id of the check return object.

The reason for which the check was returned.

The current status of the check return. Possible statuses are scheduled andprocessed.

The timestamp at which the check return was last updated.

Check Return Object

{
  "check_transfer_id": "chkt_2Mk9STaPIGvIPJFy2DTBmcQhGWr",
  "created_at": "2023-03-08T19:22:01Z",
  "id": "chrt_2MkEkAVdv0Cc80AJAzgq5QxXEk5",
  "return_reason": "Q",
  "status": "processed",
  "updated_at": "2023-03-08T20:00:33Z"
}

Create a check return

POST

/transfers/checks/<check_transfer_id>/return

Submit a request to return an incoming check transfer received from an ODFI. At most only one return request can be submitted for each check. You can read more about check returns here.

path parameters

Required

ID of the check transfer you're looking up.

body parameters

Required

Return reason for a manual return. Only Q and N are allowed as manual return reasons.

Request

curl 'https://api.column.com/transfers/checks/<check_transfer_id>/return' \
  -XPOST \
  -u :<YOUR API KEY>

Response

{}

Get check transfer returns

GET

/transfers/checks/<check_transfer_id>/returns

Retrieve all returns for a check transfer by the check transfer ID.

path parameters

Required

ID of the check transfer for which you're looking up returns.

Request

curl 'https://api.column.com/transfers/checks/<check_transfer_id>/returns' \
  -u :<YOUR API KEY>

Response

{
  "returns": [
    {
      "check_transfer_id": "chkt_2Mk9STaPIGvIPJFy2DTBmcQhGWr",
      "created_at": "2023-03-08T19:22:01Z",
      "id": "chrt_2MkEkAVdv0Cc80AJAzgq5QxXEk5",
      "return_reason": "Q",
      "status": "processed",
      "updated_at": "2023-03-08T20:00:33Z"
    }
  ],
  "has_more": false
}

List all check returns

GET

/transfers/checks/returns

Retrieve the return processing details of all check returns under your platform, including returns created by you and other financial institutions.

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/checks/returns' \
  -u :<YOUR API KEY>

Response

{
  "returns": [
    {
      "check_transfer_id": "chkt_2NcEI6o0cH76Lk5HA0YmKyCeFiJ",
      "created_at": "2023-03-29T00:00:13Z",
      "id": "chrt_2NfH37IJo3cDiodHYlIcKGHhaQL",
      "return_reason": "A",
      "status": "processed",
      "updated_at": "2023-03-29T00:00:29Z"
    },
    {
      "check_transfer_id": "chkt_2NcKdWa6FQZ9wZ8ZNX8gijPjGXU",
      "created_at": "2023-03-27T23:00:17Z",
      "id": "chrt_2NcKdYxShVu8tl8DAxNPljMbdeG",
      "return_reason": "Y",
      "status": "processed",
      "updated_at": "2023-03-28T00:00:31Z"
    },
  ],
  "has_more": false
}

Receive an ACH Credit

POST

/simulate/receive-ach-credit

Simulates an incoming ACH Credit transfer to an account for the amount specified

To more accurately represent a production environment, we process incoming ACH transfers every hour. You will not see the effects of an incoming ACH transfer till the ACH is processed.

body parameters

Required

Identifier for the account to credit or debit

Required

Amount (in cents) to credit or debit the account

e.g. $1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/receive-ach-credit' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d destination_account_number_id="<destination_account_number_id>" \
  -d amount="100000" \
  -d currency_code="USD"

Response

{}

Receive an ACH Debit

POST

/simulate/receive-ach-debit

Simulates an incoming ACH Debit transfer from an account for the amount specified.

To more accurately represent a production environment, we process incoming ACH transfers every hour. You will not see the effects of an incoming ACH transfer till the ACH is processed.

body parameters

Required

Identifier for the account to credit or debit

Required

Amount (in cents) to credit or debit the account

e.g. $1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/receive-ach-debit' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d destination_account_number_id="<destination_account_number_id>" \
  -d amount="100000" \
  -d currency_code="USD"

Response

{}

Receive a Wire Transfer

POST

/simulate/receive-wire

Simulates an incoming wire transfer to an account for the amount specified.

We recommend using this API to set a balance on your account in the sandbox environment. This API is always enabled, and is not affected by the operating hours of the sandbox FedWire system.

body parameters

Required

Identifier for the account to credit

Required

Amount (in cents) to credit the account

e.g. $1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/receive-wire' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d destination_account_number_id="<destination_account_number_id>" \
  -d amount="100000" \
  -d currency_code="USD"

Response

{}

Receive an international wire

POST

/simulate/receive-international-wire

Simulates an incoming international wire transfer to an account for the amount specified.

body parameters

Required

Identifier for the account to credit

Required

Amount (in the smallest unit of the currency) to credit the account.

e.g. CNY 1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/receive-international-wire' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d destination_account_number_id="<destination_account_number_id>" \
  -d amount="100000" \
  -d currency_code="CNY"

Response

{}

Receive a wire drawdown request

POST

/simulate/receive-wire-drawdown-request

Simulates an incoming wire drawdown request into the specified account number id.

body parameters

Required

Identifier for Column bank account which the drawdown request will be processed from

Required

Amount (in cents) specified in the drawdown request

e.g. $1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/receive-wire-drawdown-request' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d account_number_id="<account_number_id>" \
  -d amount="100000" \
  -d currency_code="USD"

Response

{}

Receive a Realtime Transfer

POST

/simulate/transfers/realtime/receive-credit

Simulates an incoming realtime transfer to an account for the amount specified.

body parameters

Required

Identifier for the account to credit

Required

Amount (in cents) to credit the account

e.g. $1.75 would be represented by 175

Required

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

Request

curl 'https://api.column.com/simulate/transfers/realtime/receive-credit' \
  -X POST \
  -u :<YOUR API KEY> \
  -d destination_account_number_id="<destination_account_number_id>" \
  -d amount="100000" \
  -d currency_code="USD"

Response

{}

Settle ACH transfer

POST

/simulate/transfers/ach/settle

Forces the settlement of an outgoing ACH transfer, regardless of the operating hours of the Sandbox Fed

body parameters

Required

ID of the outgoing transfer to force a settlement

Request

curl 'https://api.column.com/simulate/transfers/ach/settle' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d ach_transfer_id="<ach_transfer_id>"

Response

{}

Settle wire transfer

POST

/simulate/transfers/wire/settle

Forces the submission and settlement of an outgoing Wire transfer, regardless of the operating hours of the Sandbox Fed.

The wire message should move from PENDING_SUBMISSION to COMPLETED after this API call

body parameters

Required

ID of the outgoing transfer to force a settlement

Request

curl 'https://api.column.com/simulate/transfers/wire/settle' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d wire_transfer_id="<wire_transfer_id>"

Response

{}

Settle check deposit

POST

/simulate/transfers/checks/settle

Forces the settlement of a deposited check. After a check is deposited in sandbox, it is going to move from a pending_deposit state to a deposited state within an hour to simulate check forwarding to the Fed. This endpoint allows you to force settlement after the check is transitioned to a deposited state. This will transition the transfer to settled and make funds available immediately.

body parameters

Required

ID of the check transfer

Request

curl 'https://api.column.com/simulate/transfers/checks/settle' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d check_transfer_id="<wire_transfer_id>"

Response

{}

Deposit an issued check

POST

/simulate/deposit-issued-check

Simulates the deposit of an issued check. This API is always enabled, and is not affected by the operating hours of the sandbox FedWire system.

body parameters

Required

Identifier for the issued check transfer to settle.

Request

curl 'https://api.column.com/simulate/deposit-issued-check' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d check_transfer_id="<check_transfer_id>" \

Response

{}

List all transfers

GET

/transfers

Returns all ACH, Wire, and Book transfers, both incoming and outgoing. Transfers are sorted from newest to oldest (transfers created within the same second are sorted alphabetically by transfer ID). The transfer type is specified in the type field, which is one of ach_credit, ach_debit, wire, swift, check_debit, and book.

The is_incoming field is used to flag incoming transfers. The sender is the originator of the transfer for ach_debit, ach_credit, wire, and swift transfers. For incoming transfers, external_source and receiver_internal_account will be returned. For outgoing transfers, external_source and sender_internal_account will be returned.

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 of the given transfer type (accepts multiple values, comma separated)

Possible enum values:

  • ach_debit
  • ach_credit
  • book
  • check
  • swift
  • wire

Optional

Return results where this bank account is either sender or receiver of the transfer.

Optional

Return results where this bank account is a sender of the transfer.

Optional

Return results where this bank account is a receiver of the transfer.

Optional

Return results where this account number is either sender or receiver of the transfer.

Optional

Return results where this account number is a sender of the transfer.

Optional

Return results where this account number is a receiver of the transfer.

Optional

Return results associated with this counterparty.

Optional

Return results associated with this transfer_id (of any type)

Optional

Return results with transfers matching the description.

Optional

Return results with transfers matching the amount.

Optional

Return results with transfers that have the amount greater than the value (in smallest currency unit)

Optional

Return results with transfers that have the amount lesser than the value (in smallest currency unit)

Optional

Return results that have the amount greater or equal than the value (in smallest currency unit)

Optional

Return results with transfers that have the amount lesser than or equal the value (in smallest currency unit)

Optional

Return results that were created after the date / time specified. Example: 2023-12-01T00:00:00-00:00

Optional

Return results that were created before the date / time specified. Example: 2023-12-01T00:00:00-00:00

Optional

Return results that were created after or equal to the date / time specified. Example: 2023-12-01T00:00:00-00:00

Optional

Return results that were created after or equal to the date / time specified. Example: 2023-12-01T00:00:00-00:00

Optional

Return transfers that is either incoming or outgoing.

Optional

Return results with this status (accepts multiple values, comma separated).

Possible enum values:

  • canceled
  • completed
  • deposited
  • failed
  • first_return
  • hold
  • initiated
  • issued
  • manual_review
  • manual_review_approved
  • pending_deposit
  • pending_first_return
  • pending_reclear
  • pending_return
  • pending_second_return
  • pending_stop
  • pending_submission
  • pending_user_initiated_return
  • recleared
  • rejected
  • return_contested
  • return_dishonored
  • returned
  • scheduled
  • second_return
  • settled
  • stopped
  • submitted
  • user_initiated_returned
  • user_initiated_return_submitted
  • user_initiated_return_dishonored

Request

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

Response

{
  "transfers": [
    {
      "id": "string",
      "created_at": "2021-11-29T21:16:16.779Z",
      "updated_at": "2021-11-29T21:16:16.779Z",
      "completed_at": "2021-11-29T21:16:16.779Z",
      "status": "string",
      "type": "string",
      "amount": int64,
      "currency_code": "string",
      "is_incoming": true,
      "idempotency_key": "string",
      "description": "string",
      "sender_internal_account": {
        "bank_account_id": "string",
        "account_number_id": "string"
      },
      "external_source": {
        "bank_name": "string",
        "sender_name": "string"
      },
      "receiver_internal_account": {
        "bank_account_id": "string",
        "account_number_id": "string"
      },
      "external_destination": {
        "counterparty_id": "string"
      }
    }
  ],
  "has_more": true
  "total_results_count": 100,
}

Event object

The event object is a snapshot of a particular data object (ACH, wire, book, return...etc) in time. An event object will be created each time a data object is created, or changes state. For example, you can use events to track state changes of a particular transfer over time - like an ACH transfer that has been initiated, submitted, settled, or returned. Read about more about events here.

object parameters

The timestamp at which the event was emitted.

The object instance that triggered the event to be emitted. For example, on an ach.* event, this will be the ACH object.

The unique id of the object

The type of event which was emitted. See Events and Webhooks for more information.

Event object

{
{
  "created_at": "2022-02-21T17:19:41Z",
  "data": {
      <returned object>
  },
  "id": "evnt_25Qex2OLy3qrssrKvds7df4D1ej",
  "type": "book.transfer.completed"
}
}

List all events

GET

/events

Lists all events, inclusive of events sent via webhooks.

query parameters

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

A cursor for use in pagination. ending_before is an event ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with evnt_id1, your subsequent call can include ending_before=evnt_id1 in order to fetch the previous page of the list.

Optional

A limit of the number of objects to be returned. The default is 20.

Optional

Filter events by their associated objects (e.g., wire transfer IDs, bank account IDs, etc.). Format: object_ids=id_1&object_ids=id_2&object_ids=id_3....

Optional

A cursor for use in pagination. starting_after is an event ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with evnt_id2, your subsequent call can include starting_after=evnt_id2 in order to fetch the next page of the list.

Optional

The types of events you want to retrieve (format: types=type_1&types=type_2&types=type_3...). See all events here.

Request

curl 'https://api.column.com/events?types=type_1&types=type_2&types=type_3' \
  -u :<YOUR API KEY>

Response

{
  "events": [
    {
      "id": "string",
      "created_at": "2021-11-29T21:26:42.872Z",
      "type": "string",
      "data": {
        "type_url": "string",
        "value": "string"
      }
    }
  ], 
  "has_more": false
}

List all webhook events

GET

/events/webhook

Lists just the events that resulted in webhooks. Useful for reconciling webhooks.

query parameters

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

A cursor for use in pagination. ending_before is an event ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, starting with evnt_id1, your subsequent call can include ending_before=evnt_id1 in order to fetch the previous page of the list.

Optional

A limit of the number of objects to be returned. The default is 20.

Optional

Filter events by their associated objects (e.g., wire transfer IDs, bank account IDs, etc.). Format: object_ids=id_1&object_ids=id_2&object_ids=id_3....

Optional

A cursor for use in pagination. starting_after is an event ID that defines your place in the list. For instance, if you make a list request and receive 20 objects, ending with evnt_id2, your subsequent call can include starting_after=evnt_id2 in order to fetch the next page of the list.

Optional

The types of events you want to retrieve (format: types=type_1&types=type_2&types=type_3...). See all events here.

Request

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

Response

{
  "events": [
    {
      "id": "string",
      "created_at": "2021-11-29T21:26:42.872Z",
      "type": "string",
      "data": {
        "type_url": "string",
        "value": "string"
      }
    }
  ], 
  "has_more": false
}

Get an event by ID

GET

/events/<id>

Retrieve an event by its id

path parameters

Required

Request

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

Response

{
  "id": "string",
  "created_at": "2021-11-29T21:29:34.023Z",
  "type": "string",
  "data": {
    "type_url": "string",
    "value": "string"
  }
}

Document object

Document objects are a pointer to documents that are created or stored on Column. There are two main types of documents: Documents you upload to Column which support KYC/KYB verification for entities. And report documents generated by Column, which you can download.

object parameters

The SHA-256 checksum of the uploaded document.

Timestamp at which the document was created in the Column system.

Description of the document provided when the document was created.

The unique id of this object.

The type of document. Can be bank_transaction_report, bank_summary_report, identity_license, identity_passport, or identity_utility.

The timestamp the document was updated.

URL to download the document. Expire after 60 seconds. Note: When retrieving this URL with curl in terminal, some characters become encoded and copy and pasting the URL will throw an error in the browser. Try testing this out using POSTMAN instead.

Document object

{
  "checksum": "f58b9e7dda62420b6c016ed71ff5d6b224437ec74ace972a333622e1de8bbfdf",
  "created_at": "2022-03-03T22:47:33Z",
  "description": "",
  "id": "docu_25tY3k5619LebLZNk4EcN1a9Zka",
  "size": 422989,
  "type": "identity_license",
  "updated_at": "2022-03-03T22:47:33Z",
  "url": "https://bucket.s3.us-west-2.amazonaws.com/..."
}

Upload a document

POST

/documents

To upload a file to Column, you will need to send a request with Content-Type: multipart/form-data. The request should contain the file you would like to upload, as well as other metadata.

body parameters

Required

A file to upload (maximum size: 16MB). The file should follow the specifications of RFC 2388 for multipart/form-data protocol.

Required

Type of the document. Possible enum values:

  • identity_license: a document to verify the identity of an account owner (e.g., driver licenses, state ID cards, Articles of Incorporation, etc.)
  • identity_passport: the passport of an account owner to verify the identity
  • identity_utility: an utility bill of an account owner
  • check_attachment: an attachment to a mailed check. PDFs, HTML, PNGs, and JPGs are allowed as attachments. For PDFs, PNGs, and JPGs, all pages must be sized at 8.5"x11" at 300 DPI. If HTML is supplied, it will be rendered and trimmed to fit as many 8.5"x11" pages as necessary. If a PDF is provided, it must be 6 pages or fewer. The attachment will be printed double-sided in black and white and included in the envelope after the check page. The ID can be used as `attachment_document_id` in the check issuing request.

Optional

Description of the document. Maximum length: 127 characters.

Request

curl 'https://api.column.com/documents' \
  -u :<YOUR API KEY> \
  -F file=@<YOUR FILE> \
  -F type="identity_license"

Response

{
  "checksum": "f58b9e7dda62420b6c016ed71ff5d6b224437ec74ace972a333622e1de8bbfdf",
  "created_at": "2022-03-03T22:47:33Z",
  "description": "",
  "id": "docu_25tY3k5619LebLZNk4EcN1a9Zka",
  "size": 422989,
  "type": "identity_license",
  "updated_at": "2022-03-03T22:47:33Z",
  "url": "https://bucket.s3.us-west-2.amazonaws.com/..."
}

Get a document

GET

/documents/<document_id>

Retrieves the details of an existing document.

path parameters

Required

ID of the document you're requesting

Request

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

Response

{
  "checksum": "f58b9e7dda62420b6c016ed71ff5d6b224437ec74ace972a333622e1de8bbfdf",
  "created_at": "2022-03-03T22:47:33Z",
  "description": "",
  "id": "docu_25tY3k5619LebLZNk4EcN1a9Zka",
  "size": 422989,
  "type": "identity_license",
  "updated_at": "2022-03-03T22:47:33Z",
  "url": "https://bucket.s3.us-west-2.amazonaws.com/..."
}

Settlement Report object

The settlement report object is a pointer to a settlement report generated by Column. Settlement reports contain data about historical bank account balances, and historical bank account transactions (book transfers, ACH, and wires). Read more about reports here.

object parameters

List of columns in the settlement report. Refer to Reporting Guidance for more details.

The timestamp the settlement report was generated successfully.

The timestamp the settlement report was scheduled.

Document ID to download the CSV format of the settlement report.

Starting date (inclusive, from the beginning of from_date in time_zone) of transactions included in the settlement report.

Unique identifier for the object.

The timestamp the settlement report was initiated to be processed.

Document ID to download the JSON format of the settlement report.

Document ID to download the Parquet format of the settlement report.

Total number of records in the settlement report.

The current status of the report. Can be scheduled, initiated, completed, or failed.

Time zone of the settlement report to decide day boundaries. It is a value defined in the IANA TZ database (e.g., America/Los_Angeles, UTC, etc.). You can set your platform reporting time zone in Platform Settings on Dashboard.

Ending date (inclusive, up to the end of to_date in time_zone) of transactions included in the settlement report.

Settlement report type. Can be bank_account_summary, or bank_account_transaction.

The timestamp the settlement report was last updated.

Settlement Report object

{
  "id": "srpt_27kkUzwpYqt78g3L1DWU7cBRjyL",
  "created_at": "2022-04-13T17:38:11Z",
  "updated_at": "2022-04-13T17:38:11Z",
  "type": "bank_account_transaction",
  "status": "completed",
  "time_zone": "America/Los_Angeles",
  "from_date": "2022-03-02",
  "to_date": "2022-03-02",
  "initiated_at": "2022-04-13T17:10:15Z",
  "completed_at": "2022-04-13T17:11:15Z",
  "row_count": 666,
  "columns": [
    "effective_at",
    "effective_at_utc",
    "bank_account_id",
    "bank_account_type",
    "account_number_id",
    "entity_id",
    "entity_name",
    "entity_type",
    "transaction_id",
    "transaction_type",
    "currency",
    "available_amount",
    "available_balance",
    "pending_amount",
    "pending_balance",
    "locked_amount",
    "locked_balance",
    "holding_amount",
    "holding_balance"
  ],
  "csv_document_id": "docu_27kh6IxwJjShHV314ig7ioPEwSf",
  "json_document_id": "docu_27kh6KhcfYDkPthUdoMSCHD3tv9",
  "parquet_document_id": "docu_27kh6LSgYvc1gdcLlpQnAOGzPl6"
}

Schedule a settlement report

POST

/reporting

Schedule a request to generate a settlement report. You must set your platform reporting time zone in Platform Settings on Dashboard. Please refer to our Reporting Guides for more details.

body parameters

Required

Starting date (inclusive) of data included. Earliest available date: 2022-01-01.

Required

Ending date (inclusive) of data included. Maximum date range: 93 days.

Required

Settlement report type. Can be bank_account_summary, or bank_account_transaction.

Request

curl 'https://api.column.com/reporting' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d type="bank_account_transaction" \
  -d from_date="2022-03-01" \
  -d to_date="2022-03-31"

Response

{
  "id": "srpt_27kigaqHolth6UzjnOohU9tNdSt",
  "created_at": "2022-04-13T10:23:16",
  "updated_at": "2022-04-13T10:23:16",
  "type": "bank_account_transaction",
  "status": "scheduled",
  "time_zone": "America/Los_Angeles",
  "from_date": "2022-03-01",
  "to_date": "2022-03-31",
  "initiated_at": null,
  "completed_at": null,
  "row_count": null,
  "columns": null,
  "csv_document_id": "",
  "json_document_id": "",
  "parquet_document_id": ""
}

List all settlement reports

GET

/reporting

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

query parameters

Optional

Starting date (inclusive) of data included. Format: YYYY-MM-DD.

Optional

Ending date (inclusive) of data included. Format: YYYY-MM-DD.

Optional

Settlement report type. Can be bank_account_summary, or bank_account_transaction.

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/reporting' \
  -u :<YOUR API KEY> \
  -d type="bank_account_transaction" \
  -d from_date="2022-03-01" \
  -d to_date="2022-03-02"

Response

{
  "reports": [
    {
      "id": "srpt_27kigaqHolth6UzjnOohU9tNdSt",
      "created_at": "2022-04-13T10:23:16",
      "updated_at": "2022-04-13T10:23:16",
      "type": "bank_account_transaction",
      "status": "scheduled",
      "time_zone": "America/Los_Angeles",
      "from_date": "2022-03-02",
      "to_date": "2022-03-02",
      "initiated_at": null,
      "completed_at": null,
      "row_count": null,
      "columns": null,
      "csv_document_id": "",
      "json_document_id": "",
      "parquet_document_id": ""
    },
    {
      "id": "srpt_27kkUwEPiFqmhxLsDgLihgE8pKr",
      "created_at": "2022-04-13T17:38:11Z",
      "updated_at": "2022-04-13T17:38:11Z",
      "type": "bank_account_transaction",
      "status": "completed",
      "time_zone": "America/Los_Angeles",
      "from_date": "2022-03-01",
      "to_date": "2022-03-01",
      "initiated_at": "2022-04-13T17:10:15Z",
      "completed_at": "2022-04-13T17:11:15Z",
      "row_count": 888,
      "columns": [
        "effective_at",
        "effective_at_utc",
        "bank_account_id",
        "bank_account_type",
        "account_number_id",
        "entity_id",
        "entity_name",
        "entity_type",
        "transaction_id",
        "transaction_type",
        "currency",
        "available_amount",
        "available_balance",
        "pending_amount",
        "pending_balance",
        "locked_amount",
        "locked_balance",
        "holding_amount",
        "holding_balance"
      ],
      "csv_document_id": "docu_27kh6MA1yp5d1QT7HorEchZrwab",
      "json_document_id": "docu_27kh6MzwxYZGGVa4ZD7GICMY5kd",
      "parquet_document_id": "docu_27kh6PbEbYbhMHEDocJ7pYQFQZo"
    }
  ],
  "has_more": false
}

Get a settlement report by ID

GET

/reporting/<settlement_report_id>

Get a settlement report by its ID. Please refer to our Reporting Guides for more details.

path parameters

Required

The ID of the settlement report you are looking up

Request

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

Response

{
  "id": "srpt_27kkUzwpYqt78g3L1DWU7cBRjyL",
  "created_at": "2022-04-13T17:38:11Z",
  "updated_at": "2022-04-13T17:38:11Z",
  "type": "bank_account_transaction",
  "status": "completed",
  "time_zone": "America/Los_Angeles",
  "from_date": "2022-03-02",
  "to_date": "2022-03-02",
  "initiated_at": "2022-04-13T17:10:15Z",
  "completed_at": "2022-04-13T17:11:15Z",
  "row_count": 666,
  "columns": [
    "effective_at",
    "effective_at_utc",
    "bank_account_id",
    "bank_account_type",
    "account_number_id",
    "entity_id",
    "entity_name",
    "entity_type",
    "transaction_id",
    "transaction_type",
    "currency",
    "available_amount",
    "available_balance",
    "pending_amount",
    "pending_balance",
    "locked_amount",
    "locked_balance",
    "holding_amount",
    "holding_balance"
  ],
  "csv_document_id": "docu_27kh6IxwJjShHV314ig7ioPEwSf",
  "json_document_id": "docu_27kh6KhcfYDkPthUdoMSCHD3tv9",
  "parquet_document_id": "docu_27kh6LSgYvc1gdcLlpQnAOGzPl6"
}

Webhook object

The webhook object is the current state of a particular webhook endpoint set up in Column. Webhook endpoints are used to configure URLs used to receive Column events. Read about more about wire transfers here.

object parameters

Date (format: YYYY-MM-DD) on which the event was emitted.

A description for this webhook.

A list of events and event types which are being sent to this webhook's url.

The unique id of the object.

Indicates whether this webhook url is actively receiving events.

Secret key which allows you to verify that the event was sent by Column, and not by a third party.

Timestamp of when this webhook was last updated.

The https url that webhooks are going to be delivered to.

e.g. https://yoursite.com/columnevents

Webhook object

{
  "created_at": "2022-02-08T18:00:02Z",
  "description": "",
  "enabled_events": ["*"],
  "id": "whep_24q1FvNZuDjwj5w310VaD46oFTD",
  "is_disabled": false,
  "secret": "whsr_24q1Fwr2aFvAW9BbL5gXXRyS5gR",
  "updated_at": "2022-03-03T00:41:04Z",
  "url": "https://webhook.site/af74c831-b794-4311-9d49-2678e6faee36"
}

Create a webhook endpoint

POST

/webhook-endpoints

Create a webhook url and description.

This can also be done on the dashboard.

body parameters

Required

Enables you to subscribe to certain events. See all events here.

enabled_events can contain specific event types, or can include wildcard string (e.g., ach.* for all ACH events)

Required

The https url that webhooks are going to be delivered to.

e.g. https://yoursite.com/columnevents

Optional

A description for this webhook.

Request

curl 'https://api.column.com/webhook-endpoints' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d "enabled_events[]"="ach.*" \
  -d url="https://docs.column.com"

Response

{
  "id": "string",
  "created_at": "2021-11-29T21:30:48.799Z",
  "updated_at": "2021-11-29T21:30:48.799Z",
  "description": "string",
  "enabled_events": ["string"],
  "secret": "string",
  "is_disabled": true,
  "url": "string"
}

List all webhook endpoints

GET

/webhook-endpoints

List all webhooks under your developer account

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/webhook-endpoints' \
  -u :<YOUR API KEY>

Response

{
  "webhook_endpoints": [
    {
      "id": "string",
      "created_at": "2021-11-29T21:35:26.409Z",
      "updated_at": "2021-11-29T21:35:26.409Z",
      "description": "string",
      "enabled_events": ["string"],
      "secret": "string",
      "is_disabled": true,
      "url": "string"
    }
  ]
}

Get a webhook endpoint by ID

GET

/webhook-endpoints/<id>

Retrieve information about the webhook by its id

path parameters

Required

Request

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

Response

{
  "id": "string",
  "created_at": "2021-11-29T21:37:17.367Z",
  "updated_at": "2021-11-29T21:37:17.367Z",
  "description": "string",
  "enabled_events": ["string"],
  "secret": "string",
  "is_disabled": true,
  "url": "string"
}

Update a webhook url

PATCH

/webhook-endpoints/<id>

Update fields on the webhooks

path parameters

Required

The ID of the webhook endpoint you want to update.

body parameters

Required

Enables you to subscribe to certain events. See all events here.

enabled_events can contain specific event types, or can include wildcard string (e.g., ach.* for all ACH events)

Required

The https url that webhooks are going to be delivered to.

e.g. https://yoursite.com/columnevents

Optional

A description for this webhook.

Optional

Disable the webhook endpoint if set to true.

Request

curl 'https://api.column.com/webhook-endpoints/<webhook_id>' \
  -XPATCH \
  -u :<YOUR API KEY> \
  -d "enabled_events[]"="ach.*" \
  -d url="https://newsdocs.column.com"

Response

{
  "id": "string",
  "created_at": "2021-11-29T21:38:16.031Z",
  "updated_at": "2021-11-29T21:38:16.031Z",
  "description": "string",
  "enabled_events": ["string"],
  "secret": "string",
  "is_disabled": true,
  "url": "string"
}

Delete a webhook endpoint

DELETE

/webhook-endpoints/<id>

Deletes a webhook

path parameters

Required

The ID of the webhook endpoint you want to delete.

Request

curl 'https://api.column.com/webhook-endpoints/<webhook_id>' \
  -XDELETE \
  -u :<YOUR API KEY>

Response

{}

Verify a webhook endpoint

POST

/webhook-endpoints/<id>/verify

Verifies a webhook

path parameters

Required

The ID of the webhook endpoint you want to verify.

body parameters

Required

Event type. See all events here.

Request

curl 'https://api.column.com/webhook-endpoints/<webhook_id>/verify' \
  -XPOST \
  -u :<YOUR API KEY> \
  -d event_type="ach.outgoing_transfer.initiated"

Response

{
  "request_body": "string",
  "response_body": "string",
  "response_code": 0,
  "success": true
}

List all webhook deliveries

GET

/webhook-deliveries/endpoint/<id>

List all the webhook delivery and retry attempts for this endpoint.

path parameters

Required

query parameters

Optional

A limit of the number of objects to be returned. The default is 20.

Request

curl 'https://api.column.com/webhook-deliveries/endpoint/<webhook_id>' \
  -u :<YOUR API KEY>

Response

{
  "webhook_deliveries": [
    {
      "event": {
        "id": "string",
        "created_at": "2021-11-29T21:41:05.518Z",
        "type": "string",
        "data": {
          "type_url": "string",
          "value": "string"
        }
      },
      "scheduled_at": "2021-11-29T21:41:05.518Z",
      "status": "UNKNOWN"
    }
  ]
}

List webhook deliveries by event

GET

/webhook-deliveries/event/<id>

List all the webhook delivery and retry attempts for this event.

path parameters

Required

Request

curl 'https://api.column.com//webhook-deliveries/event/<event_id>' \
  -u :<YOUR API KEY>

Response

{
  "webhook_deliveries": [
    {
      "event": {
        "id": "string",
        "created_at": "2021-11-29T21:47:18.447Z",
        "type": "string",
        "data": {
          "type_url": "string",
          "value": "string"
        }
      },
      "scheduled_at": "2021-11-29T21:47:18.447Z",
      "status": "UNKNOWN"
    }
  ]
}