Inconsistencies with V2 Deal Fields

I am wondering why there are inconsistencies regarding the deal fields in the V2 API.

The V2 Migration Guide shows deals as having a field value and a field currency, which seem to be correct, since they are returned when doing a GET request for all deals in Postman. The API Docs for getting Deals and for adding deals show these fields as well.

However, the API Docs for getting all Deal Fields show an example response where there is a field with a field_code of value with subfields value and currency.

I am wondering why the deal fields don’t just consist of a value and a currency field. This is actually how it was for the V1 API (See Postman). When you actually do request the deal fields, you get a field with field_code set to value but the subfields array only contains an object for the currency, which is different from the way it was shown in the API Docs.

In my opinion, the deal fields should just have currency and value as different fields just like how it was in the V1 API.

Yeah this caught us too when building our Pipedrive connector at Stacksync

The dealFields endpoint is schema introspection, not a direct map of how the actual deal payload is structured. The value field with only currency as a subfield is Pipedrive’s internal representation for field management purposes, but in actual deal GET/POST/PATCH calls the payload is flat: value as the numeric amount and currency as the ISO code, same as v1

For constructing and reading deal objects, go by what the deal endpoints actualy return and expect. The migration guide and the deal API docs are the right reference there. The dealFields response is useful for discovering which custom fields exist and their types, but the subfields representation for value doesn’t translate into how you build requests

Definitely looks like a docs inconsistency worth flagging to Pipedrive directly.