PUT
/
v1
/
source-of-funds
/
:userId
curl -X PUT https://api.geldstuck.com/v1/source-of-funds/usr_01HX3ZAB... \
  -H "x-api-key: $GELDSTUCK_PUBLIC_KEY" \
  -H "x-api-secret: $GELDSTUCK_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "bankStatement": {
      "institution": "Chase",
      "accountLast4": "1234",
      "fileIds": ["file_01HX3ZK..."]
    }
  }'
{
  "id": "sof_01HX3ZV...",
  "userId": "usr_01HX3ZAB...",
  "status": "draft",
  "bankStatement": {
    "institution": "Chase",
    "accountLast4": "1234",
    "fileIds": ["file_01HX3ZK..."]
  },
  "updatedAt": "2026-04-22T11:15:00.000Z"
}
Only the document groups you send are modified. Sibling groups are preserved - you can PATCH bankStatement without touching salary.

Path parameters

userId
string
required

Body

Any subset of the supported document type keys. Each group has its own shape (see guide):
bankStatement
object
salary
object
taxReturn
object
saleOfProperty
object
saleOfAsset
object
inheritance
object
gift
object
loan
object
investmentIncome
object
businessIncome
object

Returns

The updated SoF record.
curl -X PUT https://api.geldstuck.com/v1/source-of-funds/usr_01HX3ZAB... \
  -H "x-api-key: $GELDSTUCK_PUBLIC_KEY" \
  -H "x-api-secret: $GELDSTUCK_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "bankStatement": {
      "institution": "Chase",
      "accountLast4": "1234",
      "fileIds": ["file_01HX3ZK..."]
    }
  }'
{
  "id": "sof_01HX3ZV...",
  "userId": "usr_01HX3ZAB...",
  "status": "draft",
  "bankStatement": {
    "institution": "Chase",
    "accountLast4": "1234",
    "fileIds": ["file_01HX3ZK..."]
  },
  "updatedAt": "2026-04-22T11:15:00.000Z"
}