Skip to content

toJson fails to create exactly the same json as the Stripe HTTP API #1845

Open

Description

@decoursin

Describe the bug

The InvoiceLineItem.getUnitAmountExcludingTax returns a BigDecimal. While the Stripe API HTTP Server returns the unit_amount_excluding_tax as a string.

As a result, when the InvoiceLineItem is serialized using toJson, it returns a completely different format than the Stripe API Http Server. They should be the same.

To Reproduce

  1. Create an invoice and 1 invoice item.
  2. Serialize that invoice using toJson.
  3. View the serialize invoice item, and see that it's serialized as a json number rather than a string.

Expected behavior

Serializing an InvoiceLineItem using toJson is suppose to replicate the Stripe API HTTP server 100% exactly, and it's not doing that.

Code snippets

No response

OS

All

Java version

Java 17

stripe-java version

v26.4.0

API version

2024-06-20

Additional context

No response

Activity

  1. xavdid-stripe commented on Aug 7, 2024

    @xavdid-stripe
    Contributor

    Thanks for filing! We've copied to our internal bug tracker and will address it when we have a chance.

  2. decoursin commented on Aug 8, 2024

    @decoursin
    Author

    Great, thank you

  3. parfentjev commented on Aug 26, 2025

    @parfentjev

    I'm using stripe sdk models to build mocks and stubs.

    I observe the same issue with unit_amount_decimal and other similar fields. Moreover, some BigDecimal values want to be treated as numbers (e.g., percent_off in coupon details). This dichotomy means that I cannot simply create a type adapter to serialize all BigDecimal values as strings.

    It's a major blocker for autotests.

    Maybe there is some workaround I'm not aware of?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions