Fund (akoya_fund)
A Fund is a pool of assets administered by the foundation. Funds are the central accounting unit — gifts flow in, grants and distributions flow out, fees are calculated against fund balances, and spendable amounts are allocated according to the fund's type and instrument. akoyaGO supports nested fund hierarchies (parent/child) and "fund-of-funds" override patterns for fee and spendable routing.
At a glance
Display name
Fund
Logical name
akoya_fund
Primary ID attribute
akoya_fundid
Primary name attribute
akoya_fundname
Entity set name (Web API)
akoya_funds
Ownership
OrganizationOwned
Change tracking
Enabled
Audit
Enabled (selective)
Web API
GET {org}/api/data/v9.2/akoya_funds
GET {org}/api/data/v9.2/akoya_funds({fundid})
POST {org}/api/data/v9.2/akoya_funds
PATCH {org}/api/data/v9.2/akoya_funds({fundid})
Attributes
Identity and classification
Display name
Logical name
Type
Required
Max length
Description
Fund Name
akoya_fundname
String
ApplicationRequired
100
Display name. Primary name attribute.
Formal Fund Name
akoya_formalfundname
String
None
250
Longer legal/formal name for letters and statements.
Fund Code
akoya_fundcode
String
Recommended
20
Short code — typically the GL chart account.
Fund Class
akoya_fundclass
Choice
ApplicationRequired
—
Operating / Endowment / Nonpermanent. See values .
Fund Type
akoya_fundtype
Choice
ApplicationRequired
—
Donor Advised, Designated Purpose, Agency Endowment, etc. See values .
Fund Instrument
akoya_fundinstrument
Choice
None
—
Vehicle that established the fund (Bequest, Annuity, etc.). See values .
Endowed
akoya_endowed
Boolean
None
—
Principal is permanently restricted.
Established
akoya_established
DateTime (DateOnly)
None
—
Creation date.
Date Retired
akoya_dateretired
DateTime (DateOnly)
None
—
Closure date if retired.
Restricted Through
akoya_restrictedthrough
DateTime
None
—
End date of any time restriction.
Balances and financials
All money columns have paired _Base system columns.
Display name
Logical name
Description
Net Assets
akoya_netassets
Total fund value (principal + earnings).
Earnings
akoya_earnings
Investment income accrued.
Spendable
akoya_spendable
Spendable balance (calculated).
Spendable Amount
akoya_spendableamount
Alternate spendable calc.
Initial Amount
akoya_initialamount
Original principal contributed.
Historic
akoya_historic
Prior-year historical balance.
Gifts Paid
akoya_giftspaid
Cumulative gift distributions.
Gifts Pending
akoya_giftspending
Undisbursed pledges.
Grants Paid
akoya_grantspaid
Cumulative grant distributions.
Grants Pending
akoya_grantspending
Undisbursed grant obligations.
Total Giving This Year
akoya_totalgivingthisyear
Current fiscal year inbound.
Total Giving Last Year
akoya_totalgivinglastyear
Prior fiscal year inbound.
Balances Updated
akoya_balancesupdated
Timestamp of last balance recalculation.
Spending policy and fees
Display name
Logical name
Type
Description
Spend Percent
akoya_spendpercent
Float
Spend policy as a percentage.
Fee Amount
akoya_feeamount
Money
Flat fee.
Fee Percent
akoya_feepercent
Float
Percentage fee.
Fee Calculation Basis
akoya_feecalculationbasis
Boolean
Calculate on this fund's balance (false) or group balance (true).
Payment Frequency
akoya_paymentfrequency
Choice
Annual, quarterly, monthly, etc. (global option set).
Number of Payments
akoya_numberofpayments
Integer
Payout frequency counter.
First Pay Date
akoya_firstpaydate
DateTime
First grant disbursement date.
Public portal (GOdonate / GOfund)
Display name
Logical name
Type
Purpose
GOdonate Enabled
akoya_godonateenabled
Boolean
Whether the fund appears on the public donation portal.
GOdonate Title Slug
akoya_godonatetitleslug
String
URL-friendly slug for the public fund page.
GOfund Spendable
akoya_gofundspendable
Money
Available-to-spend balance displayed in the portal.
Hide Spendable in GOfund
akoya_hidespendablebalanceingofund
Boolean
Suppress balance display.
GOfund Ignore Spendable Limit
akoya_gofundignorespendblelimit
Boolean
Allow distributions exceeding spendable.
Narrative
Display name
Logical name
Type
Max length
Purpose
akoya_purpose
Memo
2000
Notes
akoya_notes
Memo
2000
Comments
akoya_comments
Memo
2000
Succession Plan
akoya_successionplan
Memo
2000
Annual Year Book
akoya_annualyearbook
Memo
2000
Acknowledgement Comment
akoya_acknowledgementcomment
Memo
2000
Handling Note
akoya_handlingnote
String
—
Lookups — quick reference
Logical name
Navigation property
Target
Purpose
akoya_primarydonor
akoya_PrimaryDonor
akoya_donor
Founding / primary donor.
akoya_primaryfundcontact
akoya_PrimaryFundContact
contact
Primary fund contact (advisor, family rep).
akoya_department
akoya_Department
akoya_department
Required. Owning department.
akoya_giftdefaultaccount
akoya_GiftDefaultAccount
akoya_account
GL account for gifts into this fund.
akoya_nongiftdefaultaccount
akoya_NonGiftDefaultAccount
akoya_account
GL account for non-gift revenue.
akoya_fundgroup
akoya_FundGroup
(fund group entity)
Grouping for rollup and reporting.
akoya_fundstatementformat
akoya_FundStatementFormat
(statement format)
Template used for periodic statements.
akoya_foundationstaffcontact
akoya_FoundationStaffContact
contact
Assigned foundation staff.
Self-references (fund hierarchy and overrides)
Logical name
Purpose
akoya_parent
Parent fund in the hierarchy.
akoya_alternatefundfeefund
Alternate fund that receives this fund's fees.
akoya_alternatejiafund
Alternate Joint Investment Account fund for override.
akoya_alternatespendablefund
Alternate fund where this fund's spendable is distributed.
Self-referential overrides
The four self-reference lookups above enable fund-of-funds structures and let administrators route fees or spendable distributions away from the fund that owns them. When traversing fund data, be prepared for cycles and always guard against infinite loops.
Choice values
akoya_fundclass values
Label
Value
Operating
730850000
Endowment
730850001
Nonpermanent
730850002
akoya_fundtype values
Label
Value
Donor Advised
730850000
Designated Purpose
730850001
Agency Endowment
730850002
General Unrestricted
730850003
Field of Interest
730850004
Special Project
730850005
Scholarship
730850006
akoya_fundinstrument values
Label
Value
Annuity
730850000
Bequest
730850001
Fund Agreement
730850002
General Fund Memo
730850003
Charitable Lead Trust
730850004
Supporting Organization
730850005
Trustee Resolution
730850006
Charitable Remainder Unit Trust
730850007
akoya_anonymity values
Label
Value
Anonymous for all purposes
730850000
Disclose after death
730850001
Anonymous for grantees
730850002
Anonymous for publications
730850003
Relationships
Many-to-One
Related entity
Attribute
Role
akoya_donor
akoya_primarydonor
Primary donor
contact
akoya_primaryfundcontact
Primary fund contact
akoya_account
akoya_giftdefaultaccount
Gift GL default
akoya_account
akoya_nongiftdefaultaccount
Non-gift GL default
akoya_fund (self)
akoya_parent, akoya_alternate*
Hierarchy and fee/spendable overrides
One-to-Many (child records)
Related entity
Role
akoya_gift
Gifts allocated to this fund (via akoya_fund1..12 split lookups).
akoya_giftpayment
Payments posted to this fund.
akoya_request
Grant requests paid from this fund.
akoya_requestpayment
Request payments posted to this fund.
akoya_interfundgrants
Inter-fund transfers where this fund is source or destination.
Supported messages
Message
Supported
Create
✓
Retrieve
✓
RetrieveMultiple
✓
Update
✓
Delete
✓
Upsert
— (no alternate keys; use GET then PATCH)
Privileges
Privilege
Purpose
prvReadakoya_fund
Read fund records
prvCreateakoya_fund
Create fund records
prvWriteakoya_fund
Update fund records
prvAppendToakoya_fund
Associate child records (gifts, grants) to a fund
Examples
Conventions
Examples assume ORG (env URL), access_token (valid bearer), headers (standard Dataverse headers dict), and service (a ServiceClient instance). See Authentication .
Active endowed funds with balances
Web API curl Python C#
GET {org}/api/data/v9.2/akoya_funds?
$select=akoya_fundname,akoya_fundcode,akoya_fundtype,akoya_netassets,akoya_spendable&
$filter=statecode eq 0 and akoya_endowed eq true&
$expand=akoya_PrimaryDonor($select=akoya_formaldefault),akoya_GiftDefaultAccount($select=akoya_accountnum)&
$orderby=akoya_fundname asc
Accept: application/json
OData-Version: 4.0
OData-MaxVersion: 4.0
curl "https://{org}.crm.dynamics.com/api/data/v9.2/akoya_funds?\$select=akoya_fundname,akoya_fundcode,akoya_fundtype,akoya_netassets,akoya_spendable&\$filter=statecode%20eq%200%20and%20akoya_endowed%20eq%20true&\$expand=akoya_PrimaryDonor(\$select=akoya_formaldefault),akoya_GiftDefaultAccount(\$select=akoya_accountnum)&\$orderby=akoya_fundname%20asc" \
-H "Authorization: Bearer $ACCESS_TOKEN " \
-H "Accept: application/json" \
-H "OData-Version: 4.0" \
-H "OData-MaxVersion: 4.0"
r = requests . get (
f " { ORG } /api/data/v9.2/akoya_funds" ,
params = {
"$select" : "akoya_fundname,akoya_fundcode,akoya_fundtype,akoya_netassets,akoya_spendable" ,
"$filter" : "statecode eq 0 and akoya_endowed eq true" ,
"$expand" : "akoya_PrimaryDonor($select=akoya_formaldefault),akoya_GiftDefaultAccount($select=akoya_accountnum)" ,
"$orderby" : "akoya_fundname asc" ,
},
headers = headers ,
)
funds = r . json ()[ "value" ]
var query = new QueryExpression ( "akoya_fund" ) {
ColumnSet = new ColumnSet ( "akoya_fundname" , "akoya_fundcode" , "akoya_fundtype" , "akoya_netassets" , "akoya_spendable" ),
Criteria = {
Conditions = {
new ConditionExpression ( "statecode" , ConditionOperator . Equal , 0 ),
new ConditionExpression ( "akoya_endowed" , ConditionOperator . Equal , true )
}
},
Orders = { new OrderExpression ( "akoya_fundname" , OrderType . Ascending ) }
};
var funds = service . RetrieveMultiple ( query );
Find fund by code then PATCH
No alternate keys exist — look up by fund code first, then PATCH by GUID.
Web API curl Python C#
GET {org}/api/data/v9.2/akoya_funds?
$select=akoya_fundid&
$filter=akoya_fundcode eq 'F-001234'&
$top=1
Accept: application/json
OData-Version: 4.0
OData-MaxVersion: 4.0
Then:
PATCH {org}/api/data/v9.2/akoya_funds({fundid})
Content-Type: application/json
If-Match: *
{
"akoya_spendpercent": 4.5,
"akoya_feepercent": 1.0
}
FUND_ID = $( curl -s "https://{org}.crm.dynamics.com/api/data/v9.2/akoya_funds?\$select=akoya_fundid&\$filter=akoya_fundcode%20eq%20'F-001234'&\$top=1" \
-H "Authorization: Bearer $ACCESS_TOKEN " \
-H "Accept: application/json" \
| jq -r '.value[0].akoya_fundid' )
curl -X PATCH "https://{org}.crm.dynamics.com/api/data/v9.2/akoya_funds( $FUND_ID )" \
-H "Authorization: Bearer $ACCESS_TOKEN " \
-H "Content-Type: application/json" \
-H "If-Match: *" \
-d '{"akoya_spendpercent": 4.5, "akoya_feepercent": 1.0}'
r = requests . get (
f " { ORG } /api/data/v9.2/akoya_funds" ,
params = { "$select" : "akoya_fundid" , "$filter" : "akoya_fundcode eq 'F-001234'" , "$top" : 1 },
headers = headers ,
)
hits = r . json ()[ "value" ]
if not hits :
raise LookupError ( "Fund not found" )
fund_id = hits [ 0 ][ "akoya_fundid" ]
requests . patch (
f " { ORG } /api/data/v9.2/akoya_funds( { fund_id } )" ,
json = { "akoya_spendpercent" : 4.5 , "akoya_feepercent" : 1.0 },
headers = { ** headers , "Content-Type" : "application/json" , "If-Match" : "*" },
)
var lookup = new QueryExpression ( "akoya_fund" ) {
ColumnSet = new ColumnSet ( "akoya_fundid" ),
Criteria = {
Conditions = {
new ConditionExpression ( "akoya_fundcode" , ConditionOperator . Equal , "F-001234" )
}
},
TopCount = 1
};
var result = service . RetrieveMultiple ( lookup );
if ( result . Entities . Count == 0 ) throw new InvalidOperationException ( "Fund not found" );
var fund = new Entity ( "akoya_fund" , result . Entities [ 0 ]. Id );
fund [ "akoya_spendpercent" ] = 4.5 ;
fund [ "akoya_feepercent" ] = 1.0 ;
service . Update ( fund );
Change history
Schema extracted from the Akoyanet solution XML on 2026-04-24. Global option set values (akoya_paymentfrequency) are pending the Phase 2 metadata generator.