public static function create(
        int $cashRegisterId,
        string $tabUuid,
        string $description,
        int $monetaryAccountId = null,
        string $eanCode = null,
        string $avatarAttachmentUuid = null,
        array $tabAttachment = null,
        string $quantity = null,
        Amount $amount = null,
        array $customHeaders = []
    ): BunqResponseInt {
        $apiClient = new ApiClient(static::getApiContext());
        $responseRaw = $apiClient->post(
            vsprintf(
                self::ENDPOINT_URL_CREATE,
                [
                    static::determineUserId(),
                    static::determineMonetaryAccountId($monetaryAccountId),
                    $cashRegisterId,
                    $tabUuid,
                ]
            ),
            [
                self::FIELD_DESCRIPTION => $description,
                self::FIELD_EAN_CODE => $eanCode,
                self::FIELD_AVATAR_ATTACHMENT_UUID => $avatarAttachmentUuid,
                self::FIELD_TAB_ATTACHMENT => $tabAttachment,
                self::FIELD_QUANTITY => $quantity,
                self::FIELD_AMOUNT => $amount,
            ],
            $customHeaders
        );

        return BunqResponseInt::castFromBunqResponse(
            static::processForId($responseRaw)
        );
    }