Truv, formerly Citadel API, announces its new name and $25M Series A funding. Read more

One-stop solution for income and employment data

Connect to the platform that optimizes for speed, budget, and pull-through rates.

96%

coverage of Fortune 1000 companies

50+

supported payroll providers

Seamless user experience

User selects
their employer

We support over 50 most actively used payroll providers — offering 85% coverage of the US workforce.

User enters credentials

Truv handles security questions and 2FA right in the app, connecting to their payroll data in under 15 seconds.

Truv connects the account

Truv takes the final steps to access, organize, and deliver the data to you via API or directly to your Truv dashboard.

Accurate, consumer-permissioned data
to verify income and employment

Identity

Name
John K Doe
SSN
•••••6789
Email
jo@example.com
Birth
1992.03.03

Employer

Name
Company Name Inc.
Address
1 Hacker Way, Menlo
Park, CA, 94025
Phone
6503087300

Employment

Status
active
Start date
2018-01-01
End date
2019-08-24
Job type
Full-time
Job title
PR associate
Manager
Jenny McDouglas
Income
70000.00
Income unit
YEARLY
Frequency
M

Income

Year
2018
Salary
23,000
Bonus
1,000
Commission
24,000
Overtime
500
Other pay
700
Net pay
31,980
Gross pay
49,200

Pay Stubs

Pay date
2018.05.15
Start
2018.05.01
End of year
2018
End
2018.05.15
Basis of pay
Salary
Hours
40.00
Net pay
11500.32
Gross pay
13900.11
Regular
1900.11
Bonus
100.00
Commission
120
Overtime
0
Other pay
700.00

Bank Account

Year
2018
Salary
23,000
Bonus
1,000
Commission
24,000
Overtime
500
Other pay
700
Net pay
31,980
Gross pay
49,200

Payroll report

  1. {

  2.   "id": "5ca644606ab9e26113349291",

  3.   "report_date": "2020-02-14",

  4.   "start_date": "2019-01-01",

  5.   "end_date": "2020-09-19",

  6.   "status": "done",

  7.   "payroll_report": [

  8.     {

  9.       "id": "24d7e80942ce4ad58a93f70ce4115f5c",

  10.       "employee_id": "5ca65da36ab9e2123febfe24",

  11.       "employee_number": "1",

  12.       "first_name": "Eva",

  13.       "last_name": "Green",

  14.       "gross_earnings": "2500.00",

  15.       "net_pay": "1965.33",

  16.       "employee_taxes": "472.02",

  17.       "employer_taxes": "472.02",

  18.       "period_start": "2019-01-01",

  19.       "period_end": "2019-01-07",

  20.       "pay_date": "2019-01-06"

  21.     },

  22.     {

  23.       "id": "34d7e80942ce4ad58a93f70ce4115f5c",

  24.       "employee_id": "5ca65da36ab9e2123febfe22",

  25.       "employee_number": "2",

  26.       "first_name": "John",

  27.       "last_name": "Smith",

  28.       "gross_earnings": "1250.00",

  29.       "net_pay": "1045.14",

  30.       "employee_taxes": "137.85",

  31.       "employer_taxes": "90.50",

  32.       "period_start": "2019-01-08",

  33.       "period_end": "2019-01-15",

  34.       "pay_date": "2019-01-14"

  35.     },

  36.     {

  37.       "id": "44d7e80942ce4ad58a93f70ce4115f5c",

  38.       "employee_id": "5ca65da36ab9e2123febfe24",

  39.       "employee_number": "1",

  40.       "first_name": "Eva",

  41.       "last_name": "Green",

  42.       "gross_earnings": "2500.00",

  43.       "net_pay": "1965.33",

  44.       "employee_taxes": "472.02",

  45.       "employer_taxes": "472.02",

  46.       "period_start": "2019-01-16",

  47.       "period_end": "2019-01-23",

  48.       "pay_date": "2019-01-22"

  49.     },

  50.     {

  51.       "id": "54d7e80942ce4ad58a93f70ce4115f5c",

  52.       "employee_id": "5ca65da36ab9e2123febfe22",

  53.       "employee_number": "2",

  54.       "first_name": "John",

  55.       "last_name": "Smith",

  56.       "gross_earnings": "1250.00",

  57.       "net_pay": "1045.14",

  58.       "employee_taxes": "137.85",

  59.       "employer_taxes": "90.50",

  60.       "period_start": "2019-01-24",

  61.       "period_end": "2019-01-31",

  62.       "pay_date": "2019-01-30"

  63.     }

  64.   ],

  65.   "count": 4,

  66.   "next": null,

  67.   "previous": null,

  68.   "page_size": 100

  69. }

Directory

  1. {

  2.   "id": "5ca644606ab9e26113349291",

  3.   "status": "done",

  4.   "report_date": "2020-06-27",

  5.   "directory": [

  6.     {

  7.       "employee_id": "5ca65da36ab9e2123febfe22",

  8.       "employee_number": "1",

  9.       "first_name": "Jane",

  10.       "last_name": "Chief",

  11.       "dob": "1981-01-11",

  12.       "gender": "F",

  13.       "email_personal": "jane.email@example.com",

  14.       "email_work": "jane.ceo@example.com",

  15.       "phone_number": "2121111111",

  16.       "home_address": {

  17.         "city": "New York",

  18.         "state": "NY",

  19.         "zip": "10001",

  20.         "street": "111 1st Ave",

  21.         "country": "US"

  22.       },

  23.       "position_type": "F",

  24.       "start_date": "2011-01-11",

  25.       "end_date": null,

  26.       "title": "CEO",

  27.       "department": "Executive",

  28.       "work_address": {

  29.         "city": "New York",

  30.         "state": "NY",

  31.         "zip": "10001",

  32.         "street": "20 W 34th St",

  33.         "country": "US"

  34.       },

  35.       "manager_id": null,

  36.       "manager_first_name": null,

  37.       "manager_last_name": null,

  38.       "income": "750000.00",

  39.       "income_currency": "USD",

  40.       "income_unit": "YEARLY",

  41.       "pay_frequency": "SM",

  42.       "is_active": true

  43.     },

  44.     {

  45.       "employee_id": "5ca65da36ab9e2123febfe23",

  46.       "employee_number": "2",

  47.       "first_name": "Juan",

  48.       "last_name": "Perez",

  49.       "dob": "1982-02-22",

  50.       "gender": "M",

  51.       "email_personal": "juan.perez@example.com",

  52.       "email_work": "juan.cto@example.com",

  53.       "phone_number": "2122222222",

  54.       "home_address": {

  55.         "city": "New York",

  56.         "state": "NY",

  57.         "zip": "10002",

  58.         "street": "222 2nd Ave",

  59.         "country": "US"

  60.       },

  61.       "position_type": "F",

  62.       "start_date": "2012-02-22",

  63.       "end_date": null,

  64.       "title": "CTO",

  65.       "department": "Engineering",

  66.       "work_address": {

  67.         "city": "New York",

  68.         "state": "NY",

  69.         "zip": "10001",

  70.         "street": "20 W 34th St",

  71.         "country": "US"

  72.       },

  73.       "manager_id": "5ca65da36ab9e2123febfe56",

  74.       "manager_first_name": "Jane",

  75.       "manager_last_name": "Chief",

  76.       "income": "550000.00",

  77.       "income_currency": "USD",

  78.       "income_unit": "YEARLY",

  79.       "pay_frequency": "SM",

  80.       "is_active": true

  81.     },

  82.     {

  1.       "employee_id": "5ca65da36ab9e2123febfe24",

  2.       "employee_number": "3",

  3.       "first_name": "Joe",

  4.       "last_name": "Bloggs",

  5.       "dob": "1983-03-03",

  6.       "gender": "M",

  7.       "email_personal": "joe.bloggs@example.com",

  8.       "email_work": "joe.engineer@example.com",

  9.       "phone_number": "2123333333",

  10.       "home_address": {

  11.         "city": "Brooklyn",

  12.         "state": "NY",

  13.         "zip": "11211",

  14.         "street": "333 3rd St",

  15.         "country": "US"

  16.       },

  17.       "position_type": "F",

  18.       "start_date": "2013-03-03",

  19.       "end_date": null,

  20.       "title": "Principal Engineer",

  21.       "department": "Engineering",

  22.       "work_address": {

  23.         "city": "New York",

  24.         "state": "NY",

  25.         "zip": "10001",

  26.         "street": "20 W 34th St",

  27.         "country": "US"

  28.       },

  29.       "manager_id": "5ca65da36ab9e2123febfe56",

  30.       "manager_first_name": "Juan",

  31.       "manager_last_name": "Perez",

  32.       "income": "220000.00",

  33.       "income_currency": "USD",

  34.       "income_unit": "YEARLY",

  35.       "pay_frequency": "SM",

  36.       "is_active": true

  37.     },

  38.     {

  39.       "employee_id": "5ca35da36ab9e2123febfe23",

  40.       "employee_number": "4",

  41.       "first_name": "Fred",

  42.       "last_name": "Nerks",

  43.       "dob": "1984-04-04",

  44.       "gender": "M",

  45.       "email_personal": "fred.nerks@example.com",

  46.       "email_work": "fred.data_entry@example.com",

  47.       "phone_number": "2124444444",

  48.       "home_address": {

  49.         "city": "Brooklyn",

  50.         "state": "NY",

  51.         "zip": "11211",

  52.         "street": "444 4th St",

  53.         "country": "US"

  54.       },

  55.       "position_type": "C",

  56.       "start_date": "2014-04-04",

  57.       "end_date": null,

  58.       "title": "Data Entry Specialist",

  59.       "department": "Operations",

  60.       "work_address": {

  61.         "city": "New York",

  62.         "state": "NY",

  63.         "zip": "10001",

  64.         "street": "20 W 34th St",

  65.         "country": "US"

  66.       },

  67.       "manager_id": "7ca67da36ab9e2127febfe76",

  68.       "manager_first_name": "Bob",

  69.       "manager_last_name": "Boring",

  70.       "income": "850.00",

  71.       "income_currency": "USD",

  72.       "income_unit": "WEEKLY",

  73.       "pay_frequency": "W",

  74.       "is_active": true

  75.     },

  76.     {

  77.       "employee_id": "5ca65da56ab5e5125febfe25",

  1.       "employee_number": "5",

  2.       "first_name": "Sally",

  3.       "last_name": "McSales",

  4.       "dob": "1985-05-05",

  5.       "gender": "F",

  6.       "email_personal": "sally.mcsales@example.com",

  7.       "email_work": "sally.sales@example.com",

  8.       "phone_number": "2125555555",

  9.       "home_address": {

  10.         "city": "Hoboken",

  11.         "state": "NJ",

  12.         "zip": "07030",

  13.         "street": "555 5th St",

  14.         "country": "US"

  15.       },

  16.       "position_type": "P",

  17.       "start_date": "2015-05-05",

  18.       "end_date": "2020-01-01",

  19.       "title": "Sales Associate",

  20.       "department": "Sales",

  21.       "work_address": {

  22.         "city": "New York",

  23.         "state": "NY",

  24.         "zip": "10001",

  25.         "street": "20 W 34th St",

  26.         "country": "US"

  27.       },

  28.       "manager_id": "8ca68da36ab9e2128febfe86",

  29.       "manager_first_name": "Sam",

  30.       "manager_last_name": "Seller",

  31.       "income": "25.00",

  32.       "income_currency": "USD",

  33.       "income_unit": "HOURLY",

  34.       "pay_frequency": "BW",

  35.       "is_active": false

  36.     }

  37.   ],

  38.   "count": 5,

  39.   "next": null,

  40.   "previous": null,

  41.   "page_size": 100

  42. }

Developing with Truv is a breeze

We agonize over the right abstractions so your teams don’t need to stitch together disparate systems.

Documentation

Our documentation, like our API, is built by developers, for developers

API keys

Sign up for the Truv Dashboard and get instant access to API keys.

  1. <html>

  2. <head>

  3.   <!-- Step 1 - add the Bridge library to your app with a script tag -->

  4.   <script src="https://cdn.truv.com/bridge.js"></script>

  5. </head>

  6. <body>

  7. <script>

  8.   // Step 2 - Call your back end to retrieve a bridge_token from truv

  9.   const bridgeToken = <%= Value returned by API call to acquire bridge_token %>

  10.   // Step 3 - Initialize Bridge

  11.   const bridge = TruvBridge.init({

  12.     bridgeToken: bridgeToken.bridge_token,

  13.     onLoad: function(){

  14.       // Optional, called when Bridge loads

  15.       console.log('Bridge loaded')

  16.     },

  17.     onSuccess: function(public_token, metadata){

  18.       console.log('success handler')

  19.       // Send the public_token to your server to exchange for an access_token

  20.       // and retrieve payroll data.

  21.       // The metadata object contains info about the Link.

  22.       console.log("token: ",public_token)

  23.       console.log("metadata: ", metadata)

  24.     },

  25.     onEvent: function(event_type, payload) {

  26.       // all events fire this function. event_type indicates what the event is,

  27.       // payload has additional information depending on the event.

  28.       console.log('event: ', event_type)

  29.       console.log('payload: ', payload)

  30.     },

  31.     onClose: function(){

  32.       // Optional, called when Bridge is closed by the user.

  33.       console.log('Bridge closed')

  34.     }

  35.   })

  36. </script>

  37. <!-- Normal page content -->

  38. <!-- Step 4 - Create a button or action that calls bridge.open() to Bridge -->

  39. <button type="button" id="button" onclick="bridge.open()">

  40.   Connect

  41. </button>

  42. </body>

  43. </html>

Truv is enterprise-ready

Strict security standards

Truv is SOC 2 Type 2 compliant. We’re currently undergoing ISO 27001 and D1C certifications.

Robust monitoring

We use Vanta, the leading SOC 2 Type 2 continuous monitoring software to stay compliant and secure.

End-to-end encryption

Data transmitted is kept safe using SSL standards. We use 256-bit AES encryption at rest and TLS 1.2+ in transit.

One-stop solution for faster, more confident decisions

Ready to get started?

We're ready to be your one-stop solution for verifications.